[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

[lintian] 03/03: c/files: Warn about missing intermediate directories



This is an automated email from the git hooks/post-receive script.

nthykier pushed a commit to branch master
in repository lintian.

commit 4d6bb4edd26d74f675fb5bcad853d6e05e7fca3f
Author: Niels Thykier <niels@thykier.net>
Date:   Sat May 30 10:19:15 2015 +0200

    c/files: Warn about missing intermediate directories
    
    Signed-off-by: Niels Thykier <niels@thykier.net>
---
 checks/files.desc                               |  8 ++++++++
 checks/files.pm                                 |  4 ++++
 debian/changelog                                |  2 ++
 t/debs/files-missing-intermediate-dirs/Makefile | 18 ++++++++++++++++++
 t/debs/files-missing-intermediate-dirs/desc     |  6 ++++++
 t/debs/files-missing-intermediate-dirs/tags     |  3 +++
 6 files changed, 41 insertions(+)

diff --git a/checks/files.desc b/checks/files.desc
index 8c699b5..42739c9 100644
--- a/checks/files.desc
+++ b/checks/files.desc
@@ -1628,3 +1628,11 @@ Info: The package contains a gzip-compressed file that has timestamps.
  .
  Please consider passing the "-n" flag to gzip to avoid this.
 Ref: https://wiki.debian.org/ReproducibleBuilds
+
+Tag: missing-intermediate-directory
+Severity: normal
+Certainty: certain
+Info: The package contains files in the listed directory, but does
+ not contain the actual directory itself.  Some tools do not cope
+ very well with this case. Notably Lintian prior to 2.5.32 would
+ crash on such packages.
diff --git a/checks/files.pm b/checks/files.pm
index bfcc877..5051eb9 100644
--- a/checks/files.pm
+++ b/checks/files.pm
@@ -1584,6 +1584,10 @@ sub run {
         }
         # ---------------- directories
         elsif ($file->is_dir) {
+            if ($file->faux) {
+                tag 'missing-intermediate-directory', $file;
+            }
+
             # special cases first:
             # game directory with setgid bit
             if (    $fname =~ m,^var/(?:lib/)?games/\S+,
diff --git a/debian/changelog b/debian/changelog
index 8de4544..b16cb5c 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -17,6 +17,8 @@ lintian (2.5.32) UNRELEASED; urgency=medium
     + [BR] Detect package shipping apt_preferences(5) file.
       (Closes: #786533).
     + [BR] Detect package shipping oui or iab ieee database.
+    + [NT] Add a check for packages without intermediate
+      directories.
   * checks/manpages.{desc,pm}:
     + [NT] Retire the hyphen-used-as-minus-sign tag as upstream now
       renders both "-" and "\-" as HYPHEN-MINUS.  (Closes: #785353)
diff --git a/t/debs/files-missing-intermediate-dirs/Makefile b/t/debs/files-missing-intermediate-dirs/Makefile
new file mode 100644
index 0000000..0ffacf3
--- /dev/null
+++ b/t/debs/files-missing-intermediate-dirs/Makefile
@@ -0,0 +1,18 @@
+name = files-missing-intermediate-dirs
+
+all:
+	echo '2.0' > debian-binary
+	mkdir -p usr/share/doc/$(name)
+	install -m0644 copyright changelog usr/share/doc/$(name)
+	gzip -9 -n usr/share/doc/$(name)/changelog
+	tar czf data.tar.gz usr/share/doc/$(name)
+	chown 0:0 control
+	chmod 644 control
+	md5sum usr/share/doc/$(name)/* > md5sums
+	tar czf control.tar.gz control md5sums
+	ar rc $(name).deb \
+	    debian-binary control.tar.gz data.tar.gz
+
+clean:
+	rm -f *.tar.gz *.deb debian-binary
+	rm -rf root/
diff --git a/t/debs/files-missing-intermediate-dirs/desc b/t/debs/files-missing-intermediate-dirs/desc
new file mode 100644
index 0000000..894d8cc
--- /dev/null
+++ b/t/debs/files-missing-intermediate-dirs/desc
@@ -0,0 +1,6 @@
+Testname: files-missing-intermediate-dirs
+Sequence: 6000
+Version: 1.0
+Description: Test for tarballs without intermediate dirs
+Test-For:
+ missing-intermediate-directory
diff --git a/t/debs/files-missing-intermediate-dirs/tags b/t/debs/files-missing-intermediate-dirs/tags
new file mode 100644
index 0000000..190cd7a
--- /dev/null
+++ b/t/debs/files-missing-intermediate-dirs/tags
@@ -0,0 +1,3 @@
+W: files-missing-intermediate-dirs: missing-intermediate-directory usr/
+W: files-missing-intermediate-dirs: missing-intermediate-directory usr/share/
+W: files-missing-intermediate-dirs: missing-intermediate-directory usr/share/doc/

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/lintian/lintian.git


Reply to: