[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: exim 3.22-4 dependency problem



Robert Bihlmeyer <robbe@orcus.priv.at> writes:

> So there are a couple of missing dependencies. Jeff, is the
> dpkg-shlibdeps problem rearing its head again on your end?

Since this also bit me today, I've hacked dpkg-shlibdeps 1.9.12 here
(Marcus's patch does no longer apply). My version does not spew
warnings, but may generate a spurious dependency in obscure cases[1]

The diff against the version in dpkg-dev 1.9.12 is below. I recommend
that people building packages install it, perhaps utilizing
"dpkg-divert" so upgrades will not overwrite it.


Footnotes:
[1] When searching for libfoo.so.4's package, it will not only find
the package containing /lib/libfoo.so.4, but also the package
containing /bar/bazlib/libfoo.so.4. From a quick skim of the archive
only acroread, gnat, and petsc2.1.0-dev may be affected by this.

-- 
Robbe

--- /bin/dpkg-shlibdeps.distrib	Thu Jun 21 01:42:16 2001
+++ /bin/dpkg-shlibdeps	Fri Jun 22 18:09:18 2001
@@ -94,18 +94,6 @@
 for ($i=0;$i<=$#exec;$i++) {
     if (!isbin ($exec[$i])) { next; }
     
-    # First we get an ldd output to see what libs + paths we have at out
-    # disposal.
-    my %so2path = ();
-    defined($c= open(P,"-|")) || syserr("cannot fork for ldd");
-    if (!$c) { exec("ldd","--",$exec[$i]); syserr("cannot exec ldd"); }
-    while (<P>) {
-	if (m,^\s+(\S+)\s+=>\s+(\S+)\s+\(0x.+\)?$,) {
-	    $so2path{$1} = $2;
-	}
-    }
-    close(P); $? && subprocerr("ldd on \`$exec[$i]'");
-
     # Now we get the direct deps of the program. We then check back with
     # the ldd output from above to see what our path is.
     defined($c= open(P,"-|")) || syserr("cannot fork for objdump");
@@ -116,13 +104,11 @@
 	    if (m,^\s*NEEDED\s+((\S+)\.so\.(\S+))$,) {
 		push(@libname,$2); push(@libsoname,$3);
 		push(@libf,$execf[$i]);
-		&warn("could not find path for $1") unless defined($so2path{$1});
-		push(@libfiles,$so2path{$1});
+		push(@libfiles, "lib/$1");
 	    } elsif (m,^\s*NEEDED\s+((\S+)-(\S+)\.so)$,) {
 		push(@libname,$2); push(@libsoname,$3);
 		push(@libf,$execf[$i]);
-		&warn("could not find path for $1") unless defined($so2path{$1});
-		push(@libfiles,$so2path{$1});
+		push(@libfiles, "lib/$1");
 	    } else {
 		m,^\s*NEEDED\s+(\S+)$,;
 		&warn("format of $1 not recognized");
@@ -196,7 +182,9 @@
            &warn("diversions involved - output may be incorrect");
            print(STDERR " $_\n") || syserr("write diversion info to stderr");
        } elsif (m=^(\S+(, \S+)*): (\S+)$=) {
-           push @{$pathpackages{$+}}, split(/, /, $1);
+	   my ($pkgs, $lib) = ($1, $+);
+	   $lib =~ s|.*/lib/|lib/|;
+           push @{$pathpackages{$lib}}, split(/, /, $pkgs);
        } else {
            &warn("unknown output from dpkg --search: \`$_'");
        }

Attachment: signature.ng
Description: PGP signature


Reply to: