This is more of a note to self than an announcement.
cpanminus 1.3 will be released soon, with just one fix - it will disable the --unint-shadows
option by default if your perl is newer than 5.12.
Uninstalling shadow module files has been only necessary when you upgrade core modules that gets installed to 'site' library path, or upgrade modules that once has been implemented in XS but switched to pure perl. Because perl prior to 5.12 had its perl library path before site_perl, you have to remove those shadows in perl path, so that the updated one can be picked up.
Perl 5.12 fixed this problem by reorganizing the library include path: site_perl path now comes before the core perl path, so you actually don't need to remove the shadows. Removing those files now do more harm than good, with the awesome cpanm's -L (--local-lib-contained) option, since now you have one module in core 'perl' directory while those dependencies are installed into 'site' - so when you try to isolate perl's "core-only" perl environment, you have a broken installation such as Module::Build.
Disabling uninst-shadows is not a complete solution to this either. This keeps the copy of modules that come with perl in 'perl' directory, while modules that get installed into 'perl' still get updated inside 'perl', which makes it hard for cpanm -L
to work properly.
We may need to be able to have a way to isolate the "virgin perl" library path by probably copying the files once you install a fresh perl with tools like perlbrew.
The alternative is to not use lib::core::only as a way to figure out the core module dependency, and instead use Module::CoreList as a dictionary, which has the benefit of being able to say "installs non-core modules for 5.8.x" even if you build on, say, perl 5.13 which has more core modules than previous versions.
Recent Comments