Opened 14 years ago
Closed 14 years ago
#28485 closed defect (fixed)
conflict between perl5 and p5-module-corelist
Reported by: | mas@… | Owned by: | narf_tm@… |
---|---|---|---|
Priority: | Normal | Milestone: | |
Component: | ports | Version: | 1.9.2 |
Keywords: | Cc: | roberto@…, jacobgodserv@…, drkp (Dan Ports), vinc17@…, su-v, ghosthound, MarcusCalhoun-Lopez (Marcus Calhoun-Lopez), pboe@…, pixilla (Bradley Giesbrecht), dreamind@…, jpo@… | |
Port: | perl5 p5-ipc-cmd p5-module-load-conditional p5-module-corelist |
Description (last modified by mas@…)
r76301 has added a dependency on p5-ipc-cmd to p5-extutils-cbuilder. p5-ipc-cmd in turn depends on p5-module-corelist. And p5-module-corelist conflicts with perl5, as both p5-module-corelist and perl5 provide $prefix/bin/corelist.
This breaks at least the following modules: p5-module-build, p5-sub-uplevel, p5-test-exception, p5-carp-clan, p5-bit-vector, p5-date-calc, p5-date-holidays-de.
Attachments (1)
Change History (25)
comment:1 Changed 14 years ago by roberto@…
Cc: | roberto@… added |
---|
comment:7 Changed 14 years ago by mas@…
r76485 makes perl5.12 the default. But even after manual removal of all perl5 @5.8* and perl5.8 ports, the perl5 package itself, now @5.12.3_0+perl5_12, still provides $prefix/bin/corelist. (You can check yourself using "port contents perl5|grep corelist" -- does this result in no output on your system? What output do you get for "port provides /opt/local/bin/corelist"?)
In other words, r76485 does not fix this for me, sorry.
comment:8 Changed 14 years ago by mas@…
@narf_tm and @ricci: What's the rationale for p5-module-corelist? Under what circumstances do you get a perl5 installation without Module::Corelist, thus requiring p5-module-corelist?
What I'm trying to get at is this: All p5 modules depend on perl5, so they already get Module::Corelist. Can we not simply get rid of p5-module-corelist altogether? Why do we need a separate package for it?
comment:9 Changed 14 years ago by narf_tm@…
ExtUtils::CBuilder requires IPC::Cmd. IPC::Cmd requires Module::Load::Conditional. Module::Load::Conditional 0.44 requires at least Module::CoreList 2.22. This is newer than the Module::CoreList that is included with Perl 5.8.
comment:10 Changed 14 years ago by mas@…
And is there a way to make this work in MacPorts? As it is, p5-module-corelist and perl5 (no matter what version) conflict.
comment:11 follow-up: 12 Changed 14 years ago by jmroot (Joshua Root)
Cc: | ricci@… added |
---|
It's really easy to fix this kind of conflict with the new version of perl5. Just remove the offending binary from perl5/files/binList.
@mas: I believe the idea is that p5-module-corelist can be updated independently of perl and will be a newer version than that bundled with older perl releases.
comment:12 Changed 14 years ago by roberto@…
Replying to jmr@…:
It's really easy to fix this kind of conflict with the new version of perl5. Just remove the offending binary from perl5/files/binList.
Can you explain how this is done? I too am now affected by the conflict.
comment:13 Changed 14 years ago by ghosthound
If you want to remove corelist from the perl5 install:
pushd `port dir perl5` sudo vi files/binList (or use your favorite editor) remove the 'corelist' line re-install the perl5 port
*or* you can just do:
sudo port -f install p5-module-corelist
I'm a bit concerned about stripping things out of the perl5 port - what happens if something expects, say, corelist to be there and doesn't depend on p5-module-corelist? We've got another breakage that has to be dealt with. That may be the right way to go, and just add additional dependencies to other ports, maybe its not though.
comment:14 Changed 14 years ago by jmroot (Joshua Root)
Leaving the conflict isn't a workable option. Dependencies will have to be added where needed.
comment:15 Changed 14 years ago by mas@…
Cc: | mcalhoun@… added |
---|---|
Port: | perl5 added |
Summary: | p5-extutils-cbuilder @0.280202 update breaks other perl modules → conflict between perl5 and p5-module-corelist |
Changed 14 years ago by outis
Attachment: | p5-module-load-conditional.patch added |
---|
replace port dependency on p5-module-corelist with path dependency on corelist
comment:19 Changed 14 years ago by outis
Above attachment is one potential solution: replace the port dependency on p5-module-corelist (port:p5-module-corelis
t) with a path dependency on the corelist executable (path:bin/corelist:p5-module-corelist
). Only if there isn't a corelist executable will an attempt to install p5-module-corelist be made.
comment:20 Changed 14 years ago by narf_tm@…
How does this help? The sole purpose this port exists is to replace the corelist version that is included with perl because some modules need a newer version.
comment:21 Changed 14 years ago by outis
It's a short-term, stopgap measure rather than a long term, optimal solution. With the patch, the dependent ports wil install and update, which they don't do now. Perl 5.12.3 provides Module::Corelist 2.43, which is new enough for Module::Load::Conditional 0.44.
comment:22 Changed 14 years ago by mas@…
Description: | modified (diff) |
---|---|
Port: | p5-module-load-conditional added; p5-extutils-cbuilder removed |
(Just updated the description: with the new perl5 port, corelist is installed by perl5. The problem still persists, no matter whether perl 5.8, 5.10 or 5.12 are installed.)
Do I get this right? At the moment, trying to make things compatible with perl 5.8 breaks them for *all* versions of perl. Not good.
IOW, if perl 5.12 is installed (as is the default now), the dependency for p5-module-load-conditional is satisfied by simply having the perl5 port installed. p5-module-load-conditional really only requires p5-module-corelist (which, however, will still conflict with perl5) if perl 5.8 is selected.
So would a possible short-term intervention be to change the p5-module-load-conditional port to only depend on p5-module-corelist in a variant called perl5_8? Things would still be broken, but at least not for everybody, but only for those still requiring perl 5.8.
In the long term, I agree with ricci: Short of dropping support for perl 5.8, the "right" solution would be to remove corelist from the perl5 port and to add a dependency on p5-module-corelist to all ports needing it. Identifying those might be a daunting task.
comment:24 Changed 14 years ago by jmroot (Joshua Root)
Resolution: | → fixed |
---|---|
Status: | new → closed |
Cc Me!