Closed p5pRT closed 11 years ago
This is a bug report for perl from ppisar@redhat.com\, generated with the help of perlbug 1.39 running under perl 5.16.2.
ExtUtils-ParseXS-3.18 installs xsubpp script twice:
$ make pure_install DESTDIR=/tmp/ExtUtils-ParseXS-3.18-dest [...] $ find /tmp/ExtUtils-ParseXS-3.18-dest -name xsubpp /tmp/ExtUtils-ParseXS-3.18-dest/usr/local/share/perl5/ExtUtils/xsubpp /tmp/ExtUtils-ParseXS-3.18-dest/usr/local/bin/xsubpp
$ diff -u /tmp/ExtUtils-ParseXS-3.18-dest/usr/local/bin/xsubpp /tmp/ExtUtils-ParseXS-3.18-dest/usr/local/share/perl5/ExtUtils/xsubpp
Please stop installing xsubpp into @INC path.
-- Petr
Flags: category=library severity=low module=ExtUtils::ParseXS
Site configuration information for perl 5.16.2:
Configured by Red Hat\, Inc. at Tue Mar 5 13:00:19 UTC 2013.
Summary of my perl5 (revision 5 version 16 subversion 2) configuration:
Platform:
osname=linux\, osvers=2.6.32-279.19.1.el6.x86_64\, archname=x86_64-linux-thread-multi
uname='linux buildvm-26.phx2.fedoraproject.org 2.6.32-279.19.1.el6.x86_64 #1 smp sat nov 24 14:35:28 est 2012 x86_64 x86_64 x86_64 gnulinux '
config_args='-des -Doptimize=-O2 -g -pipe -Wall -Wp\,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic -Dccdlflags=-Wl\,--enable-new-dtags -Dlddlflags=-shared -O2 -g -pipe -Wall -Wp\,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic -Wl\,-z\,relro -DDEBUGGING=-g -Dversion=5.16.2 -Dmyhostname=localhost -Dperladmin=root@localhost -Dcc=gcc -Dcf_by=Red Hat\, Inc. -Dprefix=/usr -Dvendorprefix=/usr -Dsiteprefix=/usr/local -Dsitelib=/usr/local/share/perl5 -Dsitearch=/usr/local/lib64/perl5 -Dprivlib=/usr/share/perl5 -Dvendorlib=/usr/share/perl5/vendor_perl -Darchlib=/usr/lib64/perl5 -Dvendorarch=/usr/lib64/perl5/vendor_perl -Darchname=x86_64-linux-thread-multi -Dlibpth=/usr/local/lib64 /lib64 /usr/lib64 -Duseshrplib -Dusethreads -Duseithreads -Dusedtrace=/usr/bin/dtrace -Duselargefiles -Dd_semctl_semun -Di_db -Ui_ndbm -Di_gdbm -Di_shadow -Di_syslog -Dman3ext=3pm -Duseperlio -Dinstallusrbin!
perl=n -Ubincompat5005 -Uversiononly -Dpager=/usr/bin/less -isr -Dd_gethostent_r_proto -Ud_endhostent_r_proto -Ud_sethostent_r_proto -Ud_endprotoent_r_proto -Ud_setprotoent_r_proto -Ud_endservent_r_proto -Ud_setservent_r_proto -Dscriptdir=/usr/bin -Dusesitecustomize'
hint=recommended\, useposix=true\, d_sigaction=define
useithreads=define\, usemultiplicity=define
useperlio=define\, d_sfio=undef\, uselargefiles=define\, usesocks=undef
use64bitint=define\, use64bitall=define\, uselongdouble=undef
usemymalloc=n\, bincompat5005=undef
Compiler:
cc='gcc'\, ccflags ='-D_REENTRANT -D_GNU_SOURCE -fno-strict-aliasing -pipe -fstack-protector -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64'\,
optimize='-O2 -g -pipe -Wall -Wp\,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic'\,
cppflags='-D_REENTRANT -D_GNU_SOURCE -fno-strict-aliasing -pipe -fstack-protector -I/usr/local/include'
ccversion=''\, gccversion='4.7.2 20121109 (Red Hat 4.7.2-8)'\, gccosandvers=''
intsize=4\, longsize=8\, ptrsize=8\, doublesize=8\, byteorder=12345678
d_longlong=define\, longlongsize=8\, d_longdbl=define\, longdblsize=16
ivtype='long'\, ivsize=8\, nvtype='double'\, nvsize=8\, Off_t='off_t'\, lseeksize=8
alignbytes=8\, prototype=define
Linker and Libraries:
ld='gcc'\, ldflags =' -fstack-protector'
libpth=/usr/local/lib64 /lib64 /usr/lib64
libs=-lresolv -lnsl -lgdbm -ldb -ldl -lm -lcrypt -lutil -lpthread -lc -lgdbm_compat
perllibs=-lresolv -lnsl -ldl -lm -lcrypt -lutil -lpthread -lc
libc=\, so=so\, useshrplib=true\, libperl=libperl.so
gnulibc_version='2.16'
Dynamic Linking:
dlsrc=dl_dlopen.xs\, dlext=so\, d_dlsymun=undef\, ccdlflags='-Wl\,--enable-new-dtags -Wl\,-rpath\,/usr/lib64/perl5/CORE'
cccdlflags='-fPIC'\, lddlflags='-shared -O2 -g -pipe -Wall -Wp\,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic -Wl\,-z\,relro '
Locally applied patches:
@INC for perl 5.16.2: /usr/local/lib64/perl5 /usr/local/share/perl5 /usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5 .
Environment for perl 5.16.2: HOME=/home/petr LANG=cs_CZ.UTF-8 LANGUAGE (unset) LD_LIBRARY_PATH (unset) LOGDIR (unset) PATH=/home/petr/bin:/usr/lib64/qt-3.3/bin:/usr/lib64/icecc/bin:/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin PERL_BADLANG (unset) SHELL=/bin/bash
On Fri Mar 22 05:19:42 2013\, ppisar wrote:
This is a bug report for perl from ppisar@redhat.com\, generated with the help of perlbug 1.39 running under perl 5.16.2.
-----------------------------------------------------------------
ExtUtils-ParseXS-3.18 installs xsubpp script twice:
$ make pure_install DESTDIR=/tmp/ExtUtils-ParseXS-3.18-dest [...] $ find /tmp/ExtUtils-ParseXS-3.18-dest -name xsubpp /tmp/ExtUtils-ParseXS-3.18-dest/usr/local/share/perl5/ExtUtils/xsubpp /tmp/ExtUtils-ParseXS-3.18-dest/usr/local/bin/xsubpp
$ diff -u /tmp/ExtUtils-ParseXS-3.18-dest/usr/local/bin/xsubpp /tmp/ExtUtils-ParseXS-3.18- dest/usr/local/share/perl5/ExtUtils/xsubpp --- /tmp/ExtUtils-ParseXS-3.18-dest/usr/local/bin/xsubpp 2013- 03-22 13:13:08.000000000 +0100 +++ /tmp/ExtUtils-ParseXS-3.18- dest/usr/local/share/perl5/ExtUtils/xsubpp 2011-12-02 08:07:25.000000000 +0100 @@ -1\,7 +1\,4 @@ -#!/usr/bin/perl - -eval 'exec /usr/bin/perl -S $0 ${1+"$@"}' - if 0; # not running under some shell +#!perl use 5.006; use strict; eval {
Please stop installing xsubpp into @INC path.
-- Petr
I don't see what the problem is here.
In the first place\, when you install/upgrade ExtUtils::ParseXS from CPAN\, it installs xsubpp into /usr/local/bin and its man page into /usr/local/share/man/man1 -- period; nothing else gets installed.
So that leaves the installation of xsubpp when you install a new version of Perl and get whatever version of ExtUtils::ParseXS that comes along with that Perl. I have never had occasion to use 'make pure_install'\, so I cannot speak to your use of it. However\, I think your understanding of @INC is not quite correct. From pod/perlvar.pod:
##### =item @INC X\<@INC>
The array C\<@INC> contains the list of places that the C\
AFAIK\, there is no requirement that the paths named in @INC contain *only* Perl library (.pm) files. Hence\, there is no reason to view as problematic placement of a version of xsubpp in a directory which happens to be locatable via @INC. /usr/local/lib/perl5/5.16.0/ExtUtils/\, for example\, contains .pm files\, a .pod file\, a MANIFEST.SKIP\, a configuration file (typemap) as well as a read-only version of xsubpp.
So\, I don't see a bug here.
Thank you very much. Jim Keenan
The RT System itself - Status changed from 'new' to 'open'
On Sat\, Mar 23\, 2013 at 11:57:12AM -0700\, James E Keenan via RT wrote:
On Fri Mar 22 05:19:42 2013\, ppisar wrote:
ExtUtils-ParseXS-3.18 installs xsubpp script twice:
$ make pure_install DESTDIR=/tmp/ExtUtils-ParseXS-3.18-dest [...] $ find /tmp/ExtUtils-ParseXS-3.18-dest -name xsubpp /tmp/ExtUtils-ParseXS-3.18-dest/usr/local/share/perl5/ExtUtils/xsubpp /tmp/ExtUtils-ParseXS-3.18-dest/usr/local/bin/xsubpp
[...] Please stop installing xsubpp into @INC path.
I don't see what the problem is here.
The problem here is the same file gets installed into /usr/{\,local/}bin and into @INC. What's good for to have the same file twice in your system?
In the first place\, when you install/upgrade ExtUtils::ParseXS from CPAN\, it installs xsubpp into /usr/local/bin and its man page into /usr/local/share/man/man1 -- period; nothing else gets installed.
Not at all. I've just given a try:
root@fedora-20:/usr/local # cpan -i -f ExtUtils::ParseXS Reading '/root/.cpan/Metadata' Database was generated on Mon\, 25 Mar 2013 14:41:04 GMT Running install for module 'ExtUtils::ParseXS' Running make for S/SM/SMUELLER/ExtUtils-ParseXS-3.18.tar.gz [...] Result: PASS SMUELLER/ExtUtils-ParseXS-3.18.tar.gz /usr/bin/make test -- OK Running make install Installing /usr/local/share/perl5/ExtUtils/Typemaps.pm Installing /usr/local/share/perl5/ExtUtils/ParseXS.pod Installing /usr/local/share/perl5/ExtUtils/xsubpp Installing /usr/local/share/perl5/ExtUtils/ParseXS.pm Installing /usr/local/share/perl5/ExtUtils/Typemaps/Type.pm Installing /usr/local/share/perl5/ExtUtils/Typemaps/InputMap.pm Installing /usr/local/share/perl5/ExtUtils/Typemaps/Cmd.pm Installing /usr/local/share/perl5/ExtUtils/Typemaps/OutputMap.pm Installing /usr/local/share/perl5/ExtUtils/ParseXS/Constants.pm Installing /usr/local/share/perl5/ExtUtils/ParseXS/CountLines.pm Installing /usr/local/share/perl5/ExtUtils/ParseXS/Utilities.pm Installing /usr/local/share/man/man1/xsubpp.1 Installing /usr/local/share/man/man3/ExtUtils::ParseXS::Utilities.3pm Installing /usr/local/share/man/man3/ExtUtils::ParseXS.3pm Installing /usr/local/share/man/man3/ExtUtils::ParseXS::Constants.3pm Installing /usr/local/share/man/man3/ExtUtils::Typemaps::Type.3pm Installing /usr/local/share/man/man3/ExtUtils::Typemaps::OutputMap.3pm Installing /usr/local/share/man/man3/ExtUtils::Typemaps::Cmd.3pm Installing /usr/local/share/man/man3/ExtUtils::Typemaps.3pm Installing /usr/local/share/man/man3/ExtUtils::Typemaps::InputMap.3pm Installing /usr/local/bin/xsubpp Appending installation info to /usr/lib64/perl5/perllocal.pod SMUELLER/ExtUtils-ParseXS-3.18.tar.gz /usr/bin/make install -- OK
I have never had occasion to use 'make pure_install'\, The same as make install minus installing some unneeded stuff.
The array C\<@INC> contains the list of places that the C\
\, C\ \, or C\ And is xsubpp supposed to be "require"-d by other perl code? Then there is no reason to install the file there.
AFAIK\, there is no requirement that the paths named in @INC contain *only* Perl library (.pm) files.
Thus it's reasonable to put the file there?
/usr/local/lib/perl5/5.16.0/ExtUtils/\, for example\, contains .pm files\, a .pod file\, a MANIFEST.SKIP\, Yeah\, such usefull MANIFEST.SKIP that will get overwitten by another package installation? Maybe that's reason for make pure_install.
a configuration file (typemap) as well as a read-only version of xsubpp.
Again\, what is it good for?
So\, I don't see a bug here.
If I can be constructive\, moving lib/ExtUtils/xsubpp to scripts/xsubpp and removing 'EXE_FILES' => ['lib/ExtUtils/xsubpp'] from Makefile.PL should fix this issue.
-- Petr
On Mon\, Mar 25\, 2013 at 4:45 PM\, Petr Pisar \ppisar@​redhat\.com wrote:
The problem here is the same file gets installed into /usr/{\,local/}bin and into @INC. What's good for to have the same file twice in your system?
AFAIK the original place was in @INC. It was later added to install{\,vendor\,site}bin.
And is xsubpp supposed to be "require"-d by other perl code? Then there is no reason to install the file there.
AFAIK\, there is no requirement that the paths named in @INC contain *only* Perl library (.pm) files.
Thus it's reasonable to put the file there?
Hysterical raisins.
MakeMaker depends on it being there. Even if we'd change how MakeMaker works\, there's still older versions to keep into account. I agree with you it's not a logical location\, but we just can't go around breaking 20 years of MakeMaker out of stylistic reasons.
a configuration file (typemap) as well as a read-only version of xsubpp.
Again\, what is it good for?
Actually\, I wouldn't know a better place for that than in @INC. Granted\, nowadays we'd use File::ShareDir or some such\, but it boils down to the same.
If I can be constructive\, moving lib/ExtUtils/xsubpp to scripts/xsubpp and removing 'EXE_FILES' => ['lib/ExtUtils/xsubpp'] from Makefile.PL should fix this issue.
Hindsight is 20/20.
Leon
On Mon Mar 25 12:49:34 2013\, LeonT wrote:
On Mon\, Mar 25\, 2013 at 4:45 PM\, Petr Pisar \ppisar@​redhat\.com wrote:
The problem here is the same file gets installed into /usr/{\,local/}bin and into @INC. What's good for to have the same file twice in your system?
AFAIK the original place was in @INC. It was later added to install{\,vendor\,site}bin.
And is xsubpp supposed to be "require"-d by other perl code? Then there is no reason to install the file there.
AFAIK\, there is no requirement that the paths named in @INC contain *only* Perl library (.pm) files.
Thus it's reasonable to put the file there?
Hysterical raisins.
MakeMaker depends on it being there. Even if we'd change how MakeMaker works\, there's still older versions to keep into account. I agree with you it's not a logical location\, but we just can't go around breaking 20 years of MakeMaker out of stylistic reasons.
a configuration file (typemap) as well as a read-only version of xsubpp.
Again\, what is it good for?
Actually\, I wouldn't know a better place for that than in @INC. Granted\, nowadays we'd use File::ShareDir or some such\, but it boils down to the same.
If I can be constructive\, moving lib/ExtUtils/xsubpp to scripts/xsubpp and removing 'EXE_FILES' => ['lib/ExtUtils/xsubpp'] from Makefile.PL should fix this issue.
Hindsight is 20/20.
Leon
If Leon's argument is correct\, then we are stuck with the status quo -- which makes this ticket closable?
Any dissent?
Thank you very much. Jim Keenan
On Mon Mar 25 17:55:05 2013\, jkeenan wrote:
If Leon's argument is correct\, then we are stuck with the status quo -- which makes this ticket closable?
I agree\, and closing it.
Tony
@tonycoz - Status changed from 'open' to 'resolved'
Migrated from rt.perl.org#117289 (status was 'resolved')
Searchable as RT117289$