Bug#528975: [lintian] patch
Package: lintian
Version: 2.5.14
control: tag -1 + patch
Add patch
From 991afac324cb0148a071bb3cad003eded389dc70 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Bastien=20ROUCARI=C3=88S?= <roucaries.bastien@gmail.com>
Date: Wed, 31 Jul 2013 18:32:34 +0200
Subject: [PATCH 2/2] 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 | 38 +++++++++++++++++-------
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, 48 insertions(+), 11 deletions(-)
diff --git a/checks/files.desc b/checks/files.desc
index ad12175..dd26e12 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 9f969ac..70dd9c4 100644
--- a/checks/files.pm
+++ b/checks/files.pm
@@ -22,6 +22,8 @@ package Lintian::files;
use strict;
use warnings;
use autodie;
+use v5.10;
+use feature qw(switch);
use File::Basename;
@@ -561,10 +563,17 @@ foreach my $file ($info->sorted_index) {
# FHS dirs
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;
+ given($file) {
+ when(m,^usr/lib(?:64|x?32)/,) {
+ tag 'non-multiarch-lib-dir', $file;
+ }
+ default {
+ tag 'non-standard-dir-in-usr', $file;
+ }
+ }
}
# unless $file =~ m,^usr/[^/]+-linuxlibc1/,; was tied into print
@@ -666,20 +675,27 @@ foreach my $file ($info->sorted_index) {
}
# ---------------- FHS directory?
elsif ($file =~ m,^[^/]+/$,o and
- $file !~ m,^(?:bin|boot|dev|etc|home|lib(?:64|x?32)?|mnt|opt|root|run|sbin|selinux|srv|sys|tmp|usr|var)/,o) {
+ $file !~ m,^(?:bin|boot|dev|etc|home|lib|mnt|opt|root|run|sbin|selinux|srv|sys|tmp|usr|var)/,o) {
# Make an exception for the base-files package here and other similar
# packages because they install a slew of top-level directories for
# setting up the base system. (Specifically, /cdrom, /floppy,
# /initrd, and /proc are not mentioned in the FHS).
#
- # 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/,;
+ given($file) {
+ when(m,^lib(?:64|x?32)/,) {
+ tag 'non-multiarch-lib-dir', $file unless $pkg eq 'libc6';
+ }
+ # Make an exception for /emul, which is used for multiarch
+ # support in Debian at the moment.
+ when(m,^emul/,) {}
+ default {
+ tag 'non-standard-toplevel-dir', $file
+ unless $pkg eq 'base-files'
+ or $pkg eq 'hurd'
+ or $pkg eq 'hurd-udeb'
+ or $pkg =~ /^rootskel(?:-bootfloppy)?/
+ }
+ }
}
# ---------------- 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
Reply to: