Home
| Calendar
| Mail Lists
| List Archives
| Desktop SIG
| Hardware Hacking SIG
Wiki | Flickr | PicasaWeb | Video | Maps & Directions | Installfests | Keysignings Linux Cafe | Meeting Notes | Linux Links | Bling | About BLU |
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
BLU is a member of BostonUserGroups | |
We also thank MIT for the use of their facilities. |