Package: lintian Version: 2.5.14 refreshed with remarks from irc
Bastien
From e3f06a993d376f79710f98f099854e6c4c2b4ccb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bastien=20ROUCARI=C3=88S?= <[email protected]> Date: Wed, 31 Jul 2013 18:32:34 +0200 Subject: [PATCH] Add testing of no multiarch old lib dir /lib32 /lib64 /libx32 and /usr counterpart are obsolete. Tag it. --- checks/files.desc | 8 ++++ checks/files.pm | 47 +++++++++++++++++++----- t/tests/files-foo-in-bar/debian/debian/install | 6 +++ t/tests/files-foo-in-bar/desc | 1 + t/tests/files-foo-in-bar/tags | 6 +++ 5 files changed, 59 insertions(+), 9 deletions(-) diff --git a/checks/files.desc b/checks/files.desc index 55f94fd..e9c1d9e 100644 --- a/checks/files.desc +++ b/checks/files.desc @@ -532,6 +532,14 @@ Info: The Filesystem Hierarchy Standard forbids the installation of new files or directories in the root directory. Ref: fhs therootfilesystem +Tag: non-multiarch-lib-dir +Severity: important +Certainty: certain +Info: The following library use an old path (like /lib64 or /lib32) + instead of using multiarch path (like for instance + /lib/x86_64-linux-gnu/ or /lib/i386-linux-gnu/). +Ref: https://wiki.debian.org/Multiarch + Tag: subdir-in-bin Severity: serious Certainty: certain diff --git a/checks/files.pm b/checks/files.pm index e1e8d9f..d979090 100644 --- a/checks/files.pm +++ b/checks/files.pm @@ -631,11 +631,26 @@ sub run { elsif ( $file !~ m,^usr/(?:X11R6|X386| bin|games|include| - lib|libx?32|lib64| + lib| local|sbin|share| src|spool|tmp)/,x ) { - tag 'non-standard-dir-in-usr', $file; + if ($file =~ m,^usr/lib(?'libsuffix'64|x?32)/,) { + my $libsuffix = $+{libsuffix}; + # libc6 exception is due to FHS + # other are transitional, waiting for full implementation of multiarch + # (even ^libc6- like libc6-dev-amd64 that should be in the longer term + # libc6:amd64) + unless ($pkg eq 'libc6' or + $pkg =~ m/^($libsuffix)/ or + $pkg =~ m/^libc6-/) { + tag 'non-multiarch-lib-dir', $file; + } + } + else { + tag 'non-standard-dir-in-usr', $file; + } + } # unless $file =~ m,^usr/[^/]+-linuxlibc1/,; was tied @@ -747,7 +762,7 @@ sub run { elsif ( $file =~ m,^[^/]+/$,o and $file !~ m{\A (?: - bin|boot|dev|etc|home|lib(?:64|x?32)? + bin|boot|dev|etc|home|lib |mnt|opt|root|run|sbin|selinux|srv|sys |tmp|usr|var) / }oxsm @@ -760,12 +775,26 @@ sub run { # # Also make an exception for /emul, which is used for # multiarch support in Debian at the moment. - tag 'non-standard-toplevel-dir', $file - unless $pkg eq 'base-files' - or $pkg eq 'hurd' - or $pkg eq 'hurd-udeb' - or $pkg =~ /^rootskel(?:-bootfloppy)?/ - or $file =~ m,^emul/,; + if ($file =~ m,^lib(?'libsuffix'64|x?32)/,) { + my $libsuffix = $+{libsuffix}; + # see comments for ^usr/lib(?'libsuffix'64|x?32) + unless ($pkg eq 'libc6' or + $pkg =~ m/^$libsuffix/ or + $pkg =~ /^libc6-/) { + tag 'non-multiarch-lib-dir', $file; + } + } elsif ($file =~ m,^emul/,) { + # Make an exception for /emul, which is used for multiarch + # support in Debian at the moment. + } else { + unless ($pkg eq 'base-files' or + $pkg eq 'hurd' or + $pkg eq 'hurd-udeb' or + $pkg =~ /^rootskel(?:-bootfloppy)?/) { + tag 'non-standard-toplevel-dir', $file + } + } + } # ---------------- compatibility symlinks should not be used diff --git a/t/tests/files-foo-in-bar/debian/debian/install b/t/tests/files-foo-in-bar/debian/debian/install index 6aca91d..057c19d 100644 --- a/t/tests/files-foo-in-bar/debian/debian/install +++ b/t/tests/files-foo-in-bar/debian/debian/install @@ -3,6 +3,9 @@ bar etc/gconf/schemas/ bar etc/rc.boot bar etc/rc.d bar etc/udev/rules.d +bar lib32 +bar lib64 +bar libx32 bar mnt/foo bar run/foo bar srv/foo @@ -10,6 +13,9 @@ bar tmp/foo bar usr/bin/foo bar usr/foo bar usr/lib/debug/ +bar usr/lib32 +bar usr/lib64 +bar usr/libx32 bar usr/lib/perl/ bar usr/lib/python2.6/ bar usr/lib/sgml diff --git a/t/tests/files-foo-in-bar/desc b/t/tests/files-foo-in-bar/desc index 712bfb2..9bc1248 100644 --- a/t/tests/files-foo-in-bar/desc +++ b/t/tests/files-foo-in-bar/desc @@ -20,6 +20,7 @@ Test-For: file-in-usr-lib-site-python file-in-usr-local image-file-in-usr-lib + non-multiarch-lib-dir package-contains-xvpics-dir package-installs-file-to-usr-x11r6 package-installs-into-etc-gconf-schemas diff --git a/t/tests/files-foo-in-bar/tags b/t/tests/files-foo-in-bar/tags index b5ff6c5..467f687 100644 --- a/t/tests/files-foo-in-bar/tags +++ b/t/tests/files-foo-in-bar/tags @@ -26,6 +26,12 @@ E: files-foo-in-bar: file-in-usr-lib-site-python usr/lib/site-python/foo/ E: files-foo-in-bar: file-in-usr-lib-site-python usr/lib/site-python/foo/bar E: files-foo-in-bar: file-in-usr-local usr/local/foo/bar E: files-foo-in-bar: nested-examples-directory usr/share/doc/files-foo-in-bar/examples/examples/ +E: files-foo-in-bar: non-multiarch-lib-dir lib32/ +E: files-foo-in-bar: non-multiarch-lib-dir lib64/ +E: files-foo-in-bar: non-multiarch-lib-dir libx32/ +E: files-foo-in-bar: non-multiarch-lib-dir usr/lib32/ +E: files-foo-in-bar: non-multiarch-lib-dir usr/lib64/ +E: files-foo-in-bar: non-multiarch-lib-dir usr/libx32/ E: files-foo-in-bar: non-standard-dir-in-var var/foo/ E: files-foo-in-bar: package-contains-xvpics-dir usr/share/doc/files-foo-in-bar/.xvpics/ E: files-foo-in-bar: package-installs-file-to-usr-x11r6 usr/X11R6/ -- 1.7.10.4

