Beefy Boxes and Bandwidth Generously Provided by pair Networks
Don't ask to ask, just ask
 
PerlMonks  

Re: Sofware build tool in Perl (Perl super-make)

by dragonchild (Archbishop)
on May 21, 2008 at 15:51 UTC ( [id://687789]=note: print w/replies, xml ) Need Help??


in reply to Sofware build tool in Perl (Perl super-make)

What's wrong with make?

My criteria for good software:
  1. Does it work?
  2. Can someone else come in, make a change, and be reasonably certain no bugs were introduced?
  • Comment on Re: Sofware build tool in Perl (Perl super-make)

Replies are listed 'Best First'.
Re^2: Sofware build tool in Perl (Perl super-make)
by jeepj (Scribe) on May 23, 2008 at 08:12 UTC
    In fact, there are some points leading us to find something better than make :
    • dependencies are not easy to maintain in a makefile, mainly in C++ where the change of a class can lead to a lot of recompilation, and this is not easily maintainable with makefiles. I know that this kind of thing can be done with the GNU build system, but if we have to take some advanced tool, let's go for something really powerful and extensible
    • our component will use other components, which in turn use other components. For one version of our software, we need to define the version of sub-components to use, and this is easily done with something like Scons
    • a more advanced tool like Scons can grab automatically the source from CVS, which save us one manual step in the process. This is built-in in the tool.
    • a complex but extensible tool is always an investment for the future, as we don't know yet what specific steps will have to be done during the build of our soft, and having the power of Python (or Perl) to script some advanced build step will give us room for improvement.
      Are you sure you've actually studied make?
      • Dependencies are hard to maintain in any build system. For C++, GNU make can read the files and determine the dependency tree from the #include statements.
      • Using other sub-components, in the make world, would be using other makefiles. These are known as dependent makefiles and is a very common thing to do. Apache2, for example, requires APR. That, in turn, often requires neon. It's opensource for a reason.
      • make can also grab the source. Just create another task. (Why are you using CVS and not SVN/SVK/Git/Darcs?)
      • make can call out to other tools.
      Now, if you're absolutely set on hating make (which is dumb, imho), then take a look at Rake (Ruby's make). It, at least, is sane.

      My criteria for good software:
      1. Does it work?
      2. Can someone else come in, make a change, and be reasonably certain no bugs were introduced?

        ok, firstly I don't hate make, and it was my first choice before someone was proposing Scons (by the way, thanks for the "dumb"). There are alternatives to make, so why not looking at them before deciding what is the best choice for us ?

        Secondly, if make is so perfect, why are so many advanced building tools developed to replace make? Not only are they developed, but also widely used.

        To come back on dependencies, sometime looking at the include tree is not optimal, as some compilation unit will not require recompilation if a given include is modified, and of course some compilation unit will require recompilation even if no include was modified. I don't know for sure yet that Scons will allow us to manage this cases, but GNU make will not.

        CVS is the corporate choice for source management in my company. No choice

        make can call other tools, but why use other tools with make, if these tasks could be handled directly by the build tool. Each additional tool used has a cost, in term of license fee(if any), maintenance, learning and deployment

        To conclude, at first sight, Scons would allow us to have a more advanced build system, and I'm also looking at other solutions. make is one of them, but not the only one, that's why I'm looking at the wider possible choice of solutions. This isn't a hundreds line temporary project, this is an heavy and critical industry project, and I know by experience that a bad choice at the beginning of such a project could lead to years of nightmare.

        And thank's for Rake, I will also have a look at this one.

Re^2: Sofware build tool in Perl (Perl super-make)
by Anonymous Monk on May 22, 2008 at 17:04 UTC

    The most common complaints about Make I see are that it uses real tabs and that the syntax is a little cryptic. Neither of these hold any water though, so I continue to use it.

    For a longer list of plusses and minuses, a quick googling turned this up.

    Nice thing about Makefiles is that they act as managers of your other scripts that do the real work. And, of course, it's general, so you can use Makefiles for anything that involves steps that depend on eachother in a specific order.

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://687789]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others musing on the Monastery: (3)
As of 2024-04-24 18:11 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found