develooper Front page | perl.perl5.porters | Postings from May 2013

[perl #78066] The commit e55c0a82 for #59650 (File::Copy & objects) fails on cygwin

From:
James E Keenan via RT
Date:
May 26, 2013 16:47
Subject:
[perl #78066] The commit e55c0a82 for #59650 (File::Copy & objects) fails on cygwin
Message ID:
rt-3.6.HEAD-2650-1369586821-1804.78066-15-0@perl.org
On Sun Sep 26 13:37:36 2010, sprout wrote:
> I found this message inside [perl #59650]. It is a separate issue, so
> it gets its own ticket.
> 
> On Sun Jan 17 06:14:35 2010, rurban wrote:
> > The commit e55c0a82 for
> > [perl #59650] File::Copy does not handle file objects sanely
> > Suggested change modified to cope with the hoop-jumping needed to
> keep
> > File::Copy working whilst bootstrapping the core build.
> >
> > which added the lines:
> >
> > # During perl build, we need File::Copy but Scalar::Util might not
> be
> > built yet
> > # And then we need these games to avoid loading overload, as that
> will
> > # confuse miniperl during the bootstrap of perl.
> > my $Scalar_Util_loaded = eval q{ require Scalar::Util; require
> overload;
> > 1 };
> >
> > fails on cygwin since about 5.11.3 with
> >
> > ../../miniperl Makefile.PL INSTALLDIRS=perl INSTALLMAN1DIR=none
> > INSTALLMAN3DIR=none PERL_CORE=1
> LIBPERL_A=cygperl5_11_3d@b595cd4b.dll
> > Importing PAUSE public key into your GnuPG keychain... done!
> > (You may wish to trust it locally with 'gpg --lsign-key 450F89EC')
> > Attempt to reload Scalar/Util.pm aborted.
> > Compilation failed in require at ../../lib/overload.pm line 96.
> > 65280 from cpan/CPAN's Makefile.PL at make_ext.pl line 390.
> >
> > Scalar::Util is required by CPAN even if it cannot be loaded at
> > bootstrap.
> >
> > I've instrumented the pp_require stores into %INC.
> >
> > Scalar/Utils.pm is dynamically eval-loaded by:
> >
> > ../../lib/File/Copy.pm:18
> > ../../lib/IO/Compress/Base/Common.pm:8
> > ../../lib/File/Find.pm:1345
> > Makefile.PL:118 (as interesting_module)
> > ../../lib/overload.pm:96
> >
> > but I dont see where it is stored into %INC to avoid the recursion
> failure.
> >
> > (492:../../lib/File/Copy.pm:18)	const(PV(" require Scalar::Util;
> require
> > overload; 1 "\0))
> > (492:../../lib/File/Copy.pm:18)	entereval
> > (492:(eval 18):0)	nextstate
> > (492:(eval 18):1)	const(PV("Scalar/Util.pm"\0))
> > (492:(eval 18):1)	require
> > (492:(eval 18):1)	pp_require "Scalar/Util.pm"
> > (492:(eval 18):1)	pp_require store in INC "Scalar/Util.pm"
> (!hook_sv)
> > ..
> > (492:../../lib/overload.pm:96)	require
> > (492:../../lib/overload.pm:96)	pp_require "Scalar/Util.pm"
> > SV = NULL(0x0) at 0x26e8840
> >   REFCNT = 2147479514
> >   FLAGS = (READONLY)
> > Attempt to reload Scalar/Util.pm aborted.
> > Compilation failed in require at ../../lib/overload.pm line 96.
> >
> > Scalar::Util loads Scalar::Util::PP if the XS is not loaded.
> > But Scalar::Util::PP requires B::svref_2object, which is not
> available
> > at miniperl bootstrap. So loading Scalar::Util will always fail on
> > miniperl. We should get rid of B::svref_2object in PP to be able to
> > bootstrap miniperl sanely
> >
> > This is the fix:
> >
> > diff --git a/make_ext.pl b/make_ext.pl
> > index de26d84..d31692a 100644
> > --- a/make_ext.pl
> > +++ b/make_ext.pl
> > @@ -34,6 +34,7 @@ my @toolchain = qw(cpan/AutoLoader/lib
> >  		   cpan/ExtUtils-MakeMaker/lib
> >  		   cpan/ExtUtils-Manifest/lib
> >  		   cpan/File-Path/lib
> > +		   cpan/List-Util/lib
> >  		   );
> >
> >  # Used only in ExtUtils::Liblist::Kid::_win32_ext()
> 
> 


rurban:

Is this still an issue with File::Copy on Cygwin, i.e., with Perl 5.18?

Thank you very much.
Jim Keenan

---
via perlbug:  queue: perl5 status: new
https://rt.perl.org:443/rt3/Ticket/Display.html?id=78066



nntp.perl.org: Perl Programming lists via nntp and http.
Comments to Ask Bjørn Hansen at ask@perl.org | Group listing | About