What's the most sane approach to circular dist dependencies when using things like Module::Install 'features'?
I just moved Handel to use M::I last night, and added H::Storage::RDBO as an optional feature. Of course, the H::Storage::RDBO dist has Handel a a prereq. Now I have a nice lovely circular dependency.
What's the common practice on dealing with this issue? Do I just remove Handel from the prereqs listead in H::S::RDBOs Makefile?
Can't say that I've ever had to tackle this before.
No circular deps, honest. (Score:1)
Or merge the two dists so they come simultaneously.
Re: (Score:1)
If something is an 'optional feature', it needs to be treated like 'install this afterwords' rather than 'this is a prereq'...because, it isn't a prereq.
Re: (Score:1)
It is a toolchain issue alright, but installing “optional feature” modules afterwards would be a mistake, because then the tests for them would never get run. Rather, what you want is for the toolchain to be able to figure out that when distro A recommends distro B and distro B depends on distro A, then distro B can be installed afterwards. Whereas if distro A recommends distro B but distro B does not depend – directly or indirectly – depend on distro A, then distro B needs to be ins
Re: (Score:1)
I'm not sure that's always true either. The tests for the optional additional 'features' are in that features dists, not the original dist. NO reason they won't be run.
Definitely seems like a disconnect on some level. Maybe if the code wasn't actually named 'feature' I wouldn't care so much.
Re: (Score:1)
No, that’s not what I meant. If distro A has an optional feature that requires distro B, then installing B after A means that A’s tests for the optional feature will never be run.
Non Issue (Score:1)
The trick is to detect the circular dependency and take the appropriate action.
In CPANPLUS' case, we add the path to one module's extract dir to @INC, then build & install the other, reset @INC, then build the first.
* Where 'non-issue' holds true if at least 1 of the 2 dependencies is pure perl