Updated patch attached. Error text updated to use correct target name and indent code correctly. -- .''`. Roger Leigh : :' : Debian GNU/Linux http://people.debian.org/~rleigh/ `. `' Printing on GNU/Linux? http://gutenprint.sourceforge.net/ `- GPG Public Key: 0x25BFB848 Please GPG sign your mail.
From ff35018a03699ba88d0b0ab5439551ed8de74b7e Mon Sep 17 00:00:00 2001
From: Roger Leigh <rleigh@debian.org>
Date: Fri, 26 Nov 2010 09:54:28 +0000
Subject: [PATCH] Add check for missing build-arch and build-indep targets in debian/rules
Add new check (tag debian-rules-missing-recommended-target)
Update testsuite
Signed-off-by: Roger Leigh <rleigh@debian.org>
---
checks/rules | 13 ++++++++++++
checks/rules.desc | 21 ++++++++++++++++++++
t/tests/debhelper-deprecated/debian/debian/rules | 6 +++-
.../debian/debian/rules | 6 +++-
.../debhelper-dh-clean-k-ok/debian/debian/rules | 6 +++-
t/tests/debhelper-dh-depends/debian/debian/rules | 5 +++-
.../debian/debian/rules | 6 +++-
t/tests/fields-quilt-debhelper/debian/debian/rules | 10 +++++---
t/tests/generic-empty/desc | 1 +
t/tests/generic-empty/tags | 2 +
testset/binary/debian/rules | 6 +++-
testset/debconf/debian/rules | 11 ++++++++-
testset/debug/debian/rules | 9 ++++++-
testset/etcfiles/debian/rules | 3 ++
testset/fields/debian/rules | 8 +++++-
testset/filenames/debian/rules | 9 ++++++-
testset/foo++/debian/rules | 8 +++++-
testset/libbaz/debian/rules | 10 ++++++--
testset/maintainer-scripts/debian/rules | 8 +++++-
testset/relations/debian/rules | 8 +++++-
testset/scripts/debian/rules | 9 ++++++-
testset/tags.binary | 1 +
testset/tags.etcfiles | 1 +
23 files changed, 133 insertions(+), 34 deletions(-)
diff --git a/checks/rules b/checks/rules
index 358db41..126c8e2 100644
--- a/checks/rules
+++ b/checks/rules
@@ -88,6 +88,10 @@ my @RULE_CLEAN_DEPENDS =
my %required = map { $_ => 1 }
qw(build binary binary-arch binary-indep clean);
+# The following targets are recommended per Policy.
+my %recommended = map { $_ => 1 }
+ qw(build-arch build-indep);
+
# Rules about required debhelper command ordering. Each command is put into a
# class and the tag is issued if they're called in the wrong order for the
# classes. Unknown commands won't trigger this flag.
@@ -208,6 +212,7 @@ while (<RULES>) {
my @targets = split (' ', $1);
for (@targets) {
$seen{$_}++ if $required{$_};
+ $seen{$_}++ if $recommended{$_};
}
}
@@ -225,8 +230,12 @@ while (<RULES>) {
for my $required (keys %required) {
$seen{$required}++ if $required =~ m/$pattern/;
}
+ for my $recommended (keys %recommended) {
+ $seen{$recommended}++ if $recommended =~ m/$pattern/;
+ }
} else {
$seen{$target}++ if $required{$target};
+ $seen{$target}++ if $recommended{$target};
}
if (grep { $target =~ /$_/ } @arch_rules) {
push (@arch_rules, @depends);
@@ -292,6 +301,10 @@ unless ($includes) {
tag "debian-rules-missing-required-target", $target
unless $seen{$target};
}
+ for my $target (sort keys %recommended) {
+ tag "debian-rules-missing-recommended-target", $target
+ unless $seen{$target};
+ }
}
# Make sure we have no content for binary-arch if we are arch-indep:
diff --git a/checks/rules.desc b/checks/rules.desc
index 7dd263f..55dbd98 100644
--- a/checks/rules.desc
+++ b/checks/rules.desc
@@ -35,6 +35,27 @@ Info: The <tt>debian/rules</tt> file for this package does not provide one
binary-indep, and clean must be provided, even if they don't do anything
for this package.
+Tag: debian-rules-missing-recommended-target
+Severity: normal
+Certainty: certain
+Ref: policy 4.9
+Info: The <tt>debian/rules</tt> file for this package does not provide
+ one of the recommended targets. All of build-arch and build-indep
+ should be provided, even if they don't do anything for this package.
+ If this package does not currently split building of architecture
+ dependent and independent packages, the following rules may be added
+ to fall back to the build target:
+ .
+ build-arch: build
+ build-indep: build
+ .
+ Note that the following form is recommended however:
+ .
+ build: build-arch build-indep
+ .
+ These targets will be required by policy in the future, so should be
+ added to prevent future breakage.
+
Tag: debian-rules-uses-pwd
Severity: normal
Certainty: certain
diff --git a/t/tests/debhelper-deprecated/debian/debian/rules b/t/tests/debhelper-deprecated/debian/debian/rules
index 7ec4692..f75cfb6 100755
--- a/t/tests/debhelper-deprecated/debian/debian/rules
+++ b/t/tests/debhelper-deprecated/debian/debian/rules
@@ -2,7 +2,9 @@
pkg = $(shell dh_listpackages)
-build:
+build: build-indep build-arch
+build-arch:
+build-indep:
clean:
dh_testdir
@@ -37,4 +39,4 @@ endif
dh_md5sums
dh_builddeb
-.PHONY: binary binary-arch binary-indep build clean
+.PHONY: build-arch build-indep build binary binary-arch binary-indep clean
diff --git a/t/tests/debhelper-dh-clean-k-deprecated/debian/debian/rules b/t/tests/debhelper-dh-clean-k-deprecated/debian/debian/rules
index 488e728..bd004e3 100755
--- a/t/tests/debhelper-dh-clean-k-deprecated/debian/debian/rules
+++ b/t/tests/debhelper-dh-clean-k-deprecated/debian/debian/rules
@@ -6,7 +6,9 @@
pkg = $(shell dh_listpackages)
-build:
+build: build-arch build-indep
+build-arch:
+build-indep:
clean:
dh_testdir
@@ -32,4 +34,4 @@ binary-indep:
dh_md5sums
dh_builddeb
-.PHONY: binary binary-arch binary-indep build clean
+.PHONY: build-arch build-indep build binary binary-arch binary-indep clean
diff --git a/t/tests/debhelper-dh-clean-k-ok/debian/debian/rules b/t/tests/debhelper-dh-clean-k-ok/debian/debian/rules
index 488e728..243e5c2 100755
--- a/t/tests/debhelper-dh-clean-k-ok/debian/debian/rules
+++ b/t/tests/debhelper-dh-clean-k-ok/debian/debian/rules
@@ -6,7 +6,9 @@
pkg = $(shell dh_listpackages)
-build:
+build: build-indep build-arch
+build-arch:
+build-indep:
clean:
dh_testdir
@@ -32,4 +34,4 @@ binary-indep:
dh_md5sums
dh_builddeb
-.PHONY: binary binary-arch binary-indep build clean
+.PHONY: build-arch build-indep build binary binary-arch binary-indep clean
diff --git a/t/tests/debhelper-dh-depends/debian/debian/rules b/t/tests/debhelper-dh-depends/debian/debian/rules
index 1c04f36..803501b 100755
--- a/t/tests/debhelper-dh-depends/debian/debian/rules
+++ b/t/tests/debhelper-dh-depends/debian/debian/rules
@@ -1,6 +1,9 @@
#!/usr/bin/make -f
-build: build-stamp
+build: build-arch build-indep
+build-arch:
+build-indep: build-stamp
+
build-stamp:
dh_testdir
dh_auto_configure
diff --git a/t/tests/debhelper-script-token-unneeded/debian/debian/rules b/t/tests/debhelper-script-token-unneeded/debian/debian/rules
index bbd9fb3..ee51749 100755
--- a/t/tests/debhelper-script-token-unneeded/debian/debian/rules
+++ b/t/tests/debhelper-script-token-unneeded/debian/debian/rules
@@ -6,7 +6,9 @@
pkg = $(shell dh_listpackages)
-build:
+build: build-indep build-arch
+build-indep:
+build-arch:
clean:
dh_testdir
@@ -31,4 +33,4 @@ binary-indep:
dh_md5sums
dh_builddeb
-.PHONY: binary binary-arch binary-indep build clean
+.PHONY: build-arch build-indep build binary binary-arch binary-indep clean
diff --git a/t/tests/fields-quilt-debhelper/debian/debian/rules b/t/tests/fields-quilt-debhelper/debian/debian/rules
index d893de8..da794bd 100755
--- a/t/tests/fields-quilt-debhelper/debian/debian/rules
+++ b/t/tests/fields-quilt-debhelper/debian/debian/rules
@@ -1,6 +1,8 @@
#!/usr/bin/make -f
-build:
+build: build-arch build-indep
+build-arch:
+build-indep:
dh_quilt_patch
clean:
@@ -17,8 +19,8 @@ install: build
dh_install
binary: binary-indep binary-arch
-binary-arch: build install
-binary-indep: build install
+binary-arch: build-arch install
+binary-indep: build-indep install
dh_testdir
dh_testroot
dh_installchangelogs
@@ -31,4 +33,4 @@ binary-indep: build install
dh_md5sums
dh_builddeb
-.PHONY: build clean binary-indep binary-arch binary install
+.PHONY: build-arch build-indep build clean binary-indep binary-arch binary install
diff --git a/t/tests/generic-empty/desc b/t/tests/generic-empty/desc
index a994997..9d4aef9 100644
--- a/t/tests/generic-empty/desc
+++ b/t/tests/generic-empty/desc
@@ -8,6 +8,7 @@ Test-For:
changed-by-address-missing
changelog-should-mention-nmu
debian-rules-missing-required-target
+ debian-rules-missing-recommended-target
maintainer-address-missing
maintainer-not-full-name
no-copyright-file
diff --git a/t/tests/generic-empty/tags b/t/tests/generic-empty/tags
index d6742e1..2acd3a2 100644
--- a/t/tests/generic-empty/tags
+++ b/t/tests/generic-empty/tags
@@ -9,6 +9,8 @@ E: generic-empty_1.0_arch changes: bad-urgency-in-changes-file unknown
E: generic-empty_1.0_arch changes: changed-by-address-malformed a <>
E: generic-empty_1.0_arch changes: changed-by-address-missing a <>
W: generic-empty source: changelog-should-mention-nmu
+W: generic-empty source: debian-rules-missing-recommended-target build-arch
+W: generic-empty source: debian-rules-missing-recommended-target build-indep
W: generic-empty source: maintainer-not-full-name a
W: generic-empty source: no-section-field-for-source
W: generic-empty source: source-nmu-has-incorrect-version-number 1.0
diff --git a/testset/binary/debian/rules b/testset/binary/debian/rules
index be68ea0..08dd671 100755
--- a/testset/binary/debian/rules
+++ b/testset/binary/debian/rules
@@ -4,10 +4,12 @@ tmp=debian/tmp
# This reference to $(PWD) should not cause an error but the one below
# should.
-build:
+build-arch:
make
echo $(PWD)
+build: build-arch
+
clean:
make -i clean
rm -f debian/files debian/substvars
@@ -88,4 +90,4 @@ binary-arch: build
binary: binary-arch
-.PHONY: build binary-arch binary clean
+.PHONY: build-arch build binary-arch binary clean
diff --git a/testset/debconf/debian/rules b/testset/debconf/debian/rules
index 4cedfcd..65d283b 100755
--- a/testset/debconf/debian/rules
+++ b/testset/debconf/debian/rules
@@ -6,10 +6,17 @@ deb_dir = debian/debconf
udeb_dir = debian/debconf-udeb
build_dirs = $(deb_dir) $(udeb_dir)
-build:
+build-indep:
+# There are no architecture-independent files to be built
+# by this package. If there were any they would be made
+# here.
+
+build-arch:
dh_testdir
touch build
+build: build-indep build-arch
+
clean:
dh_testdir
dh_testroot
@@ -56,4 +63,4 @@ binary-arch: build
binary: binary-indep binary-arch
-.PHONY: binary binary-arch binary-indep clean checkroot
+.PHONY: build-arch build-indep build binary binary-arch binary-indep clean checkroot
diff --git a/testset/debug/debian/rules b/testset/debug/debian/rules
index 26e777e..b4e68e2 100755
--- a/testset/debug/debian/rules
+++ b/testset/debug/debian/rules
@@ -4,7 +4,10 @@
export DH_COMPAT := 5
-build: build-stamp
+build-indep:
+
+build-arch: build-stamp
+
build-stamp:
dh_testdir
gcc -D_REENTRANT -fPIC -c libhello.c
@@ -13,6 +16,8 @@ build-stamp:
gcc -o hello hello.c -L. -lhello
touch build-stamp
+build: build-arch build-indep
+
clean:
dh_testdir
dh_testroot
@@ -86,4 +91,4 @@ binary-arch: build-stamp install
binary-indep:
binary: binary-indep binary-arch
-.PHONY: binary binary-indep binary-arch build clean install
+.PHONY: build-arch build-indep build binary binary-indep binary-arch clean install
diff --git a/testset/etcfiles/debian/rules b/testset/etcfiles/debian/rules
index 60eb147..4434415 100755
--- a/testset/etcfiles/debian/rules
+++ b/testset/etcfiles/debian/rules
@@ -9,6 +9,9 @@ clean:
rm -rf debian/only-etcfiles
build:
+build-arch:
+build-indep:
+build-indep:
binary-indep:
install -d $(tmp)/etc
install -m 644 proper $(tmp)/etc
diff --git a/testset/fields/debian/rules b/testset/fields/debian/rules
index eb139f3..2d74d8b 100755
--- a/testset/fields/debian/rules
+++ b/testset/fields/debian/rules
@@ -2,7 +2,11 @@
tmp=debian/tmp
-build:
+build-arch:
+
+build-indep:
+
+build: build-arch build-indep
binary-arch:
@@ -26,4 +30,4 @@ binary: binary-arch binary-indep
clean:
rm -rf debian/files $(tmp) debian/substvars
-.PHONY: build binary-arch binary-indep binary clean
+.PHONY: build-arch build-indep build binary-arch binary-indep binary clean
diff --git a/testset/filenames/debian/rules b/testset/filenames/debian/rules
index f77a857..3dacf6d 100755
--- a/testset/filenames/debian/rules
+++ b/testset/filenames/debian/rules
@@ -27,7 +27,12 @@ clean:
touch "files/'\\ "
touch filenames.c~
-build:
+build-arch:
+
+build-indep:
+
+build: build-arch build-indep
+
binary-arch:
@@ -232,4 +237,4 @@ binary-indep:
binary: binary-arch binary-indep
-.PHONY: build binary-arch binary-indep binary clean
+.PHONY: build-indep build-arch build binary-arch binary-indep binary clean
diff --git a/testset/foo++/debian/rules b/testset/foo++/debian/rules
index d769f80..b04bd36 100755
--- a/testset/foo++/debian/rules
+++ b/testset/foo++/debian/rules
@@ -3,7 +3,11 @@
foo=foo++
helper=foo++-helper
-build:
+build-arch:
+
+build-indep:
+
+build: build-arch build-indep
binary-arch:
@@ -29,4 +33,4 @@ binary: binary-arch binary-indep
clean:
-.PHONY: build binary-arch binary-indep binary clean
+.PHONY: build-arch build-indep build binary-arch binary-indep binary clean
diff --git a/testset/libbaz/debian/rules b/testset/libbaz/debian/rules
index 8ed2bb0..65cec1b 100755
--- a/testset/libbaz/debian/rules
+++ b/testset/libbaz/debian/rules
@@ -6,9 +6,13 @@ dev_tmp=debian/tmp-dev
LIB=libbaz1
DEV=libbaz1-dev
-build:
+build-arch:
$(MAKE)
+build-indep:
+
+build: build-arch build-indep
+
clean:
$(MAKE) clean
dh_clean -plibbaz2 -plibbaz2-dev
@@ -57,7 +61,7 @@ binary-correct:
dh_builddeb -plibbaz2 -plibbaz2-dev -plibbaz2-dbg -pia32-libbaz2
# and the incorrect one
-binary-arch: build binary-correct
+binary-arch: build-arch binary-correct
# first, the lib package
install -d $(lib_tmp)/usr/lib
# resp. no soname (check), wrong soname (check), and no-pic (check)
@@ -120,4 +124,4 @@ binary: binary-arch
# The mention of binary-indep here should be sufficient to suppress the
# warning that it's not present.
-.PHONY: build binary-arch binary-indep binary clean
+.PHONY: build-arch build-indep build binary-arch binary-indep binary clean
diff --git a/testset/maintainer-scripts/debian/rules b/testset/maintainer-scripts/debian/rules
index 98240ed..f1f4075 100755
--- a/testset/maintainer-scripts/debian/rules
+++ b/testset/maintainer-scripts/debian/rules
@@ -1,6 +1,10 @@
#!/usr/bin/make -f
-build:
+build-arch:
+
+build-indep:
+
+build: build-arch build-indep
binary-arch:
@@ -29,4 +33,4 @@ clean2:
dh_clean
clean3:
-.PHONY: build binary-arch binary-indep binary clean
+.PHONY: build-arch build-indep build binary-arch binary-indep binary clean
diff --git a/testset/relations/debian/rules b/testset/relations/debian/rules
index 722be9b..76ef605 100755
--- a/testset/relations/debian/rules
+++ b/testset/relations/debian/rules
@@ -18,7 +18,11 @@
# Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
# MA 02110-1301, USA.
-build:
+build-arch:
+
+build-indep:
+
+build: build-arch build-indep
binary-arch:
@@ -45,4 +49,4 @@ clean::
# Test requiring perl Build-Depends for manual perl invocations.
[ ! -f Build ] || $(PERL) Build distclean
-.PHONY: build binary-arch binary-indep binary clean
+.PHONY: build-arch build-indep build binary-arch binary-indep binary clean
diff --git a/testset/scripts/debian/rules b/testset/scripts/debian/rules
index 3a4ab8c..e90d227 100755
--- a/testset/scripts/debian/rules
+++ b/testset/scripts/debian/rules
@@ -2,7 +2,12 @@
tmp=debian/tmp
-build:
+build-arch:
+ echo "Hi, in an arch: all package, I am a bug!"
+
+build-indep:
+
+build: build-arch build-indep
binary-arch:
echo "Hi, in an arch: all package, I am a bug!"
@@ -99,4 +104,4 @@ binary: binary-arch binary-indep
clean:
rm -rf debian/files $(tmp) debian/substvars
-.PHONY: build binary-arch binary-indep binary clean
+.PHONY: build-arch build-indep build binary-arch binary-indep binary clean
diff --git a/testset/tags.binary b/testset/tags.binary
index c206f69..41a9ff3 100644
--- a/testset/tags.binary
+++ b/testset/tags.binary
@@ -58,6 +58,7 @@ I: binary: capitalization-error-in-description debian Debian
I: binary: desktop-entry-contains-encoding-key /usr/share/applications/goodbye.desktop:11 Encoding
I: binary: desktop-entry-contains-encoding-key /usr/share/applications/hello.desktop:13 Encoding
I: binary: no-md5sums-control-file
+W: binary source: debian-rules-missing-recommended-target build-indep
W: binary source: ancient-standards-version 3.2.1 (current is 3.9.1)
W: binary source: debian-rules-ignores-make-clean-error line 12
W: binary source: debian-rules-uses-pwd line 9
diff --git a/testset/tags.etcfiles b/testset/tags.etcfiles
index 7875f92..49bfb0f 100644
--- a/testset/tags.etcfiles
+++ b/testset/tags.etcfiles
@@ -10,6 +10,7 @@ E: etcfiles: no-copyright-file
E: etcfiles: non-etc-file-marked-as-conffile /var/lib/foo
E: only-etcfiles: extended-description-is-empty
I: etcfiles source: missing-debian-source-format
+W: etcfiles source: debian-rules-missing-recommended-target build-arch
W: etcfiles source: ancient-standards-version 3.5.0 (current is 3.9.1)
W: etcfiles: file-missing-in-md5sums etc/improper-link
W: etcfiles: file-missing-in-md5sums usr/share/doc/etcfiles/changelog
--
1.7.2.3
Attachment:
signature.asc
Description: Digital signature