]> git.donarmstrong.com Git - debhelper.git/blobdiff - dh_shlibdeps
r423: podized man page
[debhelper.git] / dh_shlibdeps
index e30c4a5b34d4693f879c758c943934b968be502d..93f9bd071bd6c34d13f670b14f0ae284f5181373 100755 (executable)
@@ -1,24 +1,42 @@
-#!/bin/sh -e
+#!/usr/bin/perl -w
 #
 # Find dependancies. Simple dpkg-shlibdeps wrapper.
 
-PATH=debian:$PATH:/usr/lib/debhelper
-. dh_lib
+use strict;
+use Cwd;
+use Debian::Debhelper::Dh_Lib;
+init();
 
-for PACKAGE in $DH_DOPACKAGES; do
-       TMP=`tmpdir $PACKAGE`
-       EXT=`pkgext $PACKAGE`
+foreach my $package (@{$dh{DOPACKAGES}}) {
+       my $tmp=tmpdir($package);
+       my $ext=pkgext($package);
 
-       # Run dpkg-shlibdeps to generate dependancies.
-       filelist=""
-       for file in `find $TMP -type f \( -perm +111 -or -name "*.so*" \) | tr "\n" " "` ; do
-               case "`file $file`" in
-                       *ELF*)
-                               filelist="$file $filelist"
-                       ;;
-               esac
-       done
-       if [ "$filelist" ]; then
-               doit "dpkg-shlibdeps -Tdebian/${EXT}substvars $DH_U_PARAMS $filelist"
-       fi
-done
+       my @filelist;
+       my $ff;
+
+       # Generate a list of ELF binaries in the package, ignoring any
+       # we were told to exclude.
+       my $find_options='';
+       if (defined($dh{EXCLUDE_FIND}) && $dh{EXCLUDE_FIND} ne '') {
+               $find_options="! \\( $dh{EXCLUDE_FIND} \\)";
+       }
+       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/) {
+                       push @filelist,$file;
+               }
+       }
+
+       if (@filelist) {
+               if ($dh{L_PARAMS}) {
+                       # Force the path absolute.
+                       unless ($dh{L_PARAMS}=~m:^/:) {
+                               $dh{L_PARAMS}=getcwd()."/$dh{L_PARAMS}";
+                       }
+                       $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);
+       }
+}