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