Package: lintian Version: 2.5.25 Severity: normal Tags: patch User: debian-p...@lists.debian.org Usertags: perl-5.20-transition
Perl 5.20 sets the library path to /usr/lib/<triplet>/perl5/5.20. Lintian has a couple of related checks which use usr/lib/perl5 and will stop triggering errors/warnings when packages are built with perl 5.20. $ git grep -c usr/lib/perl5 checks/binaries.desc:1 checks/binaries.pm:1 checks/files.desc:1 checks/files.pm:3 debian/changelog:2 po4a/po/checks/checks.pot:2 po4a/po/checks/da.po:2 t/tests/binaries-missing-depends-on-xapi/debian/Makefile:2 t/tests/files-foo-in-bar/debian/debian/install:1 t/tests/files-foo-in-bar/tags:1 t/tests/legacy-filenames/debian/debian/rules:17 t/tests/legacy-filenames/tags:22 t/tests/legacy-libbaz/debian/debian/rules:6 t/tests/legacy-libbaz/tags:4 The first of the patches addresses this by accounting for the possibility that there is a tripled directory between 'usr/lib' and 'perl5'. The second patch adapts the tests. Thanks for considering, dam -- System Information: Debian Release: jessie/sid APT prefers unstable APT policy: (500, 'unstable'), (500, 'testing'), (500, 'stable'), (1, 'experimental') Architecture: amd64 (x86_64) Foreign Architectures: i386 Kernel: Linux 3.14-2-amd64 (SMP w/4 CPU cores) Locale: LANG=bg_BG.UTF-8, LC_CTYPE=bg_BG.UTF-8 (charmap=UTF-8) Shell: /bin/sh linked to /bin/dash Versions of packages lintian depends on: ii binutils 2.24.51.20140807-1 ii bzip2 1.0.6-7 ii diffstat 1.58-1 ii file 1:5.19-1 ii gettext 0.19.2-1 ii hardening-includes 2.5 ii intltool-debian 0.35.0+20060710.1 ii libapt-pkg-perl 0.1.29+b1 ii libarchive-zip-perl 1.37-2 ii libclass-accessor-perl 0.34-1 ii libclone-perl 0.37-1 ii libdigest-sha-perl 5.92-1 ii libdpkg-perl 1.17.11 ii libemail-valid-perl 1.194-1 ii libfile-basedir-perl 0.03-1 ii libipc-run-perl 0.92-1 ii liblist-moreutils-perl 0.33-2 ii libparse-debianchangelog-perl 1.2.0-1 ii libtext-levenshtein-perl 0.09-1 ii libtimedate-perl 2.3000-2 ii liburi-perl 1.64-1 ii man-db 2.6.7.1-1 ii patchutils 0.3.3-1 ii perl [libdigest-sha-perl] 5.18.2-7 ii t1utils 1.37-2 Versions of packages lintian recommends: ii libautodie-perl 2.25-1 ii libperlio-gzip-perl 0.18-3 ii perl-modules [libautodie-perl] 5.18.2-7 Versions of packages lintian suggests: ii binutils-multiarch 2.24.51.20140807-1 ii dpkg-dev 1.17.11 ii libhtml-parser-perl 3.71-1+b1 ii libtext-template-perl 1.46-1 ii libyaml-perl 0.98-1 ii xz-utils 5.1.1alpha+20120614-2 -- no debconf information
>From 25d3df70f04be1c57c340cb96e9e0131bcf9c066 Mon Sep 17 00:00:00 2001 From: Damyan Ivanov <Damyan Ivanov d...@debian.org> Date: Tue, 12 Aug 2014 10:21:14 +0000 Subject: [PATCH 1/2] adapt to library patch changes with perl 5.20 replace usr/lib/perl5 with usr/lib/(?:[^/]+/)?/perl5 the new vendorarch patch is /usr/lib/<triplet>/perl5/5.20 --- checks/binaries.desc | 2 +- checks/binaries.pm | 2 +- checks/files.desc | 2 +- checks/files.pm | 6 +++--- po4a/po/checks/checks.pot | 4 ++-- po4a/po/checks/da.po | 4 ++-- 6 files changed, 10 insertions(+), 10 deletions(-) diff --git a/checks/binaries.desc b/checks/binaries.desc index a5f3c77..280aee4 100644 --- a/checks/binaries.desc +++ b/checks/binaries.desc @@ -216,7 +216,7 @@ Tag: missing-dependency-on-perlapi Severity: serious Certainty: certain Ref: perl-policy 4.4.2 -Info: This package includes a *.so file in <tt>/usr/lib/perl5</tt>, +Info: This package includes a *.so file in <tt>/usr/lib/.../perl5</tt>, normally indicating that it includes a binary Perl module. Binary Perl modules must depend on perlapi-$Config{version} (from the Config module). If the package is using debhelper, this problem is usually due to a diff --git a/checks/binaries.pm b/checks/binaries.pm index c57e431..42860fe 100644 --- a/checks/binaries.pm +++ b/checks/binaries.pm @@ -391,7 +391,7 @@ sub run { next if $type eq 'udeb'; # Perl library? - if ($file =~ m,^usr/lib/perl5/.*\.so$,) { + if ($file =~ m,^usr/lib/(?:[^/]+/)?perl5/.*\.so$,) { $has_perl_lib = 1; } diff --git a/checks/files.desc b/checks/files.desc index 9036101..313729e 100644 --- a/checks/files.desc +++ b/checks/files.desc @@ -715,7 +715,7 @@ Tag: package-installs-nonbinary-perl-in-usr-lib-perl5 Severity: normal Certainty: certain Info: Architecture-independent Perl code should be placed in - <tt>/usr/share/perl5</tt>, not <tt>/usr/lib/perl5</tt> + <tt>/usr/share/perl5</tt>, not <tt>/usr/lib/.../perl5</tt> unless there is at least one architecture-dependent file in the module. Ref: perl-policy 2.3 diff --git a/checks/files.pm b/checks/files.pm index 6dabc79..875d01b 100644 --- a/checks/files.pm +++ b/checks/files.pm @@ -666,9 +666,9 @@ sub run { # ---------------- .packlist files elsif ($fname =~ m,^usr/lib/perl.*/.packlist$,) { tag 'package-installs-packlist', $file; - }elsif ($fname =~ m,^usr/lib/perl5/.*\.(?:pl|pm)$,) { + }elsif ($fname =~ m,^usr/lib/(?:[^/]+/)?perl5/.*\.(?:pl|pm)$,) { push @nonbinary_perl_files_in_lib, $file; - }elsif ($fname =~ m,^usr/lib/perl5/.*\.(?:bs|so)$,) { + }elsif ($fname =~ m,^usr/lib/(?:[^/]+/)?perl5/.*\.(?:bs|so)$,) { $has_binary_perl_file = 1; } # ---------------- /usr/lib -- needs to go after the other usr/lib/* @@ -1784,7 +1784,7 @@ sub run { my $dirname = $dir->name; next if ($dirname =~ m{^var/} or $dirname =~ m{^etc/}); if (scalar($dir->children) == 0) { - if ( $dirname ne 'usr/lib/perl5/' + if ( $dirname !~ m;^usr/lib/(?:[^/]+/)?perl5/$; and $dirname ne 'usr/share/perl5/' and $dirname !~ m;^usr/share/python-support/;) { tag 'package-contains-empty-directory', $dirname; diff --git a/po4a/po/checks/checks.pot b/po4a/po/checks/checks.pot index 9e5f076..e9f5dcb 100644 --- a/po4a/po/checks/checks.pot +++ b/po4a/po/checks/checks.pot @@ -611,7 +611,7 @@ msgstr "" #: checks/binaries.desc:226 #, no-wrap msgid "" -"This package includes a *.so file in <tt>/usr/lib/perl5</tt>,\n" +"This package includes a *.so file in <tt>/usr/lib/.../perl5</tt>,\n" "normally indicating that it includes a binary Perl module. Binary Perl\n" "modules must depend on perlapi-$Config{version} (from the Config module).\n" "If the package is using debhelper, this problem is usually due to a\n" @@ -8622,7 +8622,7 @@ msgstr "" #, no-wrap msgid "" "Architecture-independent Perl code should be placed in\n" -"<tt>/usr/share/perl5</tt>, not <tt>/usr/lib/perl5</tt>\n" +"<tt>/usr/share/perl5</tt>, not <tt>/usr/lib/.../perl5</tt>\n" "unless there is at least one architecture-dependent file\n" "in the module." msgstr "" diff --git a/po4a/po/checks/da.po b/po4a/po/checks/da.po index 0b8cb4c..ad19d6c 100644 --- a/po4a/po/checks/da.po +++ b/po4a/po/checks/da.po @@ -548,7 +548,7 @@ msgstr "" #: checks/binaries.desc:226 #, no-wrap msgid "" -"This package includes a *.so file in <tt>/usr/lib/perl5</tt>,\n" +"This package includes a *.so file in <tt>/usr/lib/.../perl5</tt>,\n" "normally indicating that it includes a binary Perl module. Binary Perl\n" "modules must depend on perlapi-$Config{version} (from the Config module).\n" "If the package is using debhelper, this problem is usually due to a\n" @@ -8032,7 +8032,7 @@ msgstr "" #, no-wrap msgid "" "Architecture-independent Perl code should be placed in\n" -"<tt>/usr/share/perl5</tt>, not <tt>/usr/lib/perl5</tt>\n" +"<tt>/usr/share/perl5</tt>, not <tt>/usr/lib/.../perl5</tt>\n" "unless there is at least one architecture-dependent file\n" "in the module." msgstr "" -- 2.1.0.rc1
>From e5086cc0829e8a53a0b157326ff7023d2dccfa19 Mon Sep 17 00:00:00 2001 From: Damyan Ivanov <Damyan Ivanov d...@debian.org> Date: Tue, 12 Aug 2014 12:10:36 +0000 Subject: [PATCH 2/2] adapt tests to use $Config{vendorarch} instead of /usr/lib/perl5 --- .../debian/Makefile | 6 ++-- t/tests/legacy-filenames/debian/debian/rules | 38 ++++++++++++---------- t/tests/legacy-libbaz/debian/debian/rules | 14 ++++---- 3 files changed, 32 insertions(+), 26 deletions(-) diff --git a/t/tests/binaries-missing-depends-on-xapi/debian/Makefile b/t/tests/binaries-missing-depends-on-xapi/debian/Makefile index 14a6e28..5c9cbaf 100644 --- a/t/tests/binaries-missing-depends-on-xapi/debian/Makefile +++ b/t/tests/binaries-missing-depends-on-xapi/debian/Makefile @@ -1,10 +1,12 @@ all: gcc $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) -fPIC -shared -Wl,-z,defs -Wl,-soname,libbasic.so.2 -o libbasic.so basic.c +VENDORARCH := $(shell perl -MConfig -wE'say substr($$Config{vendorarch},1)') + install: # install it under the correct triplet directory - install -d $(DESTDIR)/usr/lib/perl5 - install -m 644 -c -s libbasic.so $(DESTDIR)/usr/lib/perl5/libbasic.so + install -d $(DESTDIR)/$(VENDORARCH) + install -m 644 -c -s libbasic.so $(DESTDIR)/$(VENDORARCH)/libbasic.so install -d $(DESTDIR)/usr/lib/php5 install -m 644 -c -s libbasic.so $(DESTDIR)/usr/lib/php5/libbasic.so diff --git a/t/tests/legacy-filenames/debian/debian/rules b/t/tests/legacy-filenames/debian/debian/rules index 60de822..ed38745 100755 --- a/t/tests/legacy-filenames/debian/debian/rules +++ b/t/tests/legacy-filenames/debian/debian/rules @@ -18,6 +18,8 @@ # Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, # MA 02110-1301, USA. +VENDORARCH := $(shell perl -MConfig -wE'say substr($$Config{vendorarch},1)') + clean: mkdir -p .svn CVS "{arch}" .arch-ids .bzr touch files/.cvsignore files/svn-commit.tmp files/svk-commitsEr9P.tmp @@ -53,25 +55,25 @@ binary-indep: touch debian/tmp/usr/share/menu/menu chmod 644 debian/tmp/usr/lib/menu/* - install -d debian/tmp/usr/lib/perl5/foo - mkdir debian/tmp/usr/lib/perl5/.svn - mkdir debian/tmp/usr/lib/perl5/CVS - mkdir "debian/tmp/usr/lib/perl5/{arch}" - mkdir debian/tmp/usr/lib/perl5/.arch-ids - mkdir debian/tmp/usr/lib/perl5/.bzr - mkdir debian/tmp/usr/lib/perl5/.be - mkdir debian/tmp/usr/lib/perl5/.ditrack + install -d debian/tmp/$(VENDORARCH)/foo + mkdir debian/tmp/$(VENDORARCH)/.svn + mkdir debian/tmp/$(VENDORARCH)/CVS + mkdir "debian/tmp/$(VENDORARCH)/{arch}" + mkdir debian/tmp/$(VENDORARCH)/.arch-ids + mkdir debian/tmp/$(VENDORARCH)/.bzr + mkdir debian/tmp/$(VENDORARCH)/.be + mkdir debian/tmp/$(VENDORARCH)/.ditrack install -d debian/tmp/usr/share/perl5 - echo foo > debian/tmp/usr/lib/perl5/foo/.gitignore - echo foo > debian/tmp/usr/lib/perl5/foo/.hgignore - echo foo > debian/tmp/usr/lib/perl5/foo/.hgtags - echo foo > debian/tmp/usr/lib/perl5/foo/.hg_archival.txt - - touch debian/tmp/usr/lib/perl5/foo/.packlist - chmod 644 debian/tmp/usr/lib/perl5/foo/.packlist - touch debian/tmp/usr/lib/perl5/foo/bar.pm - touch -t 197501010101 debian/tmp/usr/lib/perl5/foo/ancient.pm - chmod 644 debian/tmp/usr/lib/perl5/foo/bar.pm + echo foo > debian/tmp/$(VENDORARCH)/foo/.gitignore + echo foo > debian/tmp/$(VENDORARCH)/foo/.hgignore + echo foo > debian/tmp/$(VENDORARCH)/foo/.hgtags + echo foo > debian/tmp/$(VENDORARCH)/foo/.hg_archival.txt + + touch debian/tmp/$(VENDORARCH)/foo/.packlist + chmod 644 debian/tmp/$(VENDORARCH)/foo/.packlist + touch debian/tmp/$(VENDORARCH)/foo/bar.pm + touch -t 197501010101 debian/tmp/$(VENDORARCH)/foo/ancient.pm + chmod 644 debian/tmp/$(VENDORARCH)/foo/bar.pm install -d debian/tmp/usr/share/pixmaps install -d debian/tmp/usr/share/pixmaps/foo diff --git a/t/tests/legacy-libbaz/debian/debian/rules b/t/tests/legacy-libbaz/debian/debian/rules index dc8aa4f..fa99bc8 100755 --- a/t/tests/legacy-libbaz/debian/debian/rules +++ b/t/tests/legacy-libbaz/debian/debian/rules @@ -6,6 +6,8 @@ dev_tmp=debian/tmp-dev LIB=libbaz1 DEV=libbaz1-dev +VENDORARCH := $(shell perl -MConfig -wE'say substr($$Config{vendorarch},1)') + build-arch: $(MAKE) @@ -74,9 +76,9 @@ binary-arch: build-arch binary-correct install -m644 libbaz.so $(lib_tmp)/usr/lib/libbaz.so strip --remove-section=.comment --strip-unneeded $(lib_tmp)/usr/lib/libbaz.so # Pretend to be a Perl module to test a lack of Perl dependencies. - install -d $(lib_tmp)/usr/lib/perl5/auto/Foo - install -m 644 libbaz2.so.1.0.3b $(lib_tmp)/usr/lib/perl5/auto/Foo/Foo.so - strip $(lib_tmp)/usr/lib/perl5/auto/Foo/Foo.so + install -d $(lib_tmp)/$(VENDORARCH)/auto/Foo + install -m 644 libbaz2.so.1.0.3b $(lib_tmp)/$(VENDORARCH)/auto/Foo/Foo.so + strip $(lib_tmp)/$(VENDORARCH)/auto/Foo/Foo.so install -d $(lib_tmp)/usr/share/doc/$(LIB) install -m 644 debian/copyright $(lib_tmp)/usr/share/doc/$(LIB) @@ -100,9 +102,9 @@ binary-arch: build-arch binary-correct # and fuck up permission (TODO) chmod a+x $(lib_tmp)/usr/lib/*.a # Pretend to be a Perl module to test a lack of Perl dependencies. - install -d $(dev_tmp)/usr/lib/perl5/auto/Foo - install -m 644 libbaz2.so.1.0.3b $(dev_tmp)/usr/lib/perl5/auto/Foo/Foo.so - strip $(dev_tmp)/usr/lib/perl5/auto/Foo/Foo.so + install -d $(dev_tmp)/$(VENDORARCH)/auto/Foo + install -m 644 libbaz2.so.1.0.3b $(dev_tmp)/$(VENDORARCH)/auto/Foo/Foo.so + strip $(dev_tmp)/$(VENDORARCH)/auto/Foo/Foo.so install -d $(dev_tmp)/usr/share/doc ln -s $(LIB) $(dev_tmp)/usr/share/doc/$(DEV) install -d $(dev_tmp)/DEBIAN -- 2.1.0.rc1