Beefy Boxes and Bandwidth Generously Provided by pair Networks
There's more than one way to do things
 
PerlMonks  

Sofware build tool in Perl (Perl super-make)

by jeepj (Scribe)
on May 21, 2008 at 15:37 UTC ( #687787=perlquestion: print w/ replies, xml ) Need Help??
jeepj has asked for the wisdom of the Perl Monks concerning the following question:

hello,

We are currently making some technical decisionss for a new linux developement, and instead of using make to compile the code, SCONS was proposed (www.scons.org), which is written in Python.

are you aware of any other software construction tool, but written in Perl ? I am not allergic to Python, but if an equivalent solution to SCONS exists in Perl, I would like to know it (I must confess that I prefer Perl to Python...)

thanks

Comment on Sofware build tool in Perl (Perl super-make)
Re: Sofware build tool in Perl (Perl super-make)
by dragonchild (Archbishop) on May 21, 2008 at 15:51 UTC
    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?

      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.

      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?
Re: Sofware build tool in Perl (Perl super-make)
by apl (Monsignor) on May 21, 2008 at 16:06 UTC
    A fast Google (Perl build tool) turns up the A-A-P project. It lists the following build tools written in Perl: There were two others, but one has a write-up in Russian, and the other says it works under Perl 4 or 5, so I had doubts about it being maintained.

    Hope this helps.

Re: Sofware build tool in Perl (Perl super-make)
by jdporter (Canon) on May 21, 2008 at 18:17 UTC

    I haven't tried either of these, but maybe they're close to what you're wanting:

Re: Sofware build tool in Perl (Perl super-make)
by eyepopslikeamosquito (Canon) on May 21, 2008 at 22:25 UTC

    Steven Knight originally developed Cons in Perl. He then developed a Python version, SCons.

    The other day I noticed Perl Build System (PBS), which is worth a look and is being actively developed. From its README: "PBS is among the new generation build systems: rake, scons, ...".

    I'm also interested in a cross-platform tool to build and test complex multi-language systems. I haven't started any serious research yet though.

Re: Sofware build tool in Perl (Perl super-make)
by Khen1950fx (Canon) on May 21, 2008 at 22:47 UTC
    I've had good results using CMake.
Re: Sofware build tool in Perl (Perl super-make)
by Anonymous Monk on May 22, 2008 at 04:31 UTC
Re: Sofware build tool in Perl (Perl super-make)
by clinton (Priest) on May 22, 2008 at 12:44 UTC

    While this isn't a replacement for make, you may be interested in ShipWright from BestPractical, makers of Request Tracker.

    From the blog announcement:

    We've built a new source (and binary) packaging system called Shipwright. Shipwright allows you to track all of your package's dependencies in a version control repository like SVN or SVK as well as build order and build instructions.

    It comes with tools for importing Perl modules, C libraries and other dependencies from CPAN, upstream version control repositories and tarballs. When it can discover dependency information (as it can for Perl modules), Shipwright will automatically import the current versions of all listed dependencies if the repository doesn't already contain sufficient versions.

    Shipwright can automatically set up build instructions for projects using autoconf as well as projects using Perl's MakeMaker, Module::Install and Module::Build mechanisms. If necessary, you can customize the build instructions and dependency ordering after you import a package.

Re: Sofware build tool in Perl (Perl super-make)
by Anonymous Monk on Feb 23, 2013 at 20:03 UTC
    I am a bit late (5 years but in case someone sees this and wonders) I wrote PBS, it's not for small systems. just mail me and I will tell you what's good and not and if I believe it would match your needs. It's still maintained and has been used in a biggish systems, millions lines of codes, hundres of modules, tens of thuosands files, ... PBS is really for those systems.

      Any reason you can't link to it here? It is on line, yes? Is it written in Perl?

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: perlquestion [id://687787]
Approved by marto
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others surveying the Monastery: (10)
As of 2014-09-22 14:46 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    How do you remember the number of days in each month?











    Results (197 votes), past polls