in reply to Re: Why Module::Build?
in thread Why Module::Build?

People keep saying that there are all sorts of different make(1) programs out there and different command line syntax and whatnot, but in all the stuff I read about Perl and all the places I teach and all the people I work for, this has never been an issue.

Absence of evidence is not evidence of absence :-)

Different incompatible make's, platforms without make, platforms and installations where PREFIX doesn't work properly are problems I've hit fairly often.

Before Module::Build I wasted weeks sorting out installation problems on these boxes. Getting appropriate versions of make installed. Tweaking ghastly conditional scripts to plonk the appropriate make syntax for the appropriate box. Hitting my head against the wall again and again as my users complained that the installation had broken again on the fardling VMS box.

I'd actually started writing my own pure-perl replacement for EU::MM - but then I found Module::Build.

Module::Build solved those problems for me. I like Module::Build. My clients like Module::Build. When I've used Module::Build it has "just worked". On Windows boxes. On VMS boxes. On Solaris boxes. On SunOS boxes. On Linux boxes.

I understand this has not been everybody else's experience - but I've used it a lot and have only occasionally hit problems that were down to M::B, and when I have it's been fixed in developer release before I got a chance to report it.

A lot of those features sound like niceties for developers, whereas users really don't care.

My users care because I can get installations to them that work on all their platforms a lot faster than when I was tweaking make files. No more of those "it's suddenly stopped working on the VMS box" two weeks after we thought we'd fixed the last bug.

Arguments against MakeMaker aren't arguments for Module::Build.

That depends on the argument. If I have a problem that EU::MM solves only with a great deal of pain and effort, and M::B solves trivially - then that's a darn good argument for M::B in my eyes.

I persoanlly have yet to see, in any discussion here or elsewhere, anything that would make me want to use Module::Build. You say that its easier, but I didn't think thihngs were hard before.

Then I think you've been lucky :-)

You're right EU::MM works most of the time in most places - because nice people like schwern spend an insane amount of time on it's evil internals. But where it doesn't work EU::MM is a complete and utter git to fix. When you need to make those make files do something a little bit different it's a git to implement when you have a half dozen mutually incompatable versions of make to deal with. Unfortunately there isn't a simple fix since the reason it's a git is its make based architecture. The EU::MM internals just scare me!

I'm not saying that people shouldn't use Module::Build, but I also don't think a small group should try to force it on everyone else.

That's the thing that I'm just not understanding. I'm not seeing anybody trying to force stuff on people.

Some people had problems with EU::MM. Some people came up with a possible solution with M::B. Some people (like me) found M::B solved the problems they had and used it.

I guess I did "force" the people using the application to use M::B - but they didn't mind since it meant that all their hard to diagnose time wasting installation problems just went away. I can't see that as a bad thing.

Replies are listed 'Best First'.
Re^3: Why Module::Build?
by brian_d_foy (Abbot) on May 20, 2005 at 16:56 UTC

    I'd be interested to listened to what specific problems you ran into on VMS. I agree the absence of evidence is not evidence of absence, but when people tell me they have problems and I ask for specifics, they don't give them. People have problems with a lot of things, and I try to find out how they are doing things and why they are having the problems. Sometimes the problem is something else.

    I don't credit schwern with the success of MakeMaker I've seen because a lot of the people I have to deal with use versions he wasn't involved in, and I stick to the versions that came with a Perl (rather than the in-between releases).

    I don't have a problem with you or your users using Module::Build, and if it works for you that's great. However, sentiments like "MakeMaker must die!" has nothing to do with the choice you were able to make.

    --
    brian d foy <brian@stonehenge.com>
      I'd be interested to listened to what specific problems you ran into on VMS

      VMS wasn't drastically worse than the other operating systems, but problems usually showed up there later since they had a longer cycle between installs. It was some time ago but the VMS specific problems that I remember included:

      • Continually forgetting the nicetext calls causing problems with colon escaping.
      • Forgetting spaces around the separators between source and target.
      • There was some problem with cleanup not removing all versions of a file.
      • prefixify was ignoring some config settings. I'm pretty sure that was an EU::MM bug though.
      • There was a bug with the version of mmk on one of the boxes. For the life of me I can't remember what, but an upgrade fixed the problem.
      • Had to deal with mmk updating the target when the source file had the same timestamp

      Hopefully this gives you a feel for some of the problems I encountered. Of course they can all be overcome with effort - but I'd prefer expend my effort on writing the application rather than having to deal with N different platform/make/shell combinations that I cannot easily control.

      I don't credit schwern with the success of MakeMaker I've seen because a lot of the people I have to deal with use versions he wasn't involved in, and I stick to the versions that came with a Perl (rather than the in-between releases).

      I wasn't trying to give schwern sole credit! He was just the first name that popped into my head since he's the current maintainer. Obviously everybody who has spent time getting EU::MM to work as well as it does at the moment is owed a huge debt of gratitude.

      However EU::MM is, IMHO, fiendishly complicated and hard to tweak/extend. Most of the reason it's fiendishly complicated and hard to extend as far as I can see is it's reliance on various external make tools.

      I don't have a problem with you or your users using Module::Build, and if it works for you that's great. However, sentiments like "MakeMaker must die!" has nothing to do with the choice you were able to make.

      I take it that you're talking about the MakeMaker is Doomed talk? I just wish I'd read it before I spent weeks of my time messing around with EU::MM:-)

      Okay - I can see your point. It's ranty in places. But when extending the default Perl build system involves doing such evil things as doing s/// on make file fragments I think a little ranting is warranted.

Re^3: Why Module::Build?
by Anonymous Monk on May 20, 2005 at 12:41 UTC
    That's the thing that I'm just not understanding. I'm not seeing anybody trying to force stuff on people.
    Then you're not looking hard enough :) From the beginning of Module::Build that has been its mission. Not when it's shiny, users will flock, but cram it down their throats, then get them to do it to others
      Then you're not looking hard enough :) From the beginning of Module::Build that has been its mission. Not when it's shiny, users will flock, but cram it down their throats, then get them to do it to others

      I've looked pretty hard because people keep saying this - but I've yet to see any evidence. Hell Ken's said that EU::MM isn't going away. Hardly a sign of somebody trying to force everybody to use M::B :-)

      What I do see is lots of people shouting past each other for no good reason. A little bit of the Charity Principle is needed.

        See the old Module::Build::Compat. Scan for Scenarios, and read what his preferred Scenario was. (Do not use Module::Build::Compat. Include instructions in the README telling people to download and install Module::Build by hand.)

        That was the official last word for years. And remained that way through many rounds of complaints. I'm not sure what changed his mind in the end, but I doubt that it was me. And until I see something to convince me that he really has changed, my impression of Ken will remain strongly flavoured by this episode.