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

Bug#674469: Patch with remark from irc



Package: lintian
Version: 2.5.14

Refreshed
From a82b69f658e02b0eb15c59e674154426c3f2127c Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Bastien=20ROUCARI=C3=88S?= <roucaries.bastien@gmail.com>
Date: Wed, 14 Aug 2013 15:16:37 +0200
Subject: [PATCH 1/2] Prepare detection of pkgconfig with multiarch problems

* Move data/binaries/multiarch-dirs -> data/common/multiarch-dirs
* Add an hash value to $MULTIARCH_DIRS
---
 checks/binaries.pm           |   19 ++-
 data/binaries/multiarch-dirs |  290 ------------------------------------------
 data/common/multiarch-dirs   |  290 ++++++++++++++++++++++++++++++++++++++++++
 private/refresh-archs        |    2 +-
 4 files changed, 304 insertions(+), 297 deletions(-)
 delete mode 100644 data/binaries/multiarch-dirs
 create mode 100644 data/common/multiarch-dirs

diff --git a/checks/binaries.pm b/checks/binaries.pm
index 2f017eb..c6005c4 100644
--- a/checks/binaries.pm
+++ b/checks/binaries.pm
@@ -79,7 +79,10 @@ our $EMBEDDED_LIBRARIES
   = Lintian::Data->new('binaries/embedded-libs', qr/\s*+\|\|/,
     \&_embedded_libs);
 
