moocow has asked for the wisdom of the Perl Monks concerning the following question:
greetings monks,
I've run into a hairy situation involving module versioning, ExtUtils::MakeMaker, and cpantesters about which I'd greatly appreciate some advice.
The situation:
I have several modules on CPAN, some of which depend on others. In particular, PDL::Ngrams uses PDL::VectorValued both at runtime and compile-time macros. Both of these modules are PDL packages using (generated) XS via PDL::PP and requiring a current and common version of PDL installed (for compiling & linking).
Desiderata:
The Problem:
cpan smokers choke: systems reporting near-identical configurations aren't testing identically; compare e.g. this PASS report with this FAIL. Both systems report themselves as "perl v5.22.0, GNU/Linux, 3.16.0-4-amd64, x86_64-linux-thread-multi", both running PDL-2.014, yet the one fails with a "PDL::VectorValued::Utils needs to be recompiled against the newly installed PDL" message during testing, while the other succeeds.
The error message is quite probably correct and would be helpful to a human: I'm assuming the FAILing smoker's machine has an old version of PDL::VectorValued installed which didn't get re-compiled when PDL-2.014 was released, built, and tested on the smoker. The inconsistency didn't get caught when evaluating PDL-Ngrams/Makefile.PL because its PREREQ_PM specifies the PDL-free PDL::VectorValued::Version as the dependency target. Uploading a new version of PDL::VectorValued whenever a new PDL version is released would probably trick smokers into testing with a consistent setup, but shouldn't be necessary since in this case (as in most others to date), no PDL::VectorValued code changes were required for the new PDL release.
A (suboptimal) workaround:
After tearing out some hair and posting to the pdl-devel list, I followed a suggestion offered there to manually check for a current "safe" version of PDL::VectorValued in PDL-Ngrams/Makefile.PL myself. This results in "UNKNOWN" reports from the cpan smokers, which is preferable to "FAIL", but still pretty unsatisfying. I'm unsure whether "NA" would be any better, since this situation doesn't seem to jive with the canonical conditions for either of those categories.
The wisdom I seek:
Can anyone suggest a configuration which would allow me to realize desiderata (1)-(3) in a manner which is more palatable to CPAN smokers than the current hacks? I suppose I can live without $PDL::VectorValued::Dev::VERSION for desideratum (1) if need be, but I'd like to avoid another hack (autoconf-style global macro replacement or some such) if possible, especially if it won't fix the bogus cpantesters reports. Alternately, is there an accepted procedure for this sort of issue? I've turned up similar questions in the context of linking to third-party libraries, but this case is "only" perl (XS) modules.
marmosets,
Bryan / moocow
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re: cpan smokers, PREREQ_PM, and PDL dependency
by Corion (Patriarch) on Nov 19, 2015 at 15:10 UTC | |
by toolic (Bishop) on Nov 19, 2015 at 17:33 UTC | |
by Corion (Patriarch) on Nov 19, 2015 at 17:53 UTC | |
by toolic (Bishop) on Nov 19, 2015 at 18:01 UTC | |
by choroba (Cardinal) on Nov 19, 2015 at 17:50 UTC | |
by Anonymous Monk on Nov 19, 2015 at 16:14 UTC | |
by stevieb (Canon) on Nov 19, 2015 at 16:58 UTC | |
by moocow (Acolyte) on Nov 19, 2015 at 16:15 UTC |