X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;ds=sidebyside;f=dh_makeshlibs;h=776e66f0b8b5f229259d87cb6a5d6ce0c1e0ec03;hb=83066659cc06d097057dd08d09d674cdcdac8b52;hp=c530b4ce696aabbdf05de996a77efc840b2ce292;hpb=6a98699c62fde1e1c75b35ecc360dd675e732187;p=debhelper.git diff --git a/dh_makeshlibs b/dh_makeshlibs index c530b4c..776e66f 100755 --- a/dh_makeshlibs +++ b/dh_makeshlibs @@ -2,7 +2,7 @@ =head1 NAME -dh_makeshlibs - automatically create shlibs file +dh_makeshlibs - automatically create shlibs file and call dpkg-gensymbols =cut @@ -11,7 +11,7 @@ use Debian::Debhelper::Dh_Lib; =head1 SYNOPSIS -B [S>] [B<-m>I] [B<-V>I<[dependencies]>] [B<-n>] [B<-X>I] +B [S>] [B<-m>I] [B<-V>I<[dependencies]>] [B<-n>] [B<-X>I] [S I>] =head1 DESCRIPTION @@ -19,7 +19,11 @@ dh_makeshlibs is a debhelper program that automatically scans for shared libraries, and generates a shlibs file for the libraries it finds. It also adds a call to ldconfig in the postinst and postrm scripts (in -V3 mode and above only) to any packages which it finds shared libraries in. +V3 mode and above only) to any packages in which it finds shared libraries. + +If a L symbol file is found in debian/package.symbols +(or debian/package.symbols.arch), dpkg-gensymbols will be called +to process and install the symbols file. =head1 OPTIONS @@ -64,6 +68,15 @@ Do not modify postinst/postrm scripts. Exclude files that contain "item" anywhere in their filename or directory from being treated as shared libraries. +=item B<--add-udeb=>I + +Create an additional line for udebs in the shlibs file and use "udeb" as the +package name for udebs to depend on instead of the regular library package. + +=item B<--> I + +Pass "params" to L. + =back =head1 EXAMPLES @@ -91,7 +104,12 @@ Generates a shlibs file that looks something like: =cut -init(); +init(options => { + "m=s", => \$dh{M_PARAMS}, + "major=s" => \$dh{M_PARAMS}, + "version-info:s" => \$dh{V_FLAG}, + "add-udeb=s" => \$dh{SHLIBS_UDEB}, +}); foreach my $package (@{$dh{DOPACKAGES}}) { next if is_udeb($package); @@ -111,6 +129,7 @@ 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; if (defined($dh{EXCLUDE_FIND}) && $dh{EXCLUDE_FIND} ne '') { $exclude="! \\( $dh{EXCLUDE_FIND} \\) "; } @@ -163,11 +182,22 @@ foreach my $package (@{$dh{DOPACKAGES}}) { if (! $seen{$line}) { $seen{$line}=1; complex_doit("echo '$line' >>$tmp/DEBIAN/shlibs"); + if (defined($dh{SHLIBS_UDEB}) && $dh{SHLIBS_UDEB} ne '') { + my $udeb_deps = $deps; + $udeb_deps =~ s/\Q$package\E/$dh{SHLIBS_UDEB}/e; + $line="udeb: "."$library $major $udeb_deps"; + push @udeb_lines, $line; + } } } } close FIND; + # Write udeb: lines last. + foreach (@udeb_lines) { + complex_doit("echo '$_' >>$tmp/DEBIAN/shlibs"); + } + # New as of dh_v3. if (! compat(2) && ! $dh{NOSCRIPTS} && $need_ldconfig) { autoscript($package,"postinst","postinst-makeshlibs"); @@ -178,6 +208,20 @@ foreach my $package (@{$dh{DOPACKAGES}}) { doit("chmod",644,"$tmp/DEBIAN/shlibs"); doit("chown","0:0","$tmp/DEBIAN/shlibs"); } + + # dpkg-gensymbols files + my $symbols=pkgfile($package, "symbols"); + if (-e $symbols) { + # -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}}); + if (-s "$tmp/DEBIAN/symbols" == 0) { + doit("rm", "-f", "$tmp/DEBIAN/symbols"); + } + } } =head1 SEE ALSO