]> err.no Git - dpkg/commitdiff
Speed up dpkg-shlibdeps by avoiding doing a dpkg-query for duped
authorGuillem Jover <guillem@debian.org>
Fri, 27 Apr 2007 22:59:11 +0000 (22:59 +0000)
committerGuillem Jover <guillem@debian.org>
Fri, 27 Apr 2007 22:59:11 +0000 (22:59 +0000)
libraries. Thanks to Aaron M. Ucko. Closes: #421290

ChangeLog
debian/changelog
scripts/dpkg-shlibdeps.pl

index 8eb1777c18f2dfe67d978539b2e2f9d7aba4e7b7..872eaf754ce84e87c2b4468b4ca1d35bda2a3ad5 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2007-04-28  Aaron M. Ucko  <ucko@debian.org>
+
+       * scripts/dpkg-shlibdeps.pl (unique_libfiles): New variable. Do not
+       track duped libraries already on it.
+
 2007-04-11  Guillem Jover  <guillem@debian.org>
 
        * scripts/dpkg-parsechangelog.pl: Use static and warnings. Declare
index 9023005ae331d249e3f2fe606beed67e72f75f25..3c65de5d741cc37d9c7be38b006ba0f0cca793fd 100644 (file)
@@ -62,6 +62,8 @@ dpkg (1.14.0) UNRELEASED; urgency=low
     Thanks to Martin Weis.
   * Properly sort Uploaders field in generated .dsc files.
   * Reorder a bit fields in output files.
+  * Speed up dpkg-shlibdeps by avoiding doing a dpkg-query for duped
+    libraries. Thanks to Aaron M. Ucko. Closes: #421290
 
   [ Updated dpkg translations ]
   * Romanian (Eddy Petri?or).
index a548210f99e8c5706ea77136ad1c6d7f3cc03de4..7da42b7748b056a254569f1423e1f97e9a2a36dc 100755 (executable)
@@ -178,7 +178,7 @@ while( <CONF> ) {
 }
 close CONF;
 
-my (%rpaths, %format);
+my (%rpaths, %format, %unique_libfiles);
 my (@libfiles, @libname, @libsoname, @libfield, @libexec);
 for ($i=0;$i<=$#exec;$i++) {
     if (!isbin ($exec[$i])) { next; }
@@ -195,15 +195,19 @@ for ($i=0;$i<=$#exec;$i++) {
            $format{$exec[$i]} = $1;
        } elsif (m,^\s*NEEDED\s+,) {
            if (m,^\s*NEEDED\s+((\S+)\.so\.(\S+))$,) {
+               next if exists $unique_libfiles{$1};
                push(@libname,$2); push(@libsoname,$3);
                push(@libfield,$execfield[$i]);
                push(@libfiles,$1);
                push(@libexec,$exec[$i]);
+               $unique_libfiles{$1} = 1;
            } elsif (m,^\s*NEEDED\s+((\S+)-(\S+)\.so)$,) {
+               next if exists $unique_libfiles{$1};
                push(@libname,$2); push(@libsoname,$3);
                push(@libfield,$execfield[$i]);
                push(@libfiles,$1);
                push(@libexec,$exec[$i]);
+               $unique_libfiles{$1} = 1;
            } else {
                m,^\s*NEEDED\s+(\S+)$,;
                warning(sprintf(_g("format of 'NEEDED %s' not recognized"), $1));