#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