#755: 'make install-dev' assumes "modern" File::Path
----------------------+-----------------------------------------------------
 Reporter:  doughera  |       Owner:       
     Type:  bug       |      Status:  new  
 Priority:  normal    |   Milestone:       
Component:  install   |     Version:  1.2.0
 Severity:  medium    |    Keywords:       
     Lang:            |       Patch:       
 Platform:            |  
----------------------+-----------------------------------------------------

Comment(by jkeenan):

 This is a case where the version of a Perl 5 core module associated with
 the minimum version of Perl 5 we require for building Parrot is no longer
 officially supported!

 According to `corelist -a File::Path`, Perl 5.8.4 -- which we have
 designated as the minimum version for building Parrot -- shipped with
 File::Path v1.06.  But the oldest version of File::Path found on CPAN is
 2.04, which was the version that shipped with Perl 5.10.  The most recent
 version of File::Path is 2.07.

 Version 2.04, which is what I have locally, supports both the
 'traditional' File::Path::mkpath interface:
 {{{
           mkpath(['/foo/bar/baz', 'blurfl/quux'], 1, 0711);
 }}}
 as well as the 'modern' interface:
 {{{
            mkpath( 'foo/bar/baz', '/zug/zwang', {verbose => 1} );
 }}}
 The Parrot distribution contains multiple instances of each interface.  On
 June 6, however, contributor mikehh reported that he was experiencing
 failures in ''t/tools/install_files.t'' and
 ''t/tools/install_dev_files.t'' -- failures that could be corrected if he
 switched from `mkpath` to `make_path`.  I couldn't locate any `make_path`
 function in File::Path 2.04.  mikehh said that he typically uses the most
 recent available versions of CPAN modules and that `make_path` was found
 in File::Path 2.07.

 Investigation showed that 2.07 no longer supports the 'traditional'
 interface.  The documentation of 'traditional' versus 'modern' found in
 2.04 has been removed and, AFAICT from skimming the source code, the code
 for the 'traditional' interface has been removed as well.  So when mikehh
 proposed a patch that would use `make_path`, I had to reject it because
 it's not even found in the version of File::Path shipped with Perl 5.10.
 I figured that it was time for ''lib/Parrot/Install.pm'' to move from the
 'traditional' interface to the 'modern', and that worked for both mikehh
 and myself.

 As per Andy's report, that doesn't work for any Perl installation that
 B<only> has File::Path 1.06.  Now, since I subsequently switched several
 instances of the 'traditional' interface to the (no-longer-quite-so)
 'modern' interface, if you only have 1.06 you should be getting failures
 in many places other than Parrot::Install (''e.g.,'' ''t/configure/*.t''
 or ''t/steps/*.t'').

 So if we use the version that comes with what we have designated as the
 minimum version of Perl 5 needed to build Parrot, we cause breakage for
 people who use the latest version from CPAN.  How should we proceed?

 kid51

-- 
Ticket URL: <https://trac.parrot.org/parrot/ticket/755#comment:1>
Parrot <https://trac.parrot.org/parrot/>
Parrot Development
_______________________________________________
parrot-tickets mailing list
[email protected]
http://lists.parrot.org/mailman/listinfo/parrot-tickets

Reply via email to