]> git.donarmstrong.com Git - debhelper.git/blobdiff - dh_shlibdeps
r455: * Applied a patch from Anton Zinoviev <anton@lml.bas.bg> to pass -e
[debhelper.git] / dh_shlibdeps
index a0666b939e3e4cc5a8d9f8906cf6a75e39818263..33fd9411512457f6e57060132b3717a53f21a8a8 100755 (executable)
@@ -1,27 +1,73 @@
 #!/usr/bin/perl -w
-#
-# Find dependancies. Simple dpkg-shlibdeps wrapper.
 
+=head1 NAME
+
+dh_shlibdeps - calculate shared library dependancies
+
+=cut
+
+use strict;
 use Cwd;
 use Debian::Debhelper::Dh_Lib;
+
+=head1 SYNOPSIS
+
+  dh_shlibdeps [debhelper options] [-ldirectory] [-Xitem] [-- params]
+
+=head1 DESCRIPTION
+
+dh_shlibdeps is a debhelper program that is responsible for calculating
+shared library dependancies for packages.
+
+This program is merely a wrapper around L<dpkg-shlibdeps(1)> that calls it
+once for each package listed in the control file, passing it
+a list of ELF executables and shared libraries it has found.
+
+=head1 OPTIONS
+
+=over 4
+
+=item B<-u>I<params>, B<--dpkg-shlibdeps-params=>I<params>
+
+=item B<--> I<params>
+
+Pass "params" to L<dpkg-shlibdeps(1)>.
+
+=item B<-X>I<item>, B<--exclude=>I<item>
+
+Exclude files that contain "item" anywhere in their filename from being
+passed to dpkg-shlibdeps. This will make their dependancies be ignored.
+This may be useful in some situations, but use it with caution. This option
+may be used more than once to exclude more than one thing.
+
+=item B<-l>I<directory>
+
+Before dpkg-shlibdeps is run, LD_LIBRARY_PATH will be set to the specified
+directory. This is useful for multi-binary packages where a library
+is built in one package and another package contains binaries linked
+against said library. Relative paths will be made absolute for the
+benefit of dpkg-shlibdeps.
+
+=back
+
+=cut
+
 init();
 
-foreach $PACKAGE (@{$dh{DOPACKAGES}}) {
-       $TMP=tmpdir($PACKAGE);
-       $EXT=pkgext($PACKAGE);
+foreach my $package (@{$dh{DOPACKAGES}}) {
+       my $tmp=tmpdir($package);
+       my $ext=pkgext($package);
 
        my @filelist;
        my $ff;
 
        # Generate a list of ELF binaries in the package, ignoring any
        # we were told to exclude.
-       if (! defined($dh{EXCLUDE_FIND}) || $dh{EXCLUDE_FIND} eq '') {
-               $find_options="";
-       }
-       else {
+       my $find_options='';
+       if (defined($dh{EXCLUDE_FIND}) && $dh{EXCLUDE_FIND} ne '') {
                $find_options="! \\( $dh{EXCLUDE_FIND} \\)";
        }
-       foreach $file (split(/\n/,`find $TMP -type f \\( -perm +111 -or -name "*.so*" \\) $find_options`)) {
+       foreach my $file (split(/\n/,`find $tmp -type f \\( -perm +111 -or -name "*.so*" \\) $find_options`)) {
                # TODO: this is slow, optimize. Ie, file can run once on multiple files..
                $ff=`file "$file"`;
                if ($ff=~m/ELF/ && $ff!~/statically linked/) {
@@ -38,6 +84,18 @@ foreach $PACKAGE (@{$dh{DOPACKAGES}}) {
                        $ENV{'LD_LIBRARY_PATH'}=$dh{L_PARAMS};
                        verbose_print("LD_LIBRARY_PATH=$dh{L_PARAMS} \\");
                }
-               doit("dpkg-shlibdeps","-Tdebian/${EXT}substvars",@{$dh{U_PARAMS}},'-dDepends',@filelist);
+               doit("dpkg-shlibdeps","-Tdebian/${ext}substvars",@{$dh{U_PARAMS}},'-dDepends',@filelist);
        }
 }
+
+=head1 SEE ALSO
+
+L<debhelper(1)>
+
+This program is a part of debhelper.
+
+=head1 AUTHOR
+
+Joey Hess <joeyh@debian.org>
+
+=cut