B
Bart Lateur
Tassilo said:Because it generally works.
But OTOH, ExtUtils::MakeMaker is pretty much broken.
Tassilo said:Because it generally works.
Ted Zlatanov ([email protected]) wrote on MMMDCXXXV September
MCMXCIII in <URL:%% I think most modules (99.99%?) use Makefile.PL, which currently
%% means having to use `make' but, because of what Perl can do
%% internally, could be replaced. Let's assume for the moment that
%% `make' is still useful for compiling modules with C code; I'm
%% talking about pure Perl modules. For those, "perl Makefile.PL;
%% make; make install" could be simply "perl Makefile.PL install" or
%% something similar.
No. Then you are not understanding 'make', which tries to do its
utter best not to create something that is already there.
%% You and Eric are saying it's no big deal
%% to install `make.' It's not a big deal for experienced users,
%% but at the very least it's a hassle for new Perl users on the
%% Windows platform.
That is not an argument. It would if Perl was the only software that
makes use of 'make', but the fast majority of software requires
'make' to build. The users of a Windows platform would be more
helped with getting 'make', than with Perl circumventing the use of
'make'.
But if you think there's a better way: code speaks more than words.
I missed the start of this thread but this reminds me of:
http://magnonel.guild.net/~schwern/talks/MakeMaker_Is_DOOMED/slides/
Anyway, as you yourself thoughtfully pointed out, people wanting to
install (most) CPAN modules can just use ppm or apt-get or rpm or
whatever and install them. This works for pure-Perl as well as XS
modules.
I think we've answered those questions so far: a) no. b) we don't
think so, but if you do, you're welcome to prove us wrong. And I'm
quite sincere in that; if you can come up with something that works
in all cases, that's great.
Go to it. Let us know how it goes.
As you seem to be the only person interested in having the code,
you're logically the best person to write it.
So submit a patch; if the author like it, no doubt it'll be
accepted.
That was really useful, thanks. It answered pretty much every
question I had.
[A complimentary Cc of this posting was sent to
Ted Zlatanov
That was really useful, thanks. It answered pretty much every
question I had.
While I too consider MakeMaker a broken architecture, this Module::Build
idea is much more broken (not even speaking about the faulty logic in
the presentation cited above).
The beauty of Makefile.PL user interface (as opposed to the - faulty -
packager's interface) is that it was shell-, OS-, filesystem-,
etc-independent. Now comes Build - and the invocation has the ./file
syntax, which is system-dependent!
Ilya Zakharevich said:[A complimentary Cc of this posting was sent to
Ted Zlatanov
....
The beauty of Makefile.PL user interface (as opposed to the - faulty -
packager's interface) is that it was shell-, OS-, filesystem-,
etc-independent. Now comes Build - and the invocation has the ./file
syntax, which is system-dependent!
Surely it could just say:
perl Build.PL
perl Build test
perl Build install
Ilya Zakharevich said:The beauty of Makefile.PL user interface (as opposed to the - faulty -
packager's interface) is that it was shell-, OS-, filesystem-,
etc-independent. Now comes Build - and the invocation has the ./file
syntax, which is system-dependent!
This problem might have been trivial to fix when Module::Build was
young - the fault is with trying to mimic MakeMaker's UI ;-) ;-(. But
judging by the reports, now Module::Build may be entrenched enough so
that its UI can't be changed.
IMO, one should have abandon `make' and `make test'-like commands at
all, doing the `make; make test' step by default during the `perl
FirstStep.PL' phase. If the finer control is needed, one should be
able to specify this by arguments on the FirstStep.PL line.
Tassilo v. Parseval said:However, there is Module::Build which will sooner or later replace
ExtUtils::MakeMaker. It no longer relies on make but instead produces a
framework that will obey to
perl Build.PL
./Build
./Build test
./Build install
The first line will produce a Perl script 'Build' that contains all the
functionality that was previously specified in Makefile.
Of course, such a change in the build process only makes sense when
other tools can deal with it. For instance, h2xs wont yet create a
module skeleton for Module::Build. I am not sure about CPAN.pm either.
Current release might already be able to deal with those modules, but
older ones certainly aren't.
Ted Zlatanov said:That's the fourth alternative to make and second make-replacement CPAN
module mentioned so far (Make being the other one). I hope a clear
winner emerges. My opinion is that the existing Makefile.PL has to be
migrated or interpreted seamlessly for CPAN installs, so replacing
ExtUtils::MakeMaker is harder than extending it given the number of
modules and authors.
There's also the documentation written, volumes and volumes of it in
soft- and hardcopy, that would have to be modified. I'd rather see
the existing Makefile.PL parsed than a new system replacing it.
I'm saying that if the module works so that executing Build.PL
creates a perl script called Build in the current directory (which is
implied by the "./Build test" command you mentioned) then after running
perl Build.PL you can just run "perl Build test" instead of "./Build test".
The only thing that matters with respect to the PATH and "perl Build test"
is that "perl" is in the PATH, which is implied by the execution of
"perl Build.PL" or even "perl Makefile.PL".
The command "perl Build test" tells perl to run the script in the file
"Build" in the current working directory and set @ARGV to be ('test').
Is there *any* platform on which this is not true?
Yes, but barely. And I hope people will be able to surmount this
obstacle and figure out how to run a perl script if they're installing
perl modules.
In order to ease the transition module authors may make from MakeMaker
to M::B, and in order to let people make distributions with both a
Makefile.PL and a Build.PL (which happens quite a lot, and might be
expected to happen basically forever), it is highly desirable that the
config/build/test process is very similar to MakeMaker's. Also, I
considered lots of alternative ways to set things up when M::B was
young, and I decided that many of MakeMaker's metaphors made a lot of
sense, so I didn't change them. This is one of the big ones I kept,
and I think that's been a good decision. It has, for example, enabled
the creation of a pass-through Makefile.PL and Makefile, helping
transitional compatibility with CPAN.pm
Simply because I can't see any reason why perl would want to do otherwise.
If there are such systems then replace "Build.PL" with "Setup.PL" and
"Build" with "Build.PL" or whatever. The actual names of the files
are pretty much irrelevant to me.
If there is no platform independant way of specifying run the perl
script "foo" and pass it the argument "bar", then I guess some sort
of english description (better than mine, hopefully) would need to
be used.
If there are a handful of wierdo architectures that are completely
different then examples of those can be used along with the
general case.
If you have no problem with "perl Makefile.PL" as instructions
then I can't see how some name other than "Makefile" can be
a problem.
Why would that ever change? perl5.8.0 still accepts ' as a package
seperator, why would backwards compatibility be broken so badly for
absolutely no gain whatsoever (as far as I can tell).
[A complimentary Cc of this posting was sent to
Sam Holden
Simply because I can't see any reason why perl would want to do otherwise.
If there are such systems then replace "Build.PL" with "Setup.PL" and
"Build" with "Build.PL" or whatever. The actual names of the files
are pretty much irrelevant to me.
Same for me - as far the files differ by more than extension. But
Module::Build does exactly this.
It is much easier to fix bugs/problems than document them.
This is not acceptable. I do not want my users to read 20-page README
just to find out how to install things on a non-broken system. Too
many Perl installations are broken; if non-broken ones give troubles
too, the whole idea of supporting modules becomes a nightmare...
See above.
Simple: suppose a filesystem does not allow files with empty extensions.
[A complimentary Cc of this posting was sent to Sam Holden
<[email protected]>:perl Setup.PL
perl Build.PL test
perl Build.PL install
is hardly 20 pages.
Would this be the case, great. However, I still have no idea why
the second line is needed... IMO, the default should be to do
config/build/test cycle; and it is better to keep install a
different command.
I don't think running tests should be a part of the config/build
process. It's not now.
Windows users have ActiveState
and that other distribution whose name I can never remember with
Apache + Perl.
Want to reply to this thread or ask your own question?
You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.