Here is an update patch, with better analysis of files containing only blank lines and comments, and some tests.
Attachment:
pgpNwrSVUM676.pgp
Description: PGP signature
>From 9bc1134735d5121dd7526fbafb05be0badc5665e Mon Sep 17 00:00:00 2001
From: David Bremner <bremner@debian.org>
Date: Sun, 19 Dec 2010 11:01:57 -0400
Subject: [PATCH 1/8] checks/debian-source-dir: add check for exporting from d/s/git-patches
If debian/source/git-patches exists, read debian/patches/series, and
see if the first line matches a comment emitted by the relevant gitpkg
hook.
Rationale: version 0.17 of gitpkg adds the ability to export arbitrary
ranges of git commits as quilt patches. This exporting is optional,
and this check is intended to warn a user who accidentaly fails to
enable it.
---
checks/debian-source-dir | 17 +++++++++++++++++
checks/debian-source-dir.desc | 13 +++++++++++++
2 files changed, 30 insertions(+), 0 deletions(-)
diff --git a/checks/debian-source-dir b/checks/debian-source-dir
index 91e10c8..c2f0468 100644
--- a/checks/debian-source-dir
+++ b/checks/debian-source-dir
@@ -46,6 +46,23 @@ if (-e "debfiles/source/format") {
tag "missing-debian-source-format";
}
+if (-s "debfiles/source/git-patches") {
+ open (GITPATCHES, "debfiles/source/git-patches")
+ or fail("cannot open debian/source/git-patches");
+ if (grep !/^\s*#|^\s*$/, <GITPATCHES>) {
+ if (! -r "debfiles/patches/series" ) {
+ tag "git-patches-not-exported";
+ } else {
+ open (DEBSERIES, "debfiles/patches/series")
+ or fail("cannot open debian/patches/series");
+ my $comment_line = <DEBSERIES>;
+ my $count = grep !/^\s*\#|^\s*$/, <DEBSERIES>;
+ tag "git-patches-not-exported"
+ unless ($count && ($comment_line =~ m/^\s*\#.*quilt-patches-deb-export-hook/));
+ }
+ }
+}
+
if (-d "debfiles/source") {
opendir(DEBSRC, "debfiles/source") or fail("cannot opendir debian/source/: $!");
my $file;
diff --git a/checks/debian-source-dir.desc b/checks/debian-source-dir.desc
index 199f717..b639b40 100644
--- a/checks/debian-source-dir.desc
+++ b/checks/debian-source-dir.desc
@@ -50,3 +50,16 @@ Info: The source package contains a file in debian/source/ that lintian
files. If that's not the case and if the file can be legitimately be
expected in source packages, please file a bug against lintian asking
for the file to be recognized.
+
+Tag: git-patches-not-exported
+Severity: important
+Certainty: possible
+Info: The source package contains non-empty debian/source/git-patches,
+ which indicates it was intended to have patches exported via the
+ quilt-patches-deb-export-hook of gitpkg. It seems the patches
+ were exported in this source package.
+ .
+ This tag is generated by building the source package without gitpkg (or
+ with a misconfigured gitpkg) and without manually exporting the patches.
+ See the above mentioned hook file (in /usr/share/gitpkg/hooks) for
+ information on how to manually export patches.
--
1.7.2.3
>From 7d05b18f1564b61cd063c0f8f4f9ee79f88a63b3 Mon Sep 17 00:00:00 2001 From: David Bremner <bremner@debian.org> Date: Tue, 21 Dec 2010 22:18:00 -0400 Subject: [PATCH 8/8] tests for tag git-patches-not-exported. Add a simple test for missing series file to debian-source-dir-general. A more subtle test with a trivial series file in debian-source-dir-gitpkg-series. Test for false positive in debian-sourcedir-gitpkg (trival git-patches) --- .../debian/debian/source/git-patches | 3 +++ t/tests/debian-source-dir-general/desc | 1 + t/tests/debian-source-dir-general/tags | 1 + .../debian/debian/patches/series | 11 +++++++++++ .../debian/debian/source/format | 1 + .../debian/debian/source/git-patches | 11 +++++++++++ t/tests/debian-source-dir-gitpkg-series/desc | 7 +++++++ t/tests/debian-source-dir-gitpkg-series/tags | 1 + .../debian/debian/source/formt | 1 + .../debian/debian/source/git-patches | 11 +++++++++++ t/tests/debian-source-dir-gitpkg/desc | 9 +++++++++ t/tests/debian-source-dir-gitpkg/pre_build | 2 ++ t/tests/debian-source-dir-gitpkg/tags | 2 ++ 13 files changed, 61 insertions(+), 0 deletions(-) create mode 100644 t/tests/debian-source-dir-general/debian/debian/source/git-patches create mode 100644 t/tests/debian-source-dir-gitpkg-series/debian/debian/patches/series create mode 100644 t/tests/debian-source-dir-gitpkg-series/debian/debian/source/format create mode 100644 t/tests/debian-source-dir-gitpkg-series/debian/debian/source/git-patches create mode 100644 t/tests/debian-source-dir-gitpkg-series/desc create mode 100644 t/tests/debian-source-dir-gitpkg-series/tags create mode 100644 t/tests/debian-source-dir-gitpkg-series/upstream/an_empty_file create mode 100644 t/tests/debian-source-dir-gitpkg/debian/debian/source/formt create mode 100644 t/tests/debian-source-dir-gitpkg/debian/debian/source/git-patches create mode 100644 t/tests/debian-source-dir-gitpkg/desc create mode 100755 t/tests/debian-source-dir-gitpkg/pre_build create mode 100644 t/tests/debian-source-dir-gitpkg/tags diff --git a/t/tests/debian-source-dir-general/debian/debian/source/git-patches b/t/tests/debian-source-dir-general/debian/debian/source/git-patches new file mode 100644 index 0000000..af6e5d2 --- /dev/null +++ b/t/tests/debian-source-dir-general/debian/debian/source/git-patches @@ -0,0 +1,3 @@ +upstream/$UPSTREAM_VERSION..patches/$DEB_VERSION + + diff --git a/t/tests/debian-source-dir-general/desc b/t/tests/debian-source-dir-general/desc index 2cbcf08..bde87d3 100644 --- a/t/tests/debian-source-dir-general/desc +++ b/t/tests/debian-source-dir-general/desc @@ -5,3 +5,4 @@ Description: General tests for debian/source/* checks Test-For: missing-debian-source-format unknown-file-in-debian-source + git-patches-not-exported diff --git a/t/tests/debian-source-dir-general/tags b/t/tests/debian-source-dir-general/tags index 9c16f21..b8a2dc9 100644 --- a/t/tests/debian-source-dir-general/tags +++ b/t/tests/debian-source-dir-general/tags @@ -1,2 +1,3 @@ +E: debian-source-dir-general source: git-patches-not-exported E: debian-source-dir-general source: unknown-file-in-debian-source formt I: debian-source-dir-general source: missing-debian-source-format diff --git a/t/tests/debian-source-dir-gitpkg-series/debian/debian/patches/series b/t/tests/debian-source-dir-gitpkg-series/debian/debian/patches/series new file mode 100644 index 0000000..90aa49c --- /dev/null +++ b/t/tests/debian-source-dir-gitpkg-series/debian/debian/patches/series @@ -0,0 +1,11 @@ +# some line that ends with quilt-patches-deb-export-hook +# this looks like series file + + # but really it is just a bunch + +# of blank + +# lines + +# and # + # comments diff --git a/t/tests/debian-source-dir-gitpkg-series/debian/debian/source/format b/t/tests/debian-source-dir-gitpkg-series/debian/debian/source/format new file mode 100644 index 0000000..163aaf8 --- /dev/null +++ b/t/tests/debian-source-dir-gitpkg-series/debian/debian/source/format @@ -0,0 +1 @@ +3.0 (quilt) diff --git a/t/tests/debian-source-dir-gitpkg-series/debian/debian/source/git-patches b/t/tests/debian-source-dir-gitpkg-series/debian/debian/source/git-patches new file mode 100644 index 0000000..359925d --- /dev/null +++ b/t/tests/debian-source-dir-gitpkg-series/debian/debian/source/git-patches @@ -0,0 +1,11 @@ +upstream/$UPSTREAM_VERSION..patches/$DEB_VERSION + + + # this is an indented comment + + + + # some more blank lines + + + diff --git a/t/tests/debian-source-dir-gitpkg-series/desc b/t/tests/debian-source-dir-gitpkg-series/desc new file mode 100644 index 0000000..d9d02d1 --- /dev/null +++ b/t/tests/debian-source-dir-gitpkg-series/desc @@ -0,0 +1,7 @@ +Testname: debian-source-dir-gitpkg-series +Sequence: 5999 +Version: 1.0-1 +Type: non-native +Description: Test for trivial series file in git-patches-not-exported +Test-For: + git-patches-not-exported diff --git a/t/tests/debian-source-dir-gitpkg-series/tags b/t/tests/debian-source-dir-gitpkg-series/tags new file mode 100644 index 0000000..1b39d09 --- /dev/null +++ b/t/tests/debian-source-dir-gitpkg-series/tags @@ -0,0 +1 @@ +E: debian-source-dir-gitpkg-series source: git-patches-not-exported diff --git a/t/tests/debian-source-dir-gitpkg-series/upstream/an_empty_file b/t/tests/debian-source-dir-gitpkg-series/upstream/an_empty_file new file mode 100644 index 0000000..e69de29 diff --git a/t/tests/debian-source-dir-gitpkg/debian/debian/source/formt b/t/tests/debian-source-dir-gitpkg/debian/debian/source/formt new file mode 100644 index 0000000..d3827e7 --- /dev/null +++ b/t/tests/debian-source-dir-gitpkg/debian/debian/source/formt @@ -0,0 +1 @@ +1.0 diff --git a/t/tests/debian-source-dir-gitpkg/debian/debian/source/git-patches b/t/tests/debian-source-dir-gitpkg/debian/debian/source/git-patches new file mode 100644 index 0000000..be4c03c --- /dev/null +++ b/t/tests/debian-source-dir-gitpkg/debian/debian/source/git-patches @@ -0,0 +1,11 @@ +# upstream/$UPSTREAM_VERSION..patches/$DEB_VERSION + + + # this is an indented comment + + + + # some more blank lines + + + diff --git a/t/tests/debian-source-dir-gitpkg/desc b/t/tests/debian-source-dir-gitpkg/desc new file mode 100644 index 0000000..0efda41 --- /dev/null +++ b/t/tests/debian-source-dir-gitpkg/desc @@ -0,0 +1,9 @@ +Testname: debian-source-dir-gitpkg +Sequence: 5999 +Version: 1.0 +Description: Test for false positives in git-patches-not-exported +Test-Against: + git-patches-not-exported +Test-For: + missing-debian-source-format + unknown-file-in-debian-source diff --git a/t/tests/debian-source-dir-gitpkg/pre_build b/t/tests/debian-source-dir-gitpkg/pre_build new file mode 100755 index 0000000..9442d4c --- /dev/null +++ b/t/tests/debian-source-dir-gitpkg/pre_build @@ -0,0 +1,2 @@ +#!/bin/sh +rm "$1"/debian/source/format diff --git a/t/tests/debian-source-dir-gitpkg/tags b/t/tests/debian-source-dir-gitpkg/tags new file mode 100644 index 0000000..9a94846 --- /dev/null +++ b/t/tests/debian-source-dir-gitpkg/tags @@ -0,0 +1,2 @@ +E: debian-source-dir-gitpkg source: unknown-file-in-debian-source formt +I: debian-source-dir-gitpkg source: missing-debian-source-format -- 1.7.2.3