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

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: