Hi James (and thanks for X-Debbugs-Ccing me),

On Tue, Feb 16, 2016 at 01:29:09AM +0000, James Cowgill wrote:
> It seems the -X option of dh_install is either broken or its
> behaviour has changed recently. With newer versions of debhelper
> codelite fails to build with this error:
> 
> >    debian/rules override_dh_install
> > make[1]: Entering directory '/«BUILDDIR»/codelite-9.1+dfsg'
> > dh_install  -Xcodelite-lldb -XLLDBDebugger.so
> > dh_install: codelite-plugins missing files: usr/bin/codelite-lldb
> > dh_install: codelite-plugins missing files: usr/lib/codelite/LLDBDebugger.so
> > dh_install: missing files, aborting
> > debian/rules:40: recipe for target 'override_dh_install' failed
> > make[1]: *** [override_dh_install] Error 2

It is broken for a (in my opinion) quite rare case: when you list a file
in an install file *and* tell dh_install to exclude it.

A patch to fix this bug is attached.

--
Dmitry Shachnev
From cc89fa572415d7b5db2c1b0580b18c05b43f82aa Mon Sep 17 00:00:00 2001
From: Dmitry Shachnev <mity...@gmail.com>
Date: Tue, 16 Feb 2016 10:20:03 +0300
Subject: [PATCH] dh_install: Ignore lines where all globs have been
 --exclude'd.

Closes: #814856.
---
 debian/changelog | 5 +++++
 dh_install       | 6 ++++++
 2 files changed, 11 insertions(+)

diff --git a/debian/changelog b/debian/changelog
index 1b98f4a..1c047aa 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,9 +1,14 @@
 debhelper (9.20160116) UNRELEASED; urgency=medium
 
+  [ Niels Thykier ]
   * Remove dh_suidregister and related autoscripts.  No package
     (that can be built in unstable) invokes this tool.
   * dh: Do not create stamp files when running with --no-act.
 
+  [ Dmitry Shachnev ]
+  * dh_install: Ignore lines in install files where all globs have been
+    --exclude'd.  (Closes: #814856)
+
  -- Niels Thykier <ni...@thykier.net>  Sat, 16 Jan 2016 13:23:00 +0000
 
 debhelper (9.20160115) unstable; urgency=medium
diff --git a/dh_install b/dh_install
index 9288e86..9c75fea 100755
--- a/dh_install
+++ b/dh_install
@@ -173,7 +173,10 @@ foreach my $package (getpackages()) {
 		}
 
 		my @filelist;
+		my $non_excluded_globs = 0;
 		foreach my $glob (@$set) {
+			next if excludefile($glob);
+			++$non_excluded_globs;
 			my @found = glob "$srcdir/$glob";
 			if (! compat(6)) {
 				# Fall back to looking in debian/tmp.
@@ -187,6 +190,9 @@ foreach my $package (getpackages()) {
 			}
 		}
 
+		# If all globs were excluded, do nothing.
+		next unless $non_excluded_globs;
+
 		if (! compat(4)) { # check added in v5
 			if (! @filelist && ! $skip_install) {
 				warning("$package missing files: @$set");
-- 
2.7.0

Attachment: signature.asc
Description: PGP signature

Reply via email to