diff options
-rw-r--r-- | Debian/Debhelper/Dh_Getopt.pm | 7 | ||||
-rw-r--r-- | Debian/Debhelper/Dh_Lib.pm | 24 | ||||
-rw-r--r-- | debhelper.pod | 10 | ||||
-rw-r--r-- | debian/changelog | 11 |
4 files changed, 42 insertions, 10 deletions
diff --git a/Debian/Debhelper/Dh_Getopt.pm b/Debian/Debhelper/Dh_Getopt.pm index b2b9224e..d1e052af 100644 --- a/Debian/Debhelper/Dh_Getopt.pm +++ b/Debian/Debhelper/Dh_Getopt.pm @@ -63,6 +63,11 @@ sub AddExclude { my($option,$value)=@_; push @{$options{EXCLUDE}},$value; } +# Add a file to the ignore list. +sub AddIgnore { my($option,$file)=@_; + $options{IGNORE}->{$file}=1; +} + # This collects non-options values. sub NonOption { push @{$options{ARGV}}, @_; @@ -103,6 +108,8 @@ sub parseopts { "X=s" => \&AddExclude, "exclude=s" => \&AddExclude, + + "ignore=s" => \&AddIgnore, "d" => \$options{D_FLAG}, "remove-d" => \$options{D_FLAG}, diff --git a/Debian/Debhelper/Dh_Lib.pm b/Debian/Debhelper/Dh_Lib.pm index 80f56387..bd5e3ae7 100644 --- a/Debian/Debhelper/Dh_Lib.pm +++ b/Debian/Debhelper/Dh_Lib.pm @@ -320,18 +320,22 @@ sub pkgfile { $filename="$dh{NAME}.$filename"; } - if (-f "debian/$package.$filename.".buildarch()) { - return "debian/$package.$filename.".buildarch(); + my @try=("debian/$package.$filename.".buildarch(), + "debian/$package.$filename"); + if ($package eq $dh{MAINPACKAGE}) { + push @try, "debian/$filename"; } - elsif (-f "debian/$package.$filename") { - return "debian/$package.$filename"; - } - elsif ($package eq $dh{MAINPACKAGE} && -f "debian/$filename") { - return "debian/$filename"; - } - else { - return ""; + + foreach my $file (@try) { + if (-f $file && + (! $dh{IGNORE} || ! exists $dh{IGNORE}->{$file})) { + return $file; + } + } + + return ""; + } # Pass it a name of a binary package, it returns the name to prefix to files diff --git a/debhelper.pod b/debhelper.pod index 7f2fbad2..a2c7eeba 100644 --- a/debhelper.pod +++ b/debhelper.pod @@ -119,6 +119,16 @@ are not architecture independent. Do not act on the specified package even if an -a, -i, or -p option lists the package as one that should be acted on. +=item B<--ignore=>I<file> + +Ignore the specified file. This can be used if debian/ contains a debhelper +config file that a debhelper command should not act on. Note that +debian/compat, debian/control, and debian/changelog can't be ignored, but +then, there should never be a reason to ignore those files. + +For example, if upstream ships a debian/init that you don't want +dh_installinit to install, use --ignore=debian/init + =item B<-P>I<tmpdir>, B<--tmpdir=>I<tmpdir> Use "tmpdir" for package build directory. The default is debian/<package> diff --git a/debian/changelog b/debian/changelog index ce972462..e241842a 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,14 @@ +debhelper (5.0.57) UNRELEASED; urgency=low + + * Add --ignore option. This is intended to ease dealing with upstream + tarballs that contain debian directories, by allowing debhelper config + files in those directories to be ignored, since there's generally no + good way to delete them out of the upstream tarball, and they can easily + get in the way if upstream is using debian/ differently than the Debian + maintainer. + + -- Joey Hess <joeyh@debian.org> Sun, 30 Sep 2007 13:39:36 -0400 + debhelper (5.0.56) unstable; urgency=low * dh_installmodules: Since modutils is gone, stop supporting |