[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: