Просмотр исходного кода

Dpkg::Shlibs: Deprecate @librarypaths package variable

Replace direct usage with accessor functions.

Addresses Variables::ProhibitPackageVars.

Warned-by: perlcritic
Guillem Jover лет назад: 13
Родитель
Сommit
901161c066
4 измененных файлов с 22 добавлено и 10 удалено
  1. 13 3
      scripts/Dpkg/Shlibs.pm
  2. 2 2
      scripts/dpkg-gensymbols.pl
  3. 2 2
      scripts/dpkg-shlibdeps.pl
  4. 5 3
      scripts/t/200_Dpkg_Shlibs.t

+ 13 - 3
scripts/Dpkg/Shlibs.pm

@@ -18,10 +18,12 @@ package Dpkg::Shlibs;
 use strict;
 use warnings;
 
-our $VERSION = '0.01';
+our $VERSION = '0.02';
 
 use Exporter qw(import);
-our @EXPORT_OK = qw(@librarypaths find_library add_library_dir);
+our @EXPORT_OK = qw(add_library_dir get_library_paths reset_library_paths
+                    find_library);
+
 
 use File::Spec;
 
@@ -65,7 +67,7 @@ if ($crossprefix) {
             "/$crossprefix/lib64", "/usr/$crossprefix/lib64";
 }
 
-our @librarypaths = (DEFAULT_LIBRARY_PATH, @crosslibrarypaths);
+my @librarypaths = (DEFAULT_LIBRARY_PATH, @crosslibrarypaths);
 
 # XXX: Deprecated. Update library paths with LD_LIBRARY_PATH
 if ($ENV{LD_LIBRARY_PATH}) {
@@ -108,6 +110,14 @@ sub add_library_dir {
     unshift @librarypaths, $dir;
 }
 
+sub get_library_paths {
+    return @librarypaths;
+}
+
+sub reset_library_paths {
+    @librarypaths = ();
+}
+
 # find_library ($soname, \@rpath, $format, $root)
 sub find_library {
     my ($lib, $rpath, $format, $root) = @_;

+ 2 - 2
scripts/dpkg-gensymbols.pl

@@ -24,7 +24,7 @@ use warnings;
 use Dpkg ();
 use Dpkg::Arch qw(get_host_arch);
 use Dpkg::Package;
-use Dpkg::Shlibs qw(@librarypaths);
+use Dpkg::Shlibs qw(get_library_paths);
 use Dpkg::Shlibs::Objdump;
 use Dpkg::Shlibs::SymbolFile;
 use Dpkg::Gettext;
@@ -180,7 +180,7 @@ foreach my $file ($input, $output, "debian/$oppackage.symbols.$host_arch",
 
 # Scan package build dir looking for libraries
 if (not scalar @files) {
-    PATH: foreach my $path (@librarypaths) {
+    PATH: foreach my $path (get_library_paths()) {
 	my $libdir = "$packagebuilddir$path";
 	$libdir =~ s{/+}{/}g;
 	lstat $libdir;

+ 2 - 2
scripts/dpkg-shlibdeps.pl

@@ -35,7 +35,7 @@ use Dpkg::Util qw(:list);
 use Dpkg::Path qw(relative_to_pkg_root guess_pkg_root_dir
 		  check_files_are_the_same get_control_path);
 use Dpkg::Version;
-use Dpkg::Shlibs qw(find_library @librarypaths);
+use Dpkg::Shlibs qw(find_library get_library_paths);
 use Dpkg::Shlibs::Objdump;
 use Dpkg::Shlibs::SymbolFile;
 use Dpkg::Arch qw(get_host_arch);
@@ -322,7 +322,7 @@ foreach my $file (keys %exec) {
     my $in_public_dir = 1;
     if (my $relname = relative_to_pkg_root($file)) {
         my $parent_dir = '/' . dirname($relname);
-        $in_public_dir = any { $parent_dir eq $_ } @librarypaths;
+        $in_public_dir = any { $parent_dir eq $_ } get_library_paths();
     } else {
         warning(_g('binaries to analyze should already be ' .
                    "installed in their package's directory"));

+ 5 - 3
scripts/t/200_Dpkg_Shlibs.t

@@ -26,8 +26,8 @@ my $tmp;
 my @tmp;
 my %tmp;
 
-my @save_paths = @Dpkg::Shlibs::librarypaths;
-@Dpkg::Shlibs::librarypaths = ();
+my @save_paths = Dpkg::Shlibs::get_library_paths();
+Dpkg::Shlibs::reset_library_paths();
 
 my $srcdir = $ENV{srcdir} || '.';
 my $datadir = $srcdir . '/t/200_Dpkg_Shlibs';
@@ -41,9 +41,11 @@ Dpkg::Shlibs::parse_ldso_conf('t/200_Dpkg_Shlibs/ld.so.conf');
 chdir($cwd);
 
 use Data::Dumper;
+
+my @librarypaths = Dpkg::Shlibs::get_library_paths();
 is_deeply([qw(/nonexistant32 /nonexistant/lib64
 	     /usr/local/lib /nonexistant/lib128 )],
-	  \@Dpkg::Shlibs::librarypaths, 'parsed library paths');
+	  \@librarypaths, 'parsed library paths');
 
 use_ok('Dpkg::Shlibs::Objdump');