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

Report information
The Basics
Id:
6871
Status:
resolved
Priority:
Low/Low

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

BugTracker
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.


This service runs on Request Tracker, is sponsored by The Perl Foundation, and maintained by Best Practical Solutions.

Please report any issues with rt.cpan.org to rt-cpan-admin@bestpractical.com.