Re^2: Module::Build users -- please use the "traditional" create_makefile_pl option (no AIX?)
by tye (Sage) on May 18, 2005 at 18:36 UTC
|
Module::Build didn't work on AIX? I thought a major point of Module::Build's approach was to do things in Perl where stuff "just works" across many platforms. I'm curious what they got wrong, as this seems to belie that justification.
Note that I've worked on AIX and realize that it is "strange" in ways that most other Unixes are not (well HP/UX can be very strange as well). I'm not jumping to the conclusion that this failure really does reflect badly on Module::Build, I'm just curious for more details (at which point I might jump to that conclusions or not).
| [reply] [Watch: Dir/Any] |
|
It didn't at the time (10/2003). The changes file says this was fixed in 0.22 (01/2004), which I think I noticed a month or two after that. It has this interesting comment...
AIX also massages some very naughty bits (MakeMaker macro variables)
in $Config{lddlflags} that should never have been put there, but
alas, they're there, so we find & resolve them.
My email at the time says these were getting passed to the linker without
being interpolated (during a 'make test' of Module::Build). So either
it's an AIX/perl issue or Module::Build was making assumptions it
shouldn't have. | [reply] [Watch: Dir/Any] [d/l] |
|
Module::Build didn't work on AIX? I thought a major point of Module::Build's approach was to do things in Perl where stuff "just works" across many platforms.
Its not Perl its XS and C compiling. Everybody's compilers work differently and everybody's systems have things in different places and everybody has slightly different things broken. And once you've figured that all out you need to try it again for the next older version. And the next. And the next. Its a nightmare.
MakeMaker has figured this out over the years but the result is a tangled mess of code. Ken has written ExtUtils::CBuilder and ExtUtils::ParseXS which is a modularization of the XS and C voodoo from MakeMaker but its slow going. Don't think of it so much as mining MakeMaker for information as painfully extracting precious gems and oils from tar sand.
FWIW both ExtUtils::CBuilder and ExtUtils::ParseXS (and its improved xsubpp) have just gone into 5.9.x today.
| [reply] [Watch: Dir/Any] |
|
| [reply] [Watch: Dir/Any] |
|
|
In getting CBuilder to work in the perl source tree, I had to compare parts of CBuilder with their MM equivalent, and I have to say there were gems that got left behind (or were added after CBuilder was started?). One in particular that I remember was the limited support for cross-compiling that makemaker has.
AIUI, the xsubpp isn't really improved: the code was just moved from a script to a module and the script now uses the module. From my perspective, the really significant impact of this is that xsubpp tests can now be written (but haven't yet been).
| [reply] [Watch: Dir/Any] |
|
Re^2: Module::Build users -- please use the "traditional" create_makefile_pl option
by adrianh (Chancellor) on May 20, 2005 at 13:57 UTC
|
I'd also suggest that until Module::Build is known to work on a lot of platforms (i.e. close to what the baseline perl supports) that authors supply an oldstyle Makefile.PL.
Which was exactly what perrin is suggesting. If you use the "traditional" create_makefile_pl option in M::B you'll get a normal Makefile.PL generated that doesn't depend on M::B.
| [reply] [Watch: Dir/Any] |
|
No, I'm probably not being clear enough. What I'm suggesting they do is supply a legacy Makefile.PL that works totally independant of having M::B installed at all. Even if it's named something else (e.g. Makefile.Legacy.PL) to keep it out of the way, that would be fine. In my case perhaps M::B would have worked to generate one with the "traditional" option -- I don't know. I didn't want to find out because it failed 'make test', I couldn't fix it, so I didn't trust it. In my current work environment I've found I need to be very conservative, so YMMV.
| [reply] [Watch: Dir/Any] |
|
No, I'm probably not being clear enough. What I'm suggesting they do is supply a legacy Makefile.PL that works totally independant of having M::B installed at all.
No, I'm probably not being clear enough :-)
The the "traditional" create_makefile_pl option in M::B produces a normal Makefile.PL file at distribution time that uses EU::MM. So the package you download from CPAN has a Makefile.PL that you can use without having M::B installed - and a Build.PL if you do have M::B installed.
Hopefully this makes some vague sort of sense :-)
| [reply] [Watch: Dir/Any] |
|