Skip Menu |

This queue is for tickets about the ExtUtils-Install CPAN distribution.

Report information
The Basics
Id: 6871
Status: resolved
Priority: 0/
Queue: ExtUtils-Install

People
Owner: yves [...] cpan.org
Requestors: stonyy [...] comcast.net
Cc:
AdminCc:

Bug Information
Severity: Critical
Broken in: (no value)
Fixed in: (no value)



Subject: PREFIX=blah Broken for install read .../.packlist
sirbarton /build/ExtUtils-MakeMaker-6.21# perl -v This is perl, v5.8.2 built for i686-linux Copyright 1987-2003, Larry Wall Perl may be copied only under the terms of either the Artistic License or the GNU General Public License, which may be found in the Perl 5 source kit. Complete documentation for Perl, including FAQ lists, should be found on this system using `man perl' or `perldoc perl'. If you have access to the Internet, point your browser at http://www.perl.com/, the Perl Home Page. sirbarton /build/ExtUtils-MakeMaker-6.21# uname -a Linux sirbarton 2.4.25-gentoo-r1 #2 Thu Apr 29 07:02:35 PDT 2004 i686 AMD Athlon(tm) XP 1800+ AuthenticAMD GNU/Linux To reproduce the code, make any Makefile.PL as follows: perl Makefile.PL PREFIX=`pwd` gmake gmake install gmake uninstall Now, for some strange reason, the normal uninstall targets are disabled, so I had to copy the following into my Makefile.PL (see bottom of message) and hit the target "amp_uninstall" which gave me: gmake -C Tk-MDI-0.2.1 amp_uninstall gmake[3]: Entering directory `/local/proj/abs/vhi/vhi-0.0.1/=build/src/Tk-MDI-0.2.1' /usr/bin/perl "-MExtUtils::Install" -e 'uninstall ("/local/proj/abs/vhi/vhi-0.0.1/=inst/lib/perl5/site_perl/5.8.2/i686-linux/auto/Tk/MDI/.packlist")' Cannot forceunlink /usr/lib/perl5/site_perl/5.8.2/Tk/MDI.pm: Permission denied at -e line 1 The problem is that install, output below, reads the wrong packlist: /usr/bin/perl "-MExtUtils::Command::MM" -e pod2man "--" --section=3 --perm_rw=644 \ MDI.pm blib/man3/Tk::MDI.3pm /bin/sh -c true /usr/bin/perl -MExtUtils::Install -e 'install({@ARGV}, '\''0'\'', 0, '\''0'\'');' \ read /usr/lib/perl5/site_perl/5.8.2/i686-linux/auto/Tk/MDI/.packlist \ write /local/proj/abs/vhi/vhi-0.0.1/=inst/lib/perl5/site_perl/5.8.2/i686-linux/auto/Tk/MDI/.packlist \ blib/lib /local/proj/abs/vhi/vhi-0.0.1/=inst/lib/perl5/site_perl/5.8.2 \ blib/arch /local/proj/abs/vhi/vhi-0.0.1/=inst/lib/perl5/site_perl/5.8.2/i686-linux \ blib/bin /local/proj/abs/vhi/vhi-0.0.1/=inst/bin \ blib/script /local/proj/abs/vhi/vhi-0.0.1/=inst/bin \ blib/man1 /local/proj/abs/vhi/vhi-0.0.1/=inst/share/man/man1 \ blib/man3 /local/proj/abs/vhi/vhi-0.0.1/=inst/share/man/man3 Installing /local/proj/abs/vhi/vhi-0.0.1/=inst/lib/perl5/site_perl/5.8.2/Tk/MDI.pm Installing /local/proj/abs/vhi/vhi-0.0.1/=inst/share/man/man3/Tk::MDI.3pm Writing /local/proj/abs/vhi/vhi-0.0.1/=inst/lib/perl5/site_perl/5.8.2/i686-linux/auto/Tk/MDI/.packlist /usr/bin/perl "-MExtUtils::Command::MM" -e warn_if_old_packlist \ /usr/lib/perl5/5.8.2/i686-linux/auto/Tk/MDI echo Appending installation info to /local/proj/abs/vhi/vhi-0.0.1/=inst/lib/perl5/5.8.2/i686-linux/perllocal.pod Appending installation info to /local/proj/abs/vhi/vhi-0.0.1/=inst/lib/perl5/5.8.2/i686-linux/perllocal.pod /usr/bin/perl "-MExtUtils::Command" -e mkpath /local/proj/abs/vhi/vhi-0.0.1/=inst/lib/perl5/5.8.2/i686-linux /usr/bin/perl "-MExtUtils::Command::MM" -e perllocal_install \ "Module" "Tk::MDI" \ "installed into" "/local/proj/abs/vhi/vhi-0.0.1/=inst/lib/perl5/site_perl/5.8.2" \ LINKTYPE "dynamic" \ VERSION "0.2.1" \ EXE_FILES "" \ Show quoted text
>> /local/proj/abs/vhi/vhi-0.0.1/=inst/lib/perl5/5.8.2/i686-linux/perllocal.pod
Linux(sirbarton):/local/proj/abs/vhi/vhi-0.0.1/=build/src/Tk-MDI-0.2.1> Note that the .packlist following "read" is wrong. ----Add to Makefile.PL------ sub MY::postamble { return q? amp_uninstall :: amp_uninstall_from_$(INSTALLDIRS)dirs amp_uninstall_from_perldirs :: $(PERLRUN) "-MExtUtils::Install" -e 'uninstall ("$(DESTINSTALLARCHLIB)/auto/$(FULLEXT)/.packlist")' if test ! -s $(DESTINSTALLARCHLIB)/auto/$(FULLEXT)/.packlist && \ test -f $(DESTINSTALLARCHLIB)/auto/$(FULLEXT)/.packlist ; then\ rm -f $(DESTINSTALLARCHLIB)/auto/$(FULLEXT)/.packlist; \ fi amp_uninstall_from_sitedirs :: $(PERLRUN) "-MExtUtils::Install" -e 'uninstall ("$(DESTINSTALLSITEARCH)/auto/$(FULLEXT)/.packlist")' if test ! -s $(DESTINSTALLSITEARCH)/auto/$(FULLEXT)/.packlist && \ test -f $(DESTINSTALLSITEARCH)/auto/$(FULLEXT)/.packlist ; then\ rm -f $(DESTINSTALLSITEARCH)/auto/$(FULLEXT)/.packlist; \ fi amp_uninstall_from_vendordirs :: $(PERLRUN) "-MExtUtils::Install" -e 'uninstall ("$(DESTINSTALLVENDORARCH)/auto/$(FULLEXT)/.packlist")' if test ! -s $(DESTINSTALLVENDORARCH)/auto/$(FULLEXT)/.packlist && \ test -f $(DESTINSTALLVENDORARCH)/auto/$(FULLEXT)/.packlist ; then\ rm -f $(DESTINSTALLVENDORARCH)/auto/$(FULLEXT)/.packlist; \ fi ?; }
Show quoted text
> To reproduce the code, make any Makefile.PL as follows: > > perl Makefile.PL PREFIX=`pwd` > gmake > gmake install > gmake uninstall > > Now, for some strange reason, the normal uninstall targets are > disabled,
here's why, from ExtUtils::Installed->new sub new { my ($class) = @_; $class = ref($class) || $class; my $self = {}; my $archlib = $Config{archlibexp}; my $sitearch = $Config{sitearchexp}; # Read the module packlists my $sub = sub { # Only process module .packlists return if $_ ne ".packlist" || $File::Find::dir eq $archlib; [.....] # Read the .packlist $self->{$module}{packlist} = ExtUtils::Packlist->new($File::Find::name); }; my(@dirs) = grep { -e } ($archlib, $sitearch); find($sub, @dirs) if @dirs; [.....] } ie, it ignores all directories (and therefor packlists) that aren't in your 'normal' archlib and sitelib... so any custom targtets will never be found, and never be able to uninstall a bit of an annoying bug =/
http://www.makemaker.org/wiki/index.cgi?ModulesForSale ExtUtils::Installed is due to be moved out of the MakeMaker distribution. I'll leave this bug for whomever winds up maintaining that module.
On Mon Aug 23 12:13:18 2004, KANE wrote: Show quoted text
> ie, it ignores all directories (and therefor packlists) that aren't in > your 'normal' archlib and > sitelib... so any custom targtets will never be found, and never be > able to uninstall > > a bit of an annoying bug =/
For the record, the latest release 1.41_02, does not fix this issue. Mostly because it still insists on finding the .packlist file in the perl wide installation directory, unless you give a whole new $Config hash. Also, $PERL5LIB is checked for include paths, but not @INC, which is just painful...
On Sun Feb 11 05:05:11 2007, KANE wrote: Show quoted text
> On Mon Aug 23 12:13:18 2004, KANE wrote:
> > ie, it ignores all directories (and therefor packlists) that aren't in > > your 'normal' archlib and > > sitelib... so any custom targtets will never be found, and never be > > able to uninstall > > > > a bit of an annoying bug =/
> > For the record, the latest release 1.41_02, does not fix this issue. > > Mostly because it still insists on finding the .packlist file in the perl > wide installation directory, unless you give a whole new $Config hash. > > Also, $PERL5LIB is checked for include paths, but not @INC, which > is just painful... >
Have you checked 1.41_03 or later yet? Ive uploaded 1.41_04 today. Yves
Im closing this as resolved in 1.41_03. Please reply to this mail if you know this to not be the case.