Le Jeu. Aoû. 20 14:50:13 2009, schwern@pobox.com a écrit :
Show quoted text> B) As the person running the packaging tool you can select what
> version of the
> software to run. For the least pain use the latest.
Upgrading EU::MM and installing M::B on HP-UX is painful.
Show quoted text> B1) MakeMaker's improved PPD support is relatively recent so you've
> already
> shown your willingness to manage versions of MB and MakeMaker.
I have since discovered PPM::Make which seems to be the right way to
create PPM packages. It extracts its information from META.yml.
Show quoted text> C) Using Makefile.PL emulation throws a THIRD packaging tool into the
> mix,
> Module::Build::Compat. Like all emulators it will never work quite
> right and
> we'll spend time chasing down bugs like this one. And then something
> in
> MakeMaker will change and it will fall out of sync. Emulation sucks.
>
>
> > See those slides of a talk I did at the French Perl Workshop for
> some
> environnement-hostile.pdf
>
> Sorry, I can't follow the French.
>
> From what I could follow from the code, the makepl_arg suggestion is a
> bit
> much.
I had to do this to upgrade EU::MM up to a version that supports
INSTALL_BASE.
Show quoted text> Instead, configure the CPAN shell to use INSTALL_BASE and
> install a new
> MakeMaker immediately. Then you're done. Also the INSTALLHTML stuff
> was
> never released (ActiveState does their own thing which I have no
> control over).
I had a module that used it. Don't remember which.
Show quoted text> 5.8.9 and 5.10.0 come with a recent enough MakeMaker that this is not
> an issue.
The HP-UX machines I'm using have 5.8.6 or 5.8.8.
Show quoted text> >> That said, why are you generating from the Makefile?
> >>
> >> In fact, I'd be in favor of stubbing out all the dist target
> emulation
> >> to
> >> avoid subtle bugs and us having to support it.
> >
> > What do you suggest instead?
> > Using some tools based on META.yml content?
> > Pointers to CPAN dists are welcome.
>
> The dist targets for MakeMaker and Module::Build are so similar the
> code to
> deal with both of them is trivial.
... when your universe is Unix.
Show quoted text> if( -e "Build.PL" ) {
> $config = "Build.PL";
> $cmd = "Build";
> }
> else {
> $config = "Makefile.PL";
> $cmd = "make";
> }
>
> system("perl $config");
> system("$cmd disttest");
> system("$cmd dist");
This does not work on Windows: No 'make' on ActivePerl, and
SrawberryPerl's make is 'dmake'.
Then you have to deal with argument escaping and so on.
CPAN::Shell->install() seems the right way, once you have configured
CPAN.pm manually. And it will break at the next upgrade (options added...).
Show quoted text> On the whole, I would rather spend effort making MakeMaker emulate
> Module::Build than the reverse.
It would be better. But too many distributions (and usually the most
critical ones) have custom make targets. Also Module::Install (which
uses EU::MM and even patches the generated Makefile) got some traction,
so it increases the problem.