Greetings, all,
Now that evolutionary sensor data types will no longer be occupying my full
attention, I've decided to plunge into the redesign of our Ant build
system. I've done some initial work, and have already obtained some
interesting results:
* Converting the <antcall> into a <macrodef> for the checkProperties task
reduced the time required for a quickStart on my laptop from 12 seconds to
3 seconds.
* I am now investigating the use of <import> and <macrodef> as a way to
eliminate all <ant> and <antcall> indirection. Basically, this design uses
<import> to effectively create one giant build file. This has fairly
profound implications for the structure of the Hackystat build system. If
I can pull it off, it will result in simplified build structure: there will
no longer be the somewhat complex call-backs between local.build.xml,
build.xml, and build.utils.xml that exist in the current system. It should
also result in performance improvements. The cost (and, as usual, nothing
comes for free) is that the local.build.xml files will contain more tasks
than they did before, and adding a new feature (such as doxygen) will
require changes to all local.build.xml files (which was not always the case
before). However, the ability to use <macrodef> will make most these
changes simple one line additions to each local.build.xml.
* All references to specific module tasks will be encapsulated into a
single modules.build.xml file. In the initial phase of redesign, this file
continues to be hand-written in the traditional fashion. In phase II, it
will be autogenerated using XSLT, simplifying external extension of the
build system.
I have created a 'version7' subdirectory in hackyBuild where I'm doing all
the work, so there should be no impact on the current build system. I will
also be creating v7.local.build.xml files in various non-hackyBuild modules
as work proceeds. Eventually, it should be possible to cd into
hackyBuild/version7 and invoke ant from there to build the system. Only
after we're satisfied that everything is stable will we cut-over.
I'd like to think that I could have a preliminary version ready for review
in a week or so, but I haven't waded in far enough yet to know how long
this will take.
Oh, and the new system requires ant 1.6.5, and will use the -source 1.4
option to <javac> to allow Hackystat to build cleanly with either jdk 1.4
or 1.5.
Cheers,
Philip