Brandon S. Allbery KF8NH wrote:
On 2009 Jan 18, at 13:47, Matti Niemenmaa wrote:
 3. Coadjute keeps track of command line arguments (see docs for
    details): for me this is really a killer feature, I don't know of
    anything else which does this.

It's been done many times before; it never seems to catch on. My personal favorite was Shape (http://user.cs.tu-berlin.de/~shape/) which I used for a few local projects in the late 80s. SCons is perhaps the most popular tool in this class (and itself a Pythonization of the original Perl Cons; maybe it's time for HCons?), followed by Apache's Ant (I don't think that actually caches command lines or binaries though), then Jam and successors.

Actually, you're right, and I misspoke: I know about SCons and didn't like it (see below for brief rant)—Coadjute is the only truly /generic/ build tool I knew of which does it.

The main thing I'll mention that turned me off SCons was that it tries to do too much stuff automatically: it's very much built around the idea that you just give it a filename and it figures out what to do. E.g. "foo.hs" and it detects what files it depends on, what Haskell compilers you've got, picks one (arbitrarily?), and compiles all the sources into a binary.

(On my Windows machine this meant fun delays of multiple seconds prior to every build, as it scanned all the directories in PATH for several binaries which it never found: looking for various C compilers while I haven't even specified C dependencies.)

I found it quite difficult (verbose and non-obvious) and probably against its philosophies to just say "here is foo.hs, it depends on foo.c, don't do anything else with them and just run the following command if foo.hs needs to be built."

To be completely honest I don't like the idea of SCons in itself: it seems to be something in between platform-specific tools like Cabal and generic ones like make or Coadjute. Maybe I'm just too dense, or maybe it's a documentation problem, but it's just not something I'd use for pretty much anything. (C/C++ don't really have tools geared specifically for them (CMake?) so that might be one case where I would.)

_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to