-our $MULTIARCH_DIRS = Lintian::Data->new('binaries/multiarch-dirs', '\s+');
+our $MULTIARCH_DIRS
+  = Lintian::Data->new('common/multiarch-dirs', qr/\s++/,
+    sub { return { 'dir' => $_[1] , 'match' => qr/\Q$_[1]\E/ } });
+
 
 sub _split_hash {
     my (undef, $val) = @_;
@@ -179,12 +182,16 @@ sub run {
     # This avoids false positives with plugins like Apache modules,
     # which may have their own SONAMEs but which don't matter for the
     # purposes of this check.  Also filter out nsswitch modules
-    $madir = $MULTIARCH_DIRS->value($arch);
+    if (defined($MULTIARCH_DIRS->value($arch))) {
+        $madir = $MULTIARCH_DIRS->value($arch)->{'dir'};
+    } else {
+        # In the case that the architecture is "all" or unknown (or we do
+        # not know the multi-arch path for a known architecture) , we assume
+        # it the multi-arch path to be this (hopefully!) non-existent path to
+        # avoid warnings about uninitialized variables.
+        $madir = './!non-existant-path!/./';
+    }
 
-    # In the case that the architecture is "all" or unknown (or we do
-    # not know the multi-arch path for a known architecture) , we assume
-    # it the multi-arch path to be this (hopefully!) non-existent path to
-    # avoid warnings about uninitialized variables.
     $madir = './!non-existant-path!/./' unless defined $madir;
 
     $gnu_triplet_re = quotemeta $madir;
diff --git a/data/binaries/multiarch-dirs b/data/binaries/multiarch-dirs
deleted file mode 100644
index d53d9cc..0000000
--- a/data/binaries/multiarch-dirs
+++ /dev/null
@@ -1,290 +0,0 @@
-# List of "Multiarch dirs" relationships as provided by
-# dpkg-architecture - arch -> dir mapping
-# Last updated: 2012-06-14
-# With: Debian dpkg-architecture version 1.16.4.2.
-# This file was auto-generated by private/refresh-archs
-
-alpha alpha-linux-gnu
-amd64 x86_64-linux-gnu
-arm arm-linux-gnu
-arm64 aarch64-linux-gnu
-armeb armeb-linux-gnu
-armel arm-linux-gnueabi
-armhf arm-linux-gnueabihf
-avr32 avr32-linux-gnu
-darwin-alpha alpha-darwin
-darwin-amd64 x86_64-darwin
-darwin-arm arm-darwin
-darwin-arm64 aarch64-darwin
-darwin-armeb armeb-darwin
-darwin-avr32 avr32-darwin
-darwin-hppa hppa-darwin
-darwin-i386 i386-darwin
-darwin-ia64 ia64-darwin
-darwin-m32r m32r-darwin
-darwin-m68k m68k-darwin
-darwin-mips mips-darwin
-darwin-mipsel mipsel-darwin
-darwin-powerpc powerpc-darwin
-darwin-ppc64 powerpc64-darwin
-darwin-s390 s390-darwin
-darwin-s390x s390x-darwin
-darwin-sh3 sh3-darwin
-darwin-sh3eb sh3eb-darwin
-darwin-sh4 sh4-darwin
-darwin-sh4eb sh4eb-darwin
-darwin-sparc sparc-darwin
-darwin-sparc64 sparc64-darwin
-freebsd-alpha alpha-freebsd
-freebsd-amd64 x86_64-freebsd
-freebsd-arm arm-freebsd
-freebsd-arm64 aarch64-freebsd
-freebsd-armeb armeb-freebsd
-freebsd-avr32 avr32-freebsd
-freebsd-hppa hppa-freebsd
-freebsd-i386 i386-freebsd
-freebsd-ia64 ia64-freebsd
-freebsd-m32r m32r-freebsd
-freebsd-m68k m68k-freebsd
-freebsd-mips mips-freebsd
-freebsd-mipsel mipsel-freebsd
-freebsd-powerpc powerpc-freebsd
-freebsd-ppc64 powerpc64-freebsd
-freebsd-s390 s390-freebsd
-freebsd-s390x s390x-freebsd
-freebsd-sh3 sh3-freebsd
-freebsd-sh3eb sh3eb-freebsd
-freebsd-sh4 sh4-freebsd
-freebsd-sh4eb sh4eb-freebsd
-freebsd-sparc sparc-freebsd
-freebsd-sparc64 sparc64-freebsd
-hppa hppa-linux-gnu
-hurd-alpha alpha-gnu
-hurd-amd64 x86_64-gnu
-hurd-arm arm-gnu
-hurd-arm64 aarch64-gnu
-hurd-armeb armeb-gnu
-hurd-avr32 avr32-gnu
-hurd-hppa hppa-gnu
-hurd-i386 i386-gnu
-hurd-ia64 ia64-gnu
-hurd-m32r m32r-gnu
-hurd-m68k m68k-gnu
-hurd-mips mips-gnu
-hurd-mipsel mipsel-gnu
-hurd-powerpc powerpc-gnu
-hurd-ppc64 powerpc64-gnu
-hurd-s390 s390-gnu
-hurd-s390x s390x-gnu
-hurd-sh3 sh3-gnu
-hurd-sh3eb sh3eb-gnu
-hurd-sh4 sh4-gnu
-hurd-sh4eb sh4eb-gnu
-hurd-sparc sparc-gnu
-hurd-sparc64 sparc64-gnu
-i386 i386-linux-gnu
-ia64 ia64-linux-gnu
-kfreebsd-alpha alpha-kfreebsd-gnu
-kfreebsd-amd64 x86_64-kfreebsd-gnu
-kfreebsd-arm arm-kfreebsd-gnu
-kfreebsd-arm64 aarch64-kfreebsd-gnu
-kfreebsd-armeb armeb-kfreebsd-gnu
-kfreebsd-avr32 avr32-kfreebsd-gnu
-kfreebsd-hppa hppa-kfreebsd-gnu
-kfreebsd-i386 i386-kfreebsd-gnu
-kfreebsd-ia64 ia64-kfreebsd-gnu
-kfreebsd-m32r m32r-kfreebsd-gnu
-kfreebsd-m68k m68k-kfreebsd-gnu
-kfreebsd-mips mips-kfreebsd-gnu
-kfreebsd-mipsel mipsel-kfreebsd-gnu
-kfreebsd-powerpc powerpc-kfreebsd-gnu
-kfreebsd-ppc64 powerpc64-kfreebsd-gnu
-kfreebsd-s390 s390-kfreebsd-gnu
-kfreebsd-s390x s390x-kfreebsd-gnu
-kfreebsd-sh3 sh3-kfreebsd-gnu
-kfreebsd-sh3eb sh3eb-kfreebsd-gnu
-kfreebsd-sh4 sh4-kfreebsd-gnu
-kfreebsd-sh4eb sh4eb-kfreebsd-gnu
-kfreebsd-sparc sparc-kfreebsd-gnu
-kfreebsd-sparc64 sparc64-kfreebsd-gnu
-knetbsd-alpha alpha-knetbsd-gnu
-knetbsd-amd64 x86_64-knetbsd-gnu
-knetbsd-arm arm-knetbsd-gnu
-knetbsd-arm64 aarch64-knetbsd-gnu
-knetbsd-armeb armeb-knetbsd-gnu
-knetbsd-avr32 avr32-knetbsd-gnu
-knetbsd-hppa hppa-knetbsd-gnu
-knetbsd-i386 i386-knetbsd-gnu
-knetbsd-ia64 ia64-knetbsd-gnu
-knetbsd-m32r m32r-knetbsd-gnu
-knetbsd-m68k m68k-knetbsd-gnu
-knetbsd-mips mips-knetbsd-gnu
-knetbsd-mipsel mipsel-knetbsd-gnu
-knetbsd-powerpc powerpc-knetbsd-gnu
-knetbsd-ppc64 powerpc64-knetbsd-gnu
-knetbsd-s390 s390-knetbsd-gnu
-knetbsd-s390x s390x-knetbsd-gnu
-knetbsd-sh3 sh3-knetbsd-gnu
-knetbsd-sh3eb sh3eb-knetbsd-gnu
-knetbsd-sh4 sh4-knetbsd-gnu
-knetbsd-sh4eb sh4eb-knetbsd-gnu
-knetbsd-sparc sparc-knetbsd-gnu
-knetbsd-sparc64 sparc64-knetbsd-gnu
-kopensolaris-alpha alpha-kopensolaris-gnu
-kopensolaris-amd64 x86_64-kopensolaris-gnu
-kopensolaris-arm arm-kopensolaris-gnu
-kopensolaris-arm64 aarch64-kopensolaris-gnu
-kopensolaris-armeb armeb-kopensolaris-gnu
-kopensolaris-avr32 avr32-kopensolaris-gnu
-kopensolaris-hppa hppa-kopensolaris-gnu
-kopensolaris-i386 i386-kopensolaris-gnu
-kopensolaris-ia64 ia64-kopensolaris-gnu
-kopensolaris-m32r m32r-kopensolaris-gnu
-kopensolaris-m68k m68k-kopensolaris-gnu
-kopensolaris-mips mips-kopensolaris-gnu
-kopensolaris-mipsel mipsel-kopensolaris-gnu
-kopensolaris-powerpc powerpc-kopensolaris-gnu
-kopensolaris-ppc64 powerpc64-kopensolaris-gnu
-kopensolaris-s390 s390-kopensolaris-gnu
-kopensolaris-s390x s390x-kopensolaris-gnu
-kopensolaris-sh3 sh3-kopensolaris-gnu
-kopensolaris-sh3eb sh3eb-kopensolaris-gnu
-kopensolaris-sh4 sh4-kopensolaris-gnu
-kopensolaris-sh4eb sh4eb-kopensolaris-gnu
-kopensolaris-sparc sparc-kopensolaris-gnu
-kopensolaris-sparc64 sparc64-kopensolaris-gnu
-lpia i386-linux-gnulp
-m32r m32r-linux-gnu
-m68k m68k-linux-gnu
-mint-m68k m68k-mint
-mips mips-linux-gnu
-mipsel mipsel-linux-gnu
-netbsd-alpha alpha-netbsd
-netbsd-amd64 x86_64-netbsd
-netbsd-arm arm-netbsd
-netbsd-arm64 aarch64-netbsd
-netbsd-armeb armeb-netbsd
-netbsd-avr32 avr32-netbsd
-netbsd-hppa hppa-netbsd
-netbsd-i386 i386-netbsd
-netbsd-ia64 ia64-netbsd
-netbsd-m32r m32r-netbsd
-netbsd-m68k m68k-netbsd
-netbsd-mips mips-netbsd
-netbsd-mipsel mipsel-netbsd
-netbsd-powerpc powerpc-netbsd
-netbsd-ppc64 powerpc64-netbsd
-netbsd-s390 s390-netbsd
-netbsd-s390x s390x-netbsd
-netbsd-sh3 sh3-netbsd
-netbsd-sh3eb sh3eb-netbsd
-netbsd-sh4 sh4-netbsd
-netbsd-sh4eb sh4eb-netbsd
-netbsd-sparc sparc-netbsd
-netbsd-sparc64 sparc64-netbsd
-openbsd-alpha alpha-openbsd
-openbsd-amd64 x86_64-openbsd
-openbsd-arm arm-openbsd
-openbsd-arm64 aarch64-openbsd
-openbsd-armeb armeb-openbsd
-openbsd-avr32 avr32-openbsd
-openbsd-hppa hppa-openbsd
-openbsd-i386 i386-openbsd
-openbsd-ia64 ia64-openbsd
-openbsd-m32r m32r-openbsd
-openbsd-m68k m68k-openbsd
-openbsd-mips mips-openbsd
-openbsd-mipsel mipsel-openbsd
-openbsd-powerpc powerpc-openbsd
-openbsd-ppc64 powerpc64-openbsd
-openbsd-s390 s390-openbsd
-openbsd-s390x s390x-openbsd
-openbsd-sh3 sh3-openbsd
-openbsd-sh3eb sh3eb-openbsd
-openbsd-sh4 sh4-openbsd
-openbsd-sh4eb sh4eb-openbsd
-openbsd-sparc sparc-openbsd
-openbsd-sparc64 sparc64-openbsd
-powerpc powerpc-linux-gnu
-powerpcspe powerpc-linux-gnuspe
-ppc64 powerpc64-linux-gnu
-s390 s390-linux-gnu
-s390x s390x-linux-gnu
-sh3 sh3-linux-gnu
-sh3eb sh3eb-linux-gnu
-sh4 sh4-linux-gnu
-sh4eb sh4eb-linux-gnu
-solaris-alpha alpha-solaris
-solaris-amd64 x86_64-solaris
-solaris-arm arm-solaris
-solaris-arm64 aarch64-solaris
-solaris-armeb armeb-solaris
-solaris-avr32 avr32-solaris
-solaris-hppa hppa-solaris
-solaris-i386 i386-solaris
-solaris-ia64 ia64-solaris
-solaris-m32r m32r-solaris
-solaris-m68k m68k-solaris
-solaris-mips mips-solaris
-solaris-mipsel mipsel-solaris
-solaris-powerpc powerpc-solaris
-solaris-ppc64 powerpc64-solaris
-solaris-s390 s390-solaris
-solaris-s390x s390x-solaris
-solaris-sh3 sh3-solaris
-solaris-sh3eb sh3eb-solaris
-solaris-sh4 sh4-solaris
-solaris-sh4eb sh4eb-solaris
-solaris-sparc sparc-solaris
-solaris-sparc64 sparc64-solaris
-sparc sparc-linux-gnu
-sparc64 sparc64-linux-gnu
-uclibc-linux-alpha alpha-linux-uclibc
-uclibc-linux-amd64 x86_64-linux-uclibc
-uclibc-linux-arm arm-linux-uclibc
-uclibc-linux-arm64 aarch64-linux-uclibc
-uclibc-linux-armeb armeb-linux-uclibc
-uclibc-linux-armel arm-linux-uclibceabi
-uclibc-linux-avr32 avr32-linux-uclibc
-uclibc-linux-hppa hppa-linux-uclibc
-uclibc-linux-i386 i386-linux-uclibc
-uclibc-linux-ia64 ia64-linux-uclibc
-uclibc-linux-m32r m32r-linux-uclibc
-uclibc-linux-m68k m68k-linux-uclibc
-uclibc-linux-mips mips-linux-uclibc
-uclibc-linux-mipsel mipsel-linux-uclibc
-uclibc-linux-powerpc powerpc-linux-uclibc
-uclibc-linux-ppc64 powerpc64-linux-uclibc
-uclibc-linux-s390 s390-linux-uclibc
-uclibc-linux-s390x s390x-linux-uclibc
-uclibc-linux-sh3 sh3-linux-uclibc
-uclibc-linux-sh3eb sh3eb-linux-uclibc
-uclibc-linux-sh4 sh4-linux-uclibc
-uclibc-linux-sh4eb sh4eb-linux-uclibc
-uclibc-linux-sparc sparc-linux-uclibc
-uclibc-linux-sparc64 sparc64-linux-uclibc
-uclinux-alpha alpha-uclinux-uclibc
-uclinux-amd64 x86_64-uclinux-uclibc
-uclinux-arm arm-uclinux-uclibc
-uclinux-arm64 aarch64-uclinux-uclibc
-uclinux-armeb armeb-uclinux-uclibc
-uclinux-armel arm-uclinux-uclibceabi
-uclinux-avr32 avr32-uclinux-uclibc
-uclinux-hppa hppa-uclinux-uclibc
-uclinux-i386 i386-uclinux-uclibc
-uclinux-ia64 ia64-uclinux-uclibc
-uclinux-m32r m32r-uclinux-uclibc
-uclinux-m68k m68k-uclinux-uclibc
-uclinux-mips mips-uclinux-uclibc
-uclinux-mipsel mipsel-uclinux-uclibc
-uclinux-powerpc powerpc-uclinux-uclibc
-uclinux-ppc64 powerpc64-uclinux-uclibc
-uclinux-s390 s390-uclinux-uclibc
-uclinux-s390x s390x-uclinux-uclibc
-uclinux-sh3 sh3-uclinux-uclibc
-uclinux-sh3eb sh3eb-uclinux-uclibc
-uclinux-sh4 sh4-uclinux-uclibc
-uclinux-sh4eb sh4eb-uclinux-uclibc
-uclinux-sparc sparc-uclinux-uclibc
-uclinux-sparc64 sparc64-uclinux-uclibc
-x32 x86_64-linux-gnux32
diff --git a/data/common/multiarch-dirs b/data/common/multiarch-dirs
new file mode 100644
index 0000000..d53d9cc
--- /dev/null
+++ b/data/common/multiarch-dirs
@@ -0,0 +1,290 @@
+# List of "Multiarch dirs" relationships as provided by
+# dpkg-architecture - arch -> dir mapping
+# Last updated: 2012-06-14
+# With: Debian dpkg-architecture version 1.16.4.2.
+# This file was auto-generated by private/refresh-archs
+
+alpha alpha-linux-gnu
+amd64 x86_64-linux-gnu
+arm arm-linux-gnu
+arm64 aarch64-linux-gnu
+armeb armeb-linux-gnu
+armel arm-linux-gnueabi
+armhf arm-linux-gnueabihf
+avr32 avr32-linux-gnu
+darwin-alpha alpha-darwin
+darwin-amd64 x86_64-darwin
+darwin-arm arm-darwin
+darwin-arm64 aarch64-darwin
+darwin-armeb armeb-darwin
+darwin-avr32 avr32-darwin
+darwin-hppa hppa-darwin
+darwin-i386 i386-darwin
+darwin-ia64 ia64-darwin
+darwin-m32r m32r-darwin
+darwin-m68k m68k-darwin
+darwin-mips mips-darwin
+darwin-mipsel mipsel-darwin
+darwin-powerpc powerpc-darwin
+darwin-ppc64 powerpc64-darwin
+darwin-s390 s390-darwin
+darwin-s390x s390x-darwin
+darwin-sh3 sh3-darwin
+darwin-sh3eb sh3eb-darwin
+darwin-sh4 sh4-darwin
+darwin-sh4eb sh4eb-darwin
+darwin-sparc sparc-darwin
+darwin-sparc64 sparc64-darwin
+freebsd-alpha alpha-freebsd
+freebsd-amd64 x86_64-freebsd
+freebsd-arm arm-freebsd
+freebsd-arm64 aarch64-freebsd
+freebsd-armeb armeb-freebsd
+freebsd-avr32 avr32-freebsd
+freebsd-hppa hppa-freebsd
+freebsd-i386 i386-freebsd
+freebsd-ia64 ia64-freebsd
+freebsd-m32r m32r-freebsd
+freebsd-m68k m68k-freebsd
+freebsd-mips mips-freebsd
+freebsd-mipsel mipsel-freebsd
+freebsd-powerpc powerpc-freebsd
+freebsd-ppc64 powerpc64-freebsd
+freebsd-s390 s390-freebsd
+freebsd-s390x s390x-freebsd
+freebsd-sh3 sh3-freebsd
+freebsd-sh3eb sh3eb-freebsd
+freebsd-sh4 sh4-freebsd
+freebsd-sh4eb sh4eb-freebsd
+freebsd-sparc sparc-freebsd
+freebsd-sparc64 sparc64-freebsd
+hppa hppa-linux-gnu
+hurd-alpha alpha-gnu
+hurd-amd64 x86_64-gnu
+hurd-arm arm-gnu
+hurd-arm64 aarch64-gnu
+hurd-armeb armeb-gnu
+hurd-avr32 avr32-gnu
+hurd-hppa hppa-gnu
+hurd-i386 i386-gnu
+hurd-ia64 ia64-gnu
+hurd-m32r m32r-gnu
+hurd-m68k m68k-gnu
+hurd-mips mips-gnu
+hurd-mipsel mipsel-gnu
+hurd-powerpc powerpc-gnu
+hurd-ppc64 powerpc64-gnu
+hurd-s390 s390-gnu
+hurd-s390x s390x-gnu
+hurd-sh3 sh3-gnu
+hurd-sh3eb sh3eb-gnu
+hurd-sh4 sh4-gnu
+hurd-sh4eb sh4eb-gnu
+hurd-sparc sparc-gnu
+hurd-sparc64 sparc64-gnu
+i386 i386-linux-gnu
+ia64 ia64-linux-gnu
+kfreebsd-alpha alpha-kfreebsd-gnu
+kfreebsd-amd64 x86_64-kfreebsd-gnu
+kfreebsd-arm arm-kfreebsd-gnu
+kfreebsd-arm64 aarch64-kfreebsd-gnu
+kfreebsd-armeb armeb-kfreebsd-gnu
+kfreebsd-avr32 avr32-kfreebsd-gnu
+kfreebsd-hppa hppa-kfreebsd-gnu
+kfreebsd-i386 i386-kfreebsd-gnu
+kfreebsd-ia64 ia64-kfreebsd-gnu
+kfreebsd-m32r m32r-kfreebsd-gnu
+kfreebsd-m68k m68k-kfreebsd-gnu
+kfreebsd-mips mips-kfreebsd-gnu
+kfreebsd-mipsel mipsel-kfreebsd-gnu
+kfreebsd-powerpc powerpc-kfreebsd-gnu
+kfreebsd-ppc64 powerpc64-kfreebsd-gnu
+kfreebsd-s390 s390-kfreebsd-gnu
+kfreebsd-s390x s390x-kfreebsd-gnu
+kfreebsd-sh3 sh3-kfreebsd-gnu
+kfreebsd-sh3eb sh3eb-kfreebsd-gnu
+kfreebsd-sh4 sh4-kfreebsd-gnu
+kfreebsd-sh4eb sh4eb-kfreebsd-gnu
+kfreebsd-sparc sparc-kfreebsd-gnu
+kfreebsd-sparc64 sparc64-kfreebsd-gnu
+knetbsd-alpha alpha-knetbsd-gnu
+knetbsd-amd64 x86_64-knetbsd-gnu
+knetbsd-arm arm-knetbsd-gnu
+knetbsd-arm64 aarch64-knetbsd-gnu
+knetbsd-armeb armeb-knetbsd-gnu
+knetbsd-avr32 avr32-knetbsd-gnu
+knetbsd-hppa hppa-knetbsd-gnu
+knetbsd-i386 i386-knetbsd-gnu
+knetbsd-ia64 ia64-knetbsd-gnu
+knetbsd-m32r m32r-knetbsd-gnu
+knetbsd-m68k m68k-knetbsd-gnu
+knetbsd-mips mips-knetbsd-gnu
+knetbsd-mipsel mipsel-knetbsd-gnu
+knetbsd-powerpc powerpc-knetbsd-gnu
+knetbsd-ppc64 powerpc64-knetbsd-gnu
+knetbsd-s390 s390-knetbsd-gnu
+knetbsd-s390x s390x-knetbsd-gnu
+knetbsd-sh3 sh3-knetbsd-gnu
+knetbsd-sh3eb sh3eb-knetbsd-gnu
+knetbsd-sh4 sh4-knetbsd-gnu
+knetbsd-sh4eb sh4eb-knetbsd-gnu
+knetbsd-sparc sparc-knetbsd-gnu
+knetbsd-sparc64 sparc64-knetbsd-gnu
+kopensolaris-alpha alpha-kopensolaris-gnu
+kopensolaris-amd64 x86_64-kopensolaris-gnu
+kopensolaris-arm arm-kopensolaris-gnu
+kopensolaris-arm64 aarch64-kopensolaris-gnu
+kopensolaris-armeb armeb-kopensolaris-gnu
+kopensolaris-avr32 avr32-kopensolaris-gnu
+kopensolaris-hppa hppa-kopensolaris-gnu
+kopensolaris-i386 i386-kopensolaris-gnu
+kopensolaris-ia64 ia64-kopensolaris-gnu
+kopensolaris-m32r m32r-kopensolaris-gnu
+kopensolaris-m68k m68k-kopensolaris-gnu
+kopensolaris-mips mips-kopensolaris-gnu
+kopensolaris-mipsel mipsel-kopensolaris-gnu
+kopensolaris-powerpc powerpc-kopensolaris-gnu
+kopensolaris-ppc64 powerpc64-kopensolaris-gnu
+kopensolaris-s390 s390-kopensolaris-gnu
+kopensolaris-s390x s390x-kopensolaris-gnu
+kopensolaris-sh3 sh3-kopensolaris-gnu
+kopensolaris-sh3eb sh3eb-kopensolaris-gnu
+kopensolaris-sh4 sh4-kopensolaris-gnu
+kopensolaris-sh4eb sh4eb-kopensolaris-gnu
+kopensolaris-sparc sparc-kopensolaris-gnu
+kopensolaris-sparc64 sparc64-kopensolaris-gnu
+lpia i386-linux-gnulp
+m32r m32r-linux-gnu
+m68k m68k-linux-gnu
+mint-m68k m68k-mint
+mips mips-linux-gnu
+mipsel mipsel-linux-gnu
+netbsd-alpha alpha-netbsd
+netbsd-amd64 x86_64-netbsd
+netbsd-arm arm-netbsd
+netbsd-arm64 aarch64-netbsd
+netbsd-armeb armeb-netbsd
+netbsd-avr32 avr32-netbsd
+netbsd-hppa hppa-netbsd
+netbsd-i386 i386-netbsd
+netbsd-ia64 ia64-netbsd
+netbsd-m32r m32r-netbsd
+netbsd-m68k m68k-netbsd
+netbsd-mips mips-netbsd
+netbsd-mipsel mipsel-netbsd
+netbsd-powerpc powerpc-netbsd
+netbsd-ppc64 powerpc64-netbsd
+netbsd-s390 s390-netbsd
+netbsd-s390x s390x-netbsd
+netbsd-sh3 sh3-netbsd
+netbsd-sh3eb sh3eb-netbsd
+netbsd-sh4 sh4-netbsd
+netbsd-sh4eb sh4eb-netbsd
+netbsd-sparc sparc-netbsd
+netbsd-sparc64 sparc64-netbsd
+openbsd-alpha alpha-openbsd
+openbsd-amd64 x86_64-openbsd
+openbsd-arm arm-openbsd
+openbsd-arm64 aarch64-openbsd
+openbsd-armeb armeb-openbsd
+openbsd-avr32 avr32-openbsd
+openbsd-hppa hppa-openbsd
+openbsd-i386 i386-openbsd
+openbsd-ia64 ia64-openbsd
+openbsd-m32r m32r-openbsd
+openbsd-m68k m68k-openbsd
+openbsd-mips mips-openbsd
+openbsd-mipsel mipsel-openbsd
+openbsd-powerpc powerpc-openbsd
+openbsd-ppc64 powerpc64-openbsd
+openbsd-s390 s390-openbsd
+openbsd-s390x s390x-openbsd
+openbsd-sh3 sh3-openbsd
+openbsd-sh3eb sh3eb-openbsd
+openbsd-sh4 sh4-openbsd
+openbsd-sh4eb sh4eb-openbsd
+openbsd-sparc sparc-openbsd
+openbsd-sparc64 sparc64-openbsd
+powerpc powerpc-linux-gnu
+powerpcspe powerpc-linux-gnuspe
+ppc64 powerpc64-linux-gnu
+s390 s390-linux-gnu
+s390x s390x-linux-gnu
+sh3 sh3-linux-gnu
+sh3eb sh3eb-linux-gnu
+sh4 sh4-linux-gnu
+sh4eb sh4eb-linux-gnu
+solaris-alpha alpha-solaris
+solaris-amd64 x86_64-solaris
+solaris-arm arm-solaris
+solaris-arm64 aarch64-solaris
+solaris-armeb armeb-solaris
+solaris-avr32 avr32-solaris
+solaris-hppa hppa-solaris
+solaris-i386 i386-solaris
+solaris-ia64 ia64-solaris
+solaris-m32r m32r-solaris
+solaris-m68k m68k-solaris
+solaris-mips mips-solaris
+solaris-mipsel mipsel-solaris
+solaris-powerpc powerpc-solaris
+solaris-ppc64 powerpc64-solaris
+solaris-s390 s390-solaris
+solaris-s390x s390x-solaris
+solaris-sh3 sh3-solaris
+solaris-sh3eb sh3eb-solaris
+solaris-sh4 sh4-solaris
+solaris-sh4eb sh4eb-solaris
+solaris-sparc sparc-solaris
+solaris-sparc64 sparc64-solaris
+sparc sparc-linux-gnu
+sparc64 sparc64-linux-gnu
+uclibc-linux-alpha alpha-linux-uclibc
+uclibc-linux-amd64 x86_64-linux-uclibc
+uclibc-linux-arm arm-linux-uclibc
+uclibc-linux-arm64 aarch64-linux-uclibc
+uclibc-linux-armeb armeb-linux-uclibc
+uclibc-linux-armel arm-linux-uclibceabi
+uclibc-linux-avr32 avr32-linux-uclibc
+uclibc-linux-hppa hppa-linux-uclibc
+uclibc-linux-i386 i386-linux-uclibc
+uclibc-linux-ia64 ia64-linux-uclibc
+uclibc-linux-m32r m32r-linux-uclibc
+uclibc-linux-m68k m68k-linux-uclibc
+uclibc-linux-mips mips-linux-uclibc
+uclibc-linux-mipsel mipsel-linux-uclibc
+uclibc-linux-powerpc powerpc-linux-uclibc
+uclibc-linux-ppc64 powerpc64-linux-uclibc
+uclibc-linux-s390 s390-linux-uclibc
+uclibc-linux-s390x s390x-linux-uclibc
+uclibc-linux-sh3 sh3-linux-uclibc
+uclibc-linux-sh3eb sh3eb-linux-uclibc
+uclibc-linux-sh4 sh4-linux-uclibc
+uclibc-linux-sh4eb sh4eb-linux-uclibc
+uclibc-linux-sparc sparc-linux-uclibc
+uclibc-linux-sparc64 sparc64-linux-uclibc
+uclinux-alpha alpha-uclinux-uclibc
+uclinux-amd64 x86_64-uclinux-uclibc
+uclinux-arm arm-uclinux-uclibc
+uclinux-arm64 aarch64-uclinux-uclibc
+uclinux-armeb armeb-uclinux-uclibc
+uclinux-armel arm-uclinux-uclibceabi
+uclinux-avr32 avr32-uclinux-uclibc
+uclinux-hppa hppa-uclinux-uclibc
+uclinux-i386 i386-uclinux-uclibc
+uclinux-ia64 ia64-uclinux-uclibc
+uclinux-m32r m32r-uclinux-uclibc
+uclinux-m68k m68k-uclinux-uclibc
+uclinux-mips mips-uclinux-uclibc
+uclinux-mipsel mipsel-uclinux-uclibc
+uclinux-powerpc powerpc-uclinux-uclibc
+uclinux-ppc64 powerpc64-uclinux-uclibc
+uclinux-s390 s390-uclinux-uclibc
+uclinux-s390x s390x-uclinux-uclibc
+uclinux-sh3 sh3-uclinux-uclibc
+uclinux-sh3eb sh3eb-uclinux-uclibc
+uclinux-sh4 sh4-uclinux-uclibc
+uclinux-sh4eb sh4eb-uclinux-uclibc
+uclinux-sparc sparc-uclinux-uclibc
+uclinux-sparc64 sparc64-uclinux-uclibc
+x32 x86_64-linux-gnux32
diff --git a/private/refresh-archs b/private/refresh-archs
index e301751..05a9be1 100755
--- a/private/refresh-archs
+++ b/private/refresh-archs
@@ -56,7 +56,7 @@ my (%archs, %files);
 #
 
 add_data_file(
-    'filename' => 'binaries/multiarch-dirs',
+    'filename' => 'common/multiarch-dirs',
     'line-spec' => ['@DEB_HOST_ARCH@ @DEB_HOST_MULTIARCH@'],
     'header'  => <<EOF
 # List of "Multiarch dirs" relationships as provided by
-- 
1.7.10.4

From 05abd23f9b09792ca361ef5457963f62682243c8 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Bastien=20ROUCARI=C3=88S?= <roucaries.bastien@gmail.com>
Date: Tue, 20 Aug 2013 21:47:25 +0200
Subject: [PATCH 2/2] Implement some simple testing of pkg-config file

Test if a arch indep file contains a multi-arch path
---
 checks/files.desc                                  |    7 ++++++
 checks/files.pm                                    |   20 ++++++++++++++-
 t/tests/files-pkgconfig/debian/Makefile            |   23 +++++++++++++++++
 t/tests/files-pkgconfig/debian/debian/control.in   |   26 ++++++++++++++++++++
 .../debian/debian/pkgconfig-all.install            |    1 +
 .../debian/debian/pkgconfig-any.install            |    1 +
 .../debian/generated/arch-good.pc.in               |    6 +++++
 .../debian/generated/indep-include-arch.pc.in      |    6 +++++
 t/tests/files-pkgconfig/debian/indep-good.pc       |    6 +++++
 t/tests/files-pkgconfig/desc                       |    6 +++++
 t/tests/files-pkgconfig/tags                       |    1 +
 11 files changed, 102 insertions(+), 1 deletion(-)
 create mode 100644 t/tests/files-pkgconfig/debian/Makefile
 create mode 100644 t/tests/files-pkgconfig/debian/debian/control.in
 create mode 100644 t/tests/files-pkgconfig/debian/debian/pkgconfig-all.install
 create mode 100644 t/tests/files-pkgconfig/debian/debian/pkgconfig-any.install
 create mode 100644 t/tests/files-pkgconfig/debian/generated/arch-good.pc.in
 create mode 100644 t/tests/files-pkgconfig/debian/generated/indep-include-arch.pc.in
 create mode 100644 t/tests/files-pkgconfig/debian/indep-good.pc
 create mode 100644 t/tests/files-pkgconfig/desc
 create mode 100644 t/tests/files-pkgconfig/tags

diff --git a/checks/files.desc b/checks/files.desc
index 55f94fd..e43ced4 100644
--- a/checks/files.desc
+++ b/checks/files.desc
@@ -1275,6 +1275,13 @@ Info: The gzip file contains a timestamp that will differ between
  .
  This can usually be fixed by passing -n to gzip.
 
+Tag: pkgconfig-multiarch-wrong-dir
+Severity: serious
+Certainty: certain
+Info: The arch all pkg-config file contains reference to an multi-arch path.
+ .
+ This can be usually be fixed by moving this file to a multi-arch path.
+
 Tag: dir-or-file-in-home
 Severity: serious
 Certainty: certain
diff --git a/checks/files.pm b/checks/files.pm
index e1e8d9f..ab89864 100644
--- a/checks/files.pm
+++ b/checks/files.pm
@@ -34,6 +34,9 @@ my $TRIPLETS = Lintian::Data->new('files/triplets', qr/\s++/);
 my $LOCALE_CODES = Lintian::Data->new('files/locale-codes', qr/\s++/);
 my $INCORRECT_LOCALE_CODES
   = Lintian::Data->new('files/incorrect-locale-codes', qr/\s++/);
+my $MULTIARCH_DIRS
+  = Lintian::Data->new('common/multiarch-dirs', qr/\s++/,
+    sub { return { 'dir' => $_[1] , 'match' => qr/\Q$_[1]\E/ } });
 
 # A list of known packaged Javascript libraries
 # and the packages providing them
@@ -494,7 +497,22 @@ sub run {
 
                 }
             }
-
+            # ---------------- arch-indep pkconfig
+            elsif ($file =~ m,^usr/(?:lib|share)/pkgconfig/[^/]+\.pc$,) {
+                open(my $fd, '<', $info->unpacked($file));
+              LINE: 
+                while (my $line = <$fd>) {
+                    # check if pkgconfig file include path point to arch specific dir
+                    foreach my $multiarch_dir ($MULTIARCH_DIRS->all) {
+                        if ($line =~ ($MULTIARCH_DIRS->value("$multiarch_dir"))->{'match'}) {
+                            tag 'pkgconfig-multiarch-wrong-dir',$file;
+                            last LINE;
+                        }
+                    }
+                }
+                close($fd);
+            }
+           
             #----------------- /usr/X11R6/
             # links to FHS locations are allowed
             elsif ($file =~ m,^usr/X11R6/, and not $file->is_symlink) {
diff --git a/t/tests/files-pkgconfig/debian/Makefile b/t/tests/files-pkgconfig/debian/Makefile
new file mode 100644
index 0000000..a288235
--- /dev/null
+++ b/t/tests/files-pkgconfig/debian/Makefile
@@ -0,0 +1,23 @@
+
+# Since dpkg in stable (Squeeze) does not support MULTIARCH we cannot use
+#  dpkg-architecture -qDEB_HOST_MULTIARCH
+# Therefore this test is hardcoded to x86 and amd64
+
+ARCH=$(shell dpkg-architecture -qDEB_HOST_MULTIARCH)
+
+all:
+	find generated -name '*.pc.in' -exec sh -c 'echo "build" {} && sed s/\$$\(ARCH\)/$(ARCH)/ {} > `echo {} | sed s/\.pc\.in$$/\.pc/g`' \;
+
+install:
+	# Install it once under the wrong dir
+	install -d $(DESTDIR)/usr/lib/pkgconfig/
+	install -d $(DESTDIR)/usr/lib/$(ARCH)/pkgconfig/
+#	install -m 644 arch-*.pc $(DESTDIR)/usr/lib/$(ARCH)/pkgconfig/
+	install -m 644 indep-*.pc $(DESTDIR)/usr/lib/pkgconfig/
+	install -m 644 generated/arch-*.pc $(DESTDIR)/usr/lib/$(ARCH)/pkgconfig/
+	install -m 644 generated/indep-*.pc $(DESTDIR)/usr/lib/pkgconfig/
+
+clean distclean:
+	rm -f generated/*.pc
+
+check test:
diff --git a/t/tests/files-pkgconfig/debian/debian/control.in b/t/tests/files-pkgconfig/debian/debian/control.in
new file mode 100644
index 0000000..e6c0738
--- /dev/null
+++ b/t/tests/files-pkgconfig/debian/debian/control.in
@@ -0,0 +1,26 @@
+Source: {$srcpkg}
+Priority: extra
+Section: devel
+Maintainer: {$author}
+Standards-Version: {$standards_version}
+Build-Depends: debhelper (>= 9)
+
+Package: pkgconfig-all
+Architecture: all
+Depends: $\{misc:Depends\}, $\{shlib:Depends\}
+Description: Contains test file for pkgconfig arch all
+ This is a test package designed to exercise some feature or tag of
+ Lintian for arch all pkgconfig files.
+ It is part of the Lintian test suite and may do very odd
+ things.  It should not be installed like a regular package.  It may
+ be an empty package.
+
+Package: pkgconfig-any
+Architecture: any
+Depends: $\{misc:Depends\}, $\{shlib:Depends\}
+Description: Contains test file for pkgconfig arch any
+ This is a test package designed to exercise some feature or tag of
+ Lintian for arch any pkgconfig files.
+ It is part of the Lintian test suite and may do very odd
+ things.  It should not be installed like a regular package.  It may
+ be an empty package.
diff --git a/t/tests/files-pkgconfig/debian/debian/pkgconfig-all.install b/t/tests/files-pkgconfig/debian/debian/pkgconfig-all.install
new file mode 100644
index 0000000..6127277
--- /dev/null
+++ b/t/tests/files-pkgconfig/debian/debian/pkgconfig-all.install
@@ -0,0 +1 @@
+usr/lib/pkgconfig/*.pc
diff --git a/t/tests/files-pkgconfig/debian/debian/pkgconfig-any.install b/t/tests/files-pkgconfig/debian/debian/pkgconfig-any.install
new file mode 100644
index 0000000..550fc5b
--- /dev/null
+++ b/t/tests/files-pkgconfig/debian/debian/pkgconfig-any.install
@@ -0,0 +1 @@
+usr/lib/*-*-*/pkgconfig/*.pc
diff --git a/t/tests/files-pkgconfig/debian/generated/arch-good.pc.in b/t/tests/files-pkgconfig/debian/generated/arch-good.pc.in
new file mode 100644
index 0000000..7c3bd9e
--- /dev/null
+++ b/t/tests/files-pkgconfig/debian/generated/arch-good.pc.in
@@ -0,0 +1,6 @@
+Name: indep-good
+Description: A library good
+Requires:
+Version: 3.1.3
+Libs:
+Cflags: -I/usr/include/indep-good
diff --git a/t/tests/files-pkgconfig/debian/generated/indep-include-arch.pc.in b/t/tests/files-pkgconfig/debian/generated/indep-include-arch.pc.in
new file mode 100644
index 0000000..9d64d79
--- /dev/null
+++ b/t/tests/files-pkgconfig/debian/generated/indep-include-arch.pc.in
@@ -0,0 +1,6 @@
+Name: indep-include-arch
+Description: A library that include some arch dir
+Requires:
+Version: 3.1.3
+Libs:
+Cflags: -I/usr/include/$(ARCH)/indep-include-arch
diff --git a/t/tests/files-pkgconfig/debian/indep-good.pc b/t/tests/files-pkgconfig/debian/indep-good.pc
new file mode 100644
index 0000000..7c3bd9e
--- /dev/null
+++ b/t/tests/files-pkgconfig/debian/indep-good.pc
@@ -0,0 +1,6 @@
+Name: indep-good
+Description: A library good
+Requires:
+Version: 3.1.3
+Libs:
+Cflags: -I/usr/include/indep-good
diff --git a/t/tests/files-pkgconfig/desc b/t/tests/files-pkgconfig/desc
new file mode 100644
index 0000000..a45786b
--- /dev/null
+++ b/t/tests/files-pkgconfig/desc
@@ -0,0 +1,6 @@
+Testname: files-pkgconfig
+Sequence: 6000
+Version: 1.0
+Description: Check for detection of pkgconfig problem
+Test-For:
+ pkgconfig-multiarch-wrong-dir
diff --git a/t/tests/files-pkgconfig/tags b/t/tests/files-pkgconfig/tags
new file mode 100644
index 0000000..cb33976
--- /dev/null
+++ b/t/tests/files-pkgconfig/tags
@@ -0,0 +1 @@
+E: pkgconfig-all: pkgconfig-multiarch-wrong-dir usr/lib/pkgconfig/indep-include-arch.pc
-- 
1.7.10.4


Reply to: