# 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
# 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 = '';
# 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)) . ')';
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");
}
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);
# 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
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;
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) {
$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)";
}