Ant Rant
David Kramer
david at thekramers.net
Fri Dec 3 09:24:18 EST 2004
One of my current projects at work was to move us from PVCS version control to
Subversion. Serves me right for selling them on it. Now they want me to redo
the whole build system instead of just changing the PVCS stuff to Subversion
stuff. On both Windows and UNIX. With bother C++ code and Java.
Oh, and I have about 10 business days.
The way it works now is that one set of C++ components ("the backend") builds
under UNIX with shell scripts and makefiles. Another set of C++ components
(mid-tier) some subset of the backend, and the Java code compile under Windows
using (gasp) DOS batch files and MSVC project files and ant scripts. It has
been decided that the DOS batch scripts need to be replaced for the betterment
of the human race. I've been given permission to implement it in any way that
is somewhat sane and completely free, The two leading candidates are bash
scripts (using Cygwin on the Windows side) and makefiles, vs ant.
Here's the thing I'm finding out about ant. It doesn't do the one single most
primary thing a build system needs to do: Only build things that need to be
built. There does not appear to be a way to make a build.xml file with a
target such that if a particular module is already built, you don't try to
build it again. No way to say "this target has already been built". No way
to say "this file is newer than that one, so no need to build this target".
No way to say "This file exists, so no need to build this target". This is
crucial, because using antcall or ant targets run in a separate thread that
has no access to the dependency calculations already done in the calling ant run.
Debugging ant scripts also seems to be somewhat daunting, since it's not
composed of a list of steps to run, and many tasks are Java code.
Beyond disappointing. Am I missing something?
My current inclination is to have a master bash script that controls the logic
and dependencies, then builds each individual module by running make, running
MSVC with the project files, or running the ant script, depending on the
module's source file type and platform.
I really have to pick the technology tomorrow if I'm going to get this done in
time.
--
DDDD David Kramer david at thekramers.net http://thekramers.net
DK KD "Asking whether there is a liberal or conservative bias to the
DKK D mainstream media is a little like asking whether al Qaeda uses too
DK KD much oil in their hummus. The problem with al Qaeda is that
DDDD they're trying to kill us." - Al Franken
More information about the Discuss
mailing list