From 15397137b7f8bbb9ac31383ed1ceb5972c55b569 Mon Sep 17 00:00:00 2001
From: joeyh <joeyh>
Date: Sun, 30 Sep 2007 17:42:06 +0000
Subject: [PATCH] r2033: * 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.

---
 Debian/Debhelper/Dh_Getopt.pm |  7 +++++++
 Debian/Debhelper/Dh_Lib.pm    | 24 ++++++++++++++----------
 debhelper.pod                 | 10 ++++++++++
 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 b2b9224..d1e052a 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 80f5638..bd5e3ae 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 7f2fbad..a2c7eeb 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 ce97246..e241842 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
-- 
2.39.5