ソースを参照

Fix wildcard support in symbol files

They were broken due to typo. Also add a test for wildcards.

Signed-off-by: Modestas Vainius <modestas@vainius.eu>
Modestas Vainius 17 年 前
コミット
fd4d99862a
共有3 個のファイルを変更した15 個の追加3 個の削除を含む
  1. 2 1
      debian/changelog
  2. 1 1
      scripts/Dpkg/Shlibs/SymbolFile.pm
  3. 12 1
      scripts/t/200_Dpkg_Shlibs.t

+ 2 - 1
debian/changelog

@@ -1,6 +1,7 @@
 dpkg (1.15.3.1) UNRELEASED; urgency=low
 dpkg (1.15.3.1) UNRELEASED; urgency=low
 
 
-  *
+  [ Modestas Vainius ]
+  * Fix wildcard support in symbol files. Closes: #536034
 
 
  -- Guillem Jover <guillem@debian.org>  Wed, 08 Jul 2009 11:09:59 +0200
  -- Guillem Jover <guillem@debian.org>  Wed, 08 Jul 2009 11:09:59 +0200
 
 

+ 1 - 1
scripts/Dpkg/Shlibs/SymbolFile.pm

@@ -336,7 +336,7 @@ sub symbol_match_wildcard {
         my $w_sym = $obj->{wildcards}{$version};
         my $w_sym = $obj->{wildcards}{$version};
         return undef unless $w_sym->arch_is_concerned($self->{arch});
         return undef unless $w_sym->arch_is_concerned($self->{arch});
         $self->{used_wildcards}++;
         $self->{used_wildcards}++;
-        return $w_sym->clone(symbol => $name . '@' . $version);
+        return $w_sym->clone(symbol => $name);
     }
     }
     return undef;
     return undef;
 }
 }

+ 12 - 1
scripts/t/200_Dpkg_Shlibs.t

@@ -1,6 +1,6 @@
 # -*- mode: cperl;-*-
 # -*- mode: cperl;-*-
 
 
-use Test::More tests => 61;
+use Test::More tests => 62;
 use IO::String;
 use IO::String;
 
 
 use strict;
 use strict;
@@ -123,6 +123,17 @@ is_deeply($sym, Dpkg::Shlibs::Symbol->new( 'symbol' => '_errno@GLIBC_2.0',
 		  'deprecated' => '2.6-1', 'depends' => '',
 		  'deprecated' => '2.6-1', 'depends' => '',
 		  'soname' => 'libc.so.6' ), 'deprecated symbol');
 		  'soname' => 'libc.so.6' ), 'deprecated symbol');
 
 
+# Wildcard test
+$sym = Dpkg::Shlibs::Symbol->new(symbol => '*@GLIBC_PRIVATE', minver => '2.3.6.wildcard');
+$sym_file_old->add_symbol('libc.so.6', $sym);
+$sym_file_old->merge_symbols($obj, "2.6-1");
+$sym = $sym_file_old->lookup_symbol('__nss_services_lookup@GLIBC_PRIVATE', ['libc.so.6']);
+is_deeply($sym, Dpkg::Shlibs::Symbol->new( 'symbol' => '__nss_services_lookup@GLIBC_PRIVATE',
+		  'minver' => '2.3.6.wildcard', 'dep_id' => 0,
+		  'deprecated' => 0, 'depends' => '',
+		  'soname' => 'libc.so.6' ), 'wildcarded symbol');
+
+# Save -> Load test
 use File::Temp;
 use File::Temp;
 
 
 my $save_file = new File::Temp;
 my $save_file = new File::Temp;