]> git.donarmstrong.com Git - debhelper.git/blobdiff - dh_perl
r543: * Patch from Andrew Suffield to make dh_perl understand #!/usr/bin/env perl
[debhelper.git] / dh_perl
diff --git a/dh_perl b/dh_perl
index ac6fa0667f0bf3de3cdd639981e860761d1e96c9..e9a001d9698e91534fda4566d362418bba20037b 100755 (executable)
--- a/dh_perl
+++ b/dh_perl
@@ -13,16 +13,16 @@ use Debian::Debhelper::Dh_Lib;
 
 =head1 SYNOPSIS
 
-  dh_perl [debhelper options] [-d] [library dirs ...]
+B<dh_perl> [S<I<debhelper options>>] [B<-d>] [S<I<library dirs ...>>]
 
 =head1 DESCRIPTION
 
 dh_perl is a debhelper program that is responsible for generating
-the perl:Depends substitutions and adding them to substvars files.
+the ${perl:Depends} substitutions and adding them to substvars files.
 
 The program will look at perl scripts and modules in your package,
 and will use this information to generate a dependency.
-The dependancy will be substituted into your package's control file
+The dependency will be substituted into your package's control file
 wherever you place the token "${perl:Depends}".
 
 =head1 OPTIONS
@@ -88,13 +88,8 @@ foreach my $package (@{$dh{DOPACKAGES}}) {
        my $tmp = tmpdir($package);
        my $ext = pkgext($package);
 
-       my @subs;
-       if (open IN, "debian/${ext}substvars")
-       {
-           @subs = grep !/^perl:Depends=/, <IN>;
-           close IN;
-       }
-
+       delsubstvar($package, "perl:Depends"); # for idempotency
+       
        # Check also for alternate locations given on the command line
        my @dirs = grep -d, map "$tmp/$_", $vendorlib, $vendorarch, @ARGV;
 
@@ -104,49 +99,39 @@ foreach my $package (@{$dh{DOPACKAGES}}) {
                return unless -f;
                $deps |= PM_MODULE if /\.pm$/;
                $deps |= XS_MODULE if /\.so$/;
-           }, @dirs if @dirs;
+       }, @dirs if @dirs;
 
        # find scripts
        find sub {
                return unless -f and (-x or /\.pl$/);
                local *F;
                return unless open F, $_;
-               if (read F, local $_, 32 and m%^#!\s*/usr/bin/perl\s%)
-               {
-                   $deps |= PROGRAM;
+               if (read F, local $_, 32 and m%^#!\s*(/usr/bin/perl|/usr/bin/env\s+perl)\s%) {
+                       $deps |= PROGRAM;
                }
-
                close F;
-           }, $tmp;
-
-       if ($deps)
-       {
-           my $perl_depends = $perl;
-           if ($deps & XS_MODULE or $dh{V_FLAG_SET})
-           {
-               ($version) = `dpkg -s $perl` =~ /^Version:\s*(\S+)/m
-                   unless $version;
-
-               $perl_depends .= " (>= $version)";
-           }
-           elsif ($deps & PM_MODULE)
-           {
-               $perl_depends .= " (>= $min_version)";
-           }
-
-           # add perlapi-<ver> for XS modules
-           $perl_depends .= ", perlapi-$Config{version}"
-               if $deps & XS_MODULE;
-
-           # don't need to depend on an un-versioned perl-base, it's
-           # essential
-           push @subs, "perl:Depends=$perl_depends\n"
-               unless $perl_depends eq 'perl-base';
+       }, $tmp;
+
+       if ($deps) {
+               my $version="";
+               if ($deps & XS_MODULE or $dh{V_FLAG_SET}) {
+                       ($version) = `dpkg -s $perl` =~ /^Version:\s*(\S+)/m
+                               unless $version;
+                       $version = ">= $version";
+               }
+               elsif ($deps & PM_MODULE) {
+                       $version = ">= $min_version";
+               }
+               
+               # no need to depend on an un-versioned perl-base -- it's
+               # essential
+               addsubstvar($package, "perl:Depends", $perl, $version)
+                       unless $perl eq 'perl-base' && ! length($version);
+
+               # add perlapi-<ver> for XS modules
+               addsubstvar($package, "perl:Depends", "perlapi-$Config{version}")
+                       if $deps & XS_MODULE;
        }
-
-       open OUT, ">debian/${ext}substvars";
-       print OUT @subs;
-       close OUT;
 }
 
 =head1 SEE ALSO