From 78279dbcdd52d16b14f2de5eb6958948f9dc3dcf Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Sun, 23 May 2010 19:26:41 -0400 Subject: In v8 mode, dh_makeshlibs will run dpkg-gensymbols on all shared libraries it generates shlibs files for. This means that -X can be used to exclude libraries from processing by dpkg-gensymbols. It also means that libraries in unusual locations, where dpkg-gensymbols does not itself normally look will be passed to it, a behavior change which may break some packages. Closes: #557603 --- debhelper.pod | 8 ++++++++ debian/changelog | 6 ++++++ dh_makeshlibs | 11 +++++++++-- doc/TODO | 3 ++- 4 files changed, 25 insertions(+), 3 deletions(-) diff --git a/debhelper.pod b/debhelper.pod index dae1a1a8..2f44e4d0 100644 --- a/debhelper.pod +++ b/debhelper.pod @@ -518,6 +518,14 @@ Changes from V7 are: Commands will fail rather than warning when they are passed unknown options. +=item - + +dh_makeshlibs will run dpkg-gensymbols on all shared libraries that it +generates shlibs files for. So -X can be used to exclude libraries. +Also, libraries in unusual locations that dpkg-gensymbols would not +have processed before will be passed to it, a behavior change that +can cause some packages to fail to build. + =back =back diff --git a/debian/changelog b/debian/changelog index 61890527..2a9fc669 100644 --- a/debian/changelog +++ b/debian/changelog @@ -7,6 +7,12 @@ debhelper (7.4.21) UNRELEASED; urgency=low * Add deprecation warning for dh_clean -k. * In v8 mode, do not allow directly passing unknown options to debhelper commands. (Unknown options in DH_OPTIONS still only result in warnings.) + * In v8 mode, dh_makeshlibs will run dpkg-gensymbols on all shared + libraries it generates shlibs files for. This means that -X can be + used to exclude libraries from processing by dpkg-gensymbols. It also + means that libraries in unusual locations, where dpkg-gensymbols does + not itself normally look will be passed to it, a behavior change which + may break some packages. Closes: #557603 -- Joey Hess Mon, 17 May 2010 20:01:19 -0400 diff --git a/dh_makeshlibs b/dh_makeshlibs index 03a54f95..428e5b27 100755 --- a/dh_makeshlibs +++ b/dh_makeshlibs @@ -139,13 +139,14 @@ foreach my $package (@{$dh{DOPACKAGES}}) { # because only if we can get a library name and a major number from # objdump is anything actually added. my $exclude=''; - my @udeb_lines; + my (@udeb_lines, @lib_files); if (defined($dh{EXCLUDE_FIND}) && $dh{EXCLUDE_FIND} ne '') { $exclude="! \\( $dh{EXCLUDE_FIND} \\) "; } open (FIND, "find $tmp -type f \\( -name '*.so' -or -name '*.so.*' \\) $exclude |"); while () { my ($library, $major); + push @lib_files, $_; my $objdump=`objdump -p $_`; if ($objdump=~m/\s+SONAME\s+(.+)\.so\.(.+)/) { # proper soname format @@ -222,12 +223,18 @@ foreach my $package (@{$dh{DOPACKAGES}}) { # dpkg-gensymbols files my $symbols=pkgfile($package, "symbols"); if (-e $symbols) { + my @liblist; + if (! compat(7)) { + @liblist=map { "-e$_" } @lib_files; + } # -I is used rather than using dpkg-gensymbols # own search for symbols files, since that search # is not 100% compatible with debhelper. (For example, # this supports --ignore being used.) doit("dpkg-gensymbols", "-p$package", "-I$symbols", - "-P$tmp", @{$dh{U_PARAMS}}); + "-P$tmp", + @liblist, + @{$dh{U_PARAMS}}); if (-s "$tmp/DEBIAN/symbols" == 0) { doit("rm", "-f", "$tmp/DEBIAN/symbols"); } diff --git a/doc/TODO b/doc/TODO index 89de90b8..728e38eb 100644 --- a/doc/TODO +++ b/doc/TODO @@ -7,11 +7,12 @@ v8: * make dh_install use hard links for efficiency (maybe?) * dh_installinit --restart-after-upgrade as default? * #487006: dh_installman with 3-letter codes -* apply patch in #557603 (breaks compatibility slightly; see #560120) * clean up dh's handling of options passed onto commands it calls, by implementing one of the changes discussed in #570039 (either change #3, change #4, or change #5; change #0 was done, but was an incomplete workaround) + My preference ATM is #3, require dh options come before --, + and after, options to be passed on to commands. * better package arch filtering for -N , -p (#576990) * Support DEB_BUILD_OPTIONS=debug ; maybe also support passing -g -O2 by default. See patch (and discussion of why this breaks -- cgit v1.2.3