dpkg-shlibdeps: do not fail immediatly when a library is not found
authorChris Baines <cbaines8@gmail.com>
Thu, 9 Dec 2010 14:58:48 +0000 (15:58 +0100)
committerRaphaël Hertzog <hertzog@debian.org>
Thu, 9 Dec 2010 14:58:48 +0000 (15:58 +0100)
Instead continue and fail after all problems have been reported.

debian/changelog
scripts/dpkg-shlibdeps.pl

index 752ccec..fd730bb 100644 (file)
@@ -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).
index 91ea4e5..dc2c654 100755 (executable)
@@ -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) {