Parcourir la source

dpkg-shlibdeps: do not fail immediatly when a library is not found

Instead continue and fail after all problems have been reported.
Chris Baines il y a 15 ans
Parent
commit
4105379e25
2 fichiers modifiés avec 15 ajouts et 1 suppressions
  1. 3 0
      debian/changelog
  2. 12 1
      scripts/dpkg-shlibdeps.pl

+ 3 - 0
debian/changelog

@@ -22,6 +22,9 @@ dpkg (1.16.0) UNRELEASED; urgency=low
     - it documents the VCS-* fields too. Closes: #483119
     Thanks to Oxan van Leeuwen <oxan@oxanvanleeuwen.nl> who wrote it
     as part of the Google Code In program.
+  * Enhance dpkg-shlibdeps to not fail immediatly when a library is not found.
+    Instead continue and fail after all problems have been reported. Thanks
+    to Chris Baines <cbaines8@gmail.com> for the patch. Closes: #596841
 
   [ Updated programs translations ]
   * Portuguese (Miguel Figueiredo).

+ 12 - 1
scripts/dpkg-shlibdeps.pl

@@ -150,6 +150,9 @@ my %symfile_cache;
 my %objdump_cache;
 my %symfile_has_soname_cache;
 
+# Used to count errors due to missing libraries
+my $error_count = 0;
+
 my $cur_field;
 foreach my $file (keys %exec) {
     $cur_field = $exec{$file};
@@ -173,7 +176,8 @@ foreach my $file (keys %exec) {
 			 "that do not have any shlibs or symbols file.\nTo help dpkg-shlibdeps " .
 			 "find private libraries, you might need to set LD_LIBRARY_PATH.");
 	    if (scalar(split_soname($soname))) {
-		error($msg, $soname, $file, $obj->{format}, join(":", @{$obj->{RPATH}}));
+		errormsg($msg, $soname, $file, $obj->{format}, join(":", @{$obj->{RPATH}}));
+		$error_count++;
 	    } else {
 		warning($msg, $soname, $file, $obj->{format}, join(":", @{$obj->{RPATH}}));
 	    }
@@ -423,6 +427,13 @@ foreach my $soname (keys %global_soname_needed) {
     }
 }
 
+# Quit now if any missing libraries
+if ($error_count >= 1) {
+    error(P_("Cannot continue due to the error above.",
+             "Cannot continue due to the errors listed above.",
+             $error_count));
+}
+
 # Open substvars file
 my $fh;
 if ($stdout) {