Hi imacat,
If you're interested in fixing this, please join the module-build list
or follow it on nntp.
# from imacat
# on Tuesday 15 January 2008 10:50:
> Some (not all) Module::Build users supply a Makefile.PL that:
>
> (a) Raise a CPAN shell that install Module::Build.
> (b) Use Module::Build to install itself.
>
> There are 2 problems with this setting. For a non-root user that
>want to install to their home directory, having their CPAN shell with:
>
>makepl_arg => "INSTALLDIRS=/home/jenny/perl"
>mbuild_arg => "installdirs=/home/jenny/perl"
>(or for CPANPLUS,
>makemakerflags => "INSTALLDIRS=/home/jenny/perl"
>buildflags => "installdirs=/home/jenny/perl")
>
> 1. The (a) won't work. The raised CPAN shell does not get the
>INSTALLDIRS or installdirs. It will try to install into the system
>library directories and fail. In that case, that strange Makefile.PL
>will enter an endless loop retrying to install Module::Build again and
>again.
Why doesn't the spawned cpan shell get these variables?
> 2. The (b) won't work, too. Module::Build does not obtain
>"installdirs=/home/jenny/perl", but "INSTALLDIRS=/home/jenny/perl".
> It will try to install into the system library directories and fail,
> too.
This sounds like a simple extension of "(a) won't work".
> As far as I know, the CPAN and CPANPLUS shells both assume
>Makefile.PL is for ExtUtils::MakeMaker, and Build.PL is for
>Module::Build. Therefore, providing Makefile.PL that runs
> Module::Build but not ExtUtils::MakeMaker should be considered a
> mistake.
No, this is a compatibility layer. It still generates a Makefile and
should honor the EU::MM interface. It just runs Build.PL via that
Makefile.
> However, there seems to be a lot of authors supplying that same
>Makefile.PL. I do not know why. As what I read from the
> Module::Build documentation, though little, I did not see such
> suggestion anywhere. If someone can point out the source of such
> Makefile.PL, maybe this issue can be solved in a more efficient way.
It is an option to generate this as part of './Build dist'. Patches
need to go to module-build.
I think it would help a ton if you could create a script (or howto) that
creates an appropriate simulation environment with debootstrap and
dchroot (e.g. creates a stock debian etch.) IIRC, a stock debian etch
illustrates some of the problem (though perhaps doesn't tickle this
specific case because their core/site config is more sane than some.)
I'm also curious about how your CPAN got configured with "mbuild_arg"
and such parameters without installing Module::Build first. What is
your 'prefer_installer' set to?
Note that we've been over this compatibility issue multiple times and
never found an adequate solution that doesn't involve a time machine.
The new CPAN.pm supports configure_requires, which should eventually
eliminate this issue, but that means you need the new CPAN.pm, etc.
--Eric
--
Those who cannot remember the past are condemned to repeat it.
--George Santayana
---------------------------------------------------
http://scratchcomputing.com
---------------------------------------------------