Bug#757921: perl 5.20 vendorarch path changes from usr/lib/perl5 to usr/lib/<triplet>/perl5
Package: lintian
Version: 2.5.25
Severity: normal
Tags: patch
User: debian-perl@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 dmn@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 dmn@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
Reply to: