]> git.donarmstrong.com Git - debhelper.git/blobdiff - dh_perl
r424: typo
[debhelper.git] / dh_perl
diff --git a/dh_perl b/dh_perl
index 1220e083f616a940b68a98a096b98edb417a8eef..2077497c0afa6e1a3e4e8f40fc4338d6fc88c307 100755 (executable)
--- a/dh_perl
+++ b/dh_perl
@@ -3,17 +3,24 @@
 # Find dependencies on perl stuff
 # Remove .packlist files
 
+use strict;
 use Debian::Debhelper::Dh_Lib;
 init();
 
-my $ext = '';
+my $perlext = '';
 my $lib_dir = 'usr/lib/perl5';
 
 # Figure out the version of perl. If $ENV{PERL} is set, query the perl binary
 # it points to, otherwise query perl directly.
-my $version=sprintf("%.3f", $]);
+#
+# This is pretty gawd-aweful ugly, because we need "5.00[45]"
+# and "5.[6789]" to be returned depending on perl version.
+my $version;
 if (defined $ENV{PERL}) {
-       $version=`$ENV{PERL} -e 'printf "%.3f", \$]'`;
+       $version=`$ENV{PERL} -e '\$] < 5.006 ? printf "%.3f", \$] : printf "%vd", substr \$^V, 0, -1'`;
+}
+else {
+       $version=$] < 5.006 ? sprintf "%.3f", $] : sprintf "%vd", substr $^V, 0, -1;
 }
 
 # Cleaning the paths given on the command line
@@ -24,11 +31,11 @@ foreach (@ARGV) {
 
 # If -d is given, then we'll try to depend on one of the perl-5.00X-base 
 # package instead of perl-5.00X
-$ext='-base' if ($dh{'D_FLAG'});
+$perlext='-base' if ($dh{'D_FLAG'});
 
-foreach $PACKAGE (@{$dh{DOPACKAGES}}) {
-       $TMP=tmpdir($PACKAGE);
-       $EXT=pkgext($PACKAGE);
+foreach my $package (@{$dh{DOPACKAGES}}) {
+       my $tmp=tmpdir($package);
+       my $ext=pkgext($package);
 
        my ($file, $v, $arch);
        my $dep_arch = '';
@@ -38,7 +45,7 @@ foreach $PACKAGE (@{$dh{DOPACKAGES}}) {
        # Check also for alternate locations given on the command line
        my $dirs = '';
        foreach ($lib_dir, @ARGV) {
-               $dirs .= "$TMP/$_ " if (-d "$TMP/$_");
+               $dirs .= "$tmp/$_ " if (-d "$tmp/$_");
        }
        my $re = '(?:' . join('|', ($lib_dir, @ARGV)) . ')';
 
@@ -46,13 +53,13 @@ foreach $PACKAGE (@{$dh{DOPACKAGES}}) {
        if ($dirs) {
            foreach $file (split(/\n/,`find $dirs -type f \\( -name "*.pm" -or -name "*.so" \\)`)) {
                $found++;
-               if ($file =~ m<^$TMP/$re/(\d\.\d{3})/([^/]+)/>) {
+               if ($file =~ m<^$tmp/$re/(\d\.\d+)/([^/]+)/>) {
                        $v = $1;
                        $arch = $2;
                        check_module_version ($v, $version);
                        $v .= '-thread' if ($arch =~ /-thread/); 
                        $dep_arch = add_deps ($dep_arch, "perl-$v");
-               } elsif ($file =~ m<^$TMP/$re/(\d.\d{3})/>) {
+               } elsif ($file =~ m<^$tmp/$re/(\d.\d+)/>) {
                        $v = $1;
                        check_module_version ($v, $version);
                        $dep_arch = add_deps ($dep_arch, "perl-$v");
@@ -61,14 +68,14 @@ foreach $PACKAGE (@{$dh{DOPACKAGES}}) {
        }
 
        if ($found and not $dep_arch) {
-               $dep = "perl5$ext";
+               $dep = "perl5$perlext";
        } elsif ($dep_arch) {
                $dep = $dep_arch;
        }
 
        # Look for perl scripts
        my ($ff, $newdep);
-       foreach $file (split(/\n/,`find $TMP -type f \\( -name "*.pl" -or -perm +111 \\)`)) {
+       foreach $file (split(/\n/,`find $tmp -type f \\( -name "*.pl" -or -perm +111 \\)`)) {
                $ff=`file -b $file`;
                if ($ff =~ /perl/) {
                        $newdep = dep_from_script ($file);
@@ -78,7 +85,7 @@ foreach $PACKAGE (@{$dh{DOPACKAGES}}) {
 
        # Remove .packlist files and eventually some empty directories
        if (not $dh{'K_FLAG'}) {
-               foreach $file (split(/\n/,`find $TMP -type f -name .packlist`))
+               foreach $file (split(/\n/,`find $tmp -type f -name .packlist`))
                {
                        unlink($file);
                        # Get the directory name
@@ -91,14 +98,14 @@ foreach $PACKAGE (@{$dh{DOPACKAGES}}) {
 
        next unless $dep;
 
-       if (-e "debian/${EXT}substvars") {
-               open (IN, "<debian/${EXT}substvars");
+       if (-e "debian/${ext}substvars") {
+               open (IN, "<debian/${ext}substvars");
                my @lines=grep { ! /^perl:Depends=/ } <IN>;
                close IN;
-               open (OUT, ">debian/${EXT}substvars");
+               open (OUT, ">debian/${ext}substvars");
                print OUT @lines;
        } else {
-               open (OUT, ">debian/${EXT}substvars");
+               open (OUT, ">debian/${ext}substvars");
        }
        print OUT "perl:Depends=$dep\n";
        close OUT;
@@ -107,15 +114,15 @@ foreach $PACKAGE (@{$dh{DOPACKAGES}}) {
 sub add_deps {
        my ($dep, $new) = @_;
        
-        # If the $new-base package can exist then add $ext to $new
-       $new = "$new$ext" if ($new =~ m/^(?:perl5|perl-\d\.\d{3})$/);
+        # If the $new-base package can exist then add $perlext to $new
+       $new = "$new$perlext" if ($new =~ m/^(?:perl5|perl-\d\.\d+)$/);
        
        # If $new = perl5 or perl5-thread check if perl-X.XXX(-thread)?
        # is not already in the dependencies
        if ($new eq "perl5") {
-               return $dep if ($dep =~ m/(^|\s)perl-5\.\d{3}(\s|,|$)/);
+               return $dep if ($dep =~ m/(^|\s)perl-5\.\d+(\s|,|$)/);
        } elsif ($new eq "perl5-thread") {
-               return $dep if ($dep =~ m/(^|\s)perl-5\.\d{3}-thread(\s|,|$)/);
+               return $dep if ($dep =~ m/(^|\s)perl-5\.\d+-thread(\s|,|$)/);
        }
        
        if (not $dep) {
@@ -146,9 +153,9 @@ sub dep_from_script {
                        $dep = "perl5";
                } elsif ($perl eq "perl-thread") {
                        $dep = "perl5-thread";
-               } elsif ($perl =~ m/^perl-\d\.\d{3}(?:-thread)?$/) {
+               } elsif ($perl =~ m/^perl-\d\.\d+(?:-thread)?$/) {
                        $dep = $perl;
-               } elsif ($perl =~ m/^perl(\d\.\d{3})(\d\d)$/) {
+               } elsif ($perl =~ m/^perl(\d\.\d+)(\d\d)$/) {
                        # Should never happen but ...
                        $dep = "perl-$1 (=$1.$2)";
                }