From fcc792210d4e089a41b1c14ccca9f0a8a7e0f2ec Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Fri, 11 Jan 2008 13:48:10 -0500 Subject: * dh_installdocs/examples: Don't unnecessarily use the exclude code path. * Avoid infiinite recursion when told to install a directory ending with "/." (slashdot effect?). Indeed, arbitrarily complex paths can be used now, although there's really no point in using them. Closes: #253234 --- debian/changelog | 9 +++++++++ dh_install | 3 ++- dh_installdocs | 12 +++++++----- dh_installexamples | 6 ++++-- 4 files changed, 22 insertions(+), 8 deletions(-) diff --git a/debian/changelog b/debian/changelog index 4df4ad37..43bfefc6 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,12 @@ +debhelper (6.0.1) UNRELEASED; urgency=low + + * dh_installdocs/examples: Don't unnecessarily use the exclude code path. + * Avoid infiinite recursion when told to install a directory ending with + "/." (slashdot effect?). Indeed, arbitrarily complex paths can be used + now, although there's really no point in using them. Closes: #253234 + + -- Joey Hess Fri, 11 Jan 2008 13:38:10 -0500 + debhelper (6.0.0) unstable; urgency=low * dh_gencontrol: Stop passing -isp, it's the default now. Closes: #458114 diff --git a/dh_install b/dh_install index 624c88b0..47c00db2 100755 --- a/dh_install +++ b/dh_install @@ -9,6 +9,7 @@ dh_install - install files into package build directories use strict; use File::Find; use Debian::Debhelper::Dh_Lib; +use Cwd q{abs_path}; =head1 SYNOPSIS @@ -175,7 +176,7 @@ foreach my $package (@{$dh{DOPACKAGES}}) { } if (-d $src && $exclude) { - my ($dir_basename) = basename($src); + my ($dir_basename) = basename(abs_path($src)); # Pity there's no cp --exclude .. my $pwd=`pwd`; chomp $pwd; diff --git a/dh_installdocs b/dh_installdocs index e335df74..e8e6e3bc 100755 --- a/dh_installdocs +++ b/dh_installdocs @@ -8,6 +8,7 @@ dh_installdocs - install documentation into package build directories use strict; use Debian::Debhelper::Dh_Lib; +use Cwd q{abs_path}; =head1 SYNOPSIS @@ -121,7 +122,7 @@ foreach my $package (@{$dh{DOPACKAGES}}) { } if (@docs) { - my $exclude = '\\( -type f -or -type l \\)'; + my $exclude = ''; if ($dh{EXCLUDE_FIND}) { $exclude .= ' -and ! \( '.$dh{EXCLUDE_FIND}.' \)'; } @@ -133,10 +134,11 @@ foreach my $package (@{$dh{DOPACKAGES}}) { next if excludefile($doc); next if -e $doc && ! -s $doc && ! compat(4); # ignore empty files if (-d $doc && length $exclude) { - my ($dir_basename) = basename($doc); - my $pwd=`pwd`; - chomp $pwd; - complex_doit("cd '$doc/..' && find '$dir_basename' $exclude -exec cp --parents -dp {} $pwd/$tmp/usr/share/doc/$package \\;"); + my ($dir_basename) = basename(abs_path($doc)); + my $pwd=`pwd`; + chomp $pwd; + $exclude='\\( -type f -or -type l \\)'.$exclude; + complex_doit("cd '$doc/..' && find '$dir_basename' $exclude -exec cp --parents -dp {} $pwd/$tmp/usr/share/doc/$package \\;"); } else { doit("cp", "-a", $doc, "$tmp/usr/share/doc/$package"); diff --git a/dh_installexamples b/dh_installexamples index 4e0bace0..25661dfe 100755 --- a/dh_installexamples +++ b/dh_installexamples @@ -8,6 +8,7 @@ dh_installexamples - install example files into package build directories use strict; use Debian::Debhelper::Dh_Lib; +use Cwd q{abs_path}; =head1 SYNOPSIS @@ -78,7 +79,7 @@ foreach my $package (@{$dh{DOPACKAGES}}) { doit("install","-d","$tmp/usr/share/doc/$package/examples"); } - my $exclude = '-type f'; + my $exclude = ''; if ($dh{EXCLUDE_FIND}) { $exclude .= ' -and ! \( '.$dh{EXCLUDE_FIND}.' \)'; } @@ -86,9 +87,10 @@ foreach my $package (@{$dh{DOPACKAGES}}) { foreach my $example (@examples) { next if excludefile($example); if (-d $example && $exclude) { - my ($dir_basename) = basename($example); + my ($dir_basename) = basename(abs_path($example)); my $pwd=`pwd`; chomp $pwd; + $exclude = '-type f'.$exclude; complex_doit("cd '$example/..' && find '$dir_basename' $exclude -exec cp --parents -dp {} $pwd/$tmp/usr/share/doc/$package/examples \\;"); } else { -- cgit v1.2.3