Robert Bihlmeyer <[EMAIL PROTECTED]> 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: \`$_'");
}
signature.ng
Description: PGP signature

