]> git.donarmstrong.com Git - debhelper.git/blobdiff - dh_makeshlibs
r389: * Completed the fix from the last version.
[debhelper.git] / dh_makeshlibs
index c3742267eeaf78a5ecdb22bfd3ff4d74f7ec7ba9..6b3ff411af0005d137637c1f35dea7f1879ae1e0 100755 (executable)
@@ -2,19 +2,25 @@
 #
 # Automatically generate shlibs files.
 
-BEGIN { push @INC, "debian", "/usr/share/debhelper" }
-use Dh_Lib;
+use Debian::Debhelper::Dh_Lib;
 init();
 
 foreach $PACKAGE (@{$dh{DOPACKAGES}}) {
        $TMP=tmpdir($PACKAGE);
 
+       my %seen;
+
        doit("rm", "-f", "$TMP/DEBIAN/shlibs");
 
-       open (FIND, "find $TMP -type f -name '*.so.*' |");
+       open (FIND, "find $TMP -xtype f -name '*.so*' |");
        while (<FIND>) {
                chomp;
-               ($library, $major)=m#.*/(.*)\.so\.(\d*)\.?#;
+               # The second evil regexp is for db3, whose author should
+               # be shot.
+               if (m#.*/(.*)\.so\.(\d*)\.?# || m#.*/(.*)-(\S+)\.so$#) {
+                       $library = $1;
+                       $major = $2;
+               }
                if (defined($dh{M_PARAMS}) && $dh{M_PARAMS} ne '') {
                        $major=$dh{M_PARAMS};
                }
@@ -33,15 +39,20 @@ foreach $PACKAGE (@{$dh{DOPACKAGES}}) {
                                $deps="$PACKAGE (>= $dh{VERSION})";
                        }
                }
-               if (defined($library) && defined($major) && defined($deps) && 
+               if (defined($library) && defined($major) && defined($deps) &&
                    $library ne '' && $major ne '' && $deps ne '') {
-                       complex_doit("echo '$library $major $deps' >>$TMP/DEBIAN/shlibs");
+                       # Prevent duplicate lines from entering the file.
+                       my $line="$library $major $deps";
+                       if (! $seen{$line}) {
+                               $seen{$line}=1;
+                               complex_doit("echo '$line' >>$TMP/DEBIAN/shlibs");
+                       }
                }
        }
        close FIND;
 
        if (-e "$TMP/DEBIAN/shlibs") {
                doit("chmod",644,"$TMP/DEBIAN/shlibs");
-               doit("chown","root.root","$TMP/DEBIAN/shlibs");
+               doit("chown","0.0","$TMP/DEBIAN/shlibs");
        }
 }