Build Script Help Needed

Michelle D'Souza michelle.dsouza at
Mon Apr 6 14:46:55 UTC 2009

Hi everyone,

Colin and I have been working on fixing up our build scripts to allow  
for custom builds of 1.0. The old scripts had needed an overhaul  
anyway given the new directory structure. Also, they'd become a bit  
messy over time and there was quite a bit of refactoring work to be  

When talking about a strategy, we wanted to fulfill these goals:

1. we can build a full release and a daily build easily
2. we can build a custom package easily - including a custom  
MyInfusion.js javascript file
3. the build scripts are maintainable
4. the build is less likely to break when new files are added

One of the problems that we hit is the fact that the order of the  
files included in the MyInfusion.js file is important and not machine  
determinable. We decided on using properties to state the order of  
files. We felt it would be best to keep these properties close to the  
files themselves in hopes that it would be easier to maintain. If  
you've been watching the commits over the last few days, you will have  
noticed a bunch of {name}Dependencies.json files cropping up in the  
repository. These are the files that declare the dependencies of a  
module and the files related to the module. In these dependency files,  
the order is important both when specifying the dependencies and when  
specifying the files. For example, uiOptionsDependencies.json contains:

{"uiOptions": {
	"files": ["UIEnhancer.js", "UIOptions.js"],
	"dependencies": ["jQuery", "jQueryUICore", "framework", "renderer",  
"jQueryUIWidgets", "tableOfContents", "json"]

Building up the scripts has gone very well. The basic algorithm is in  
place and appears to be working. In order to implement it we used the  
optional ant task 'script'. This task comes bundled with ant however,  
you may need to do a little extra configuration. On Mac OSX we found  
we needed to download the full ant bundle, put it into the /usr/share  
directory and run ant -f fetch.xml

We're now at the point where we can use some help. I've put in most of  
the dependency files and filled them out a bit, however, I have not  
done a thorough job with this. So, component contacts (leads) can you  
please take a look at your component's dependency file and update it?  
Ask in the irc channel if you're not sure how to do this. In order to  
test if it is correct you can run: ant customBuild - 
Dinclude="componentName". In the resulting package you'll find a  
MyInfusion.js file at the top level. Drop this file into your  
component examples instead of all the Fluid javascript you now  
include. Your examples should still work.

I was thinking it might be a good time to do a quick informal code  
tour while all of this is fresh in my head. Let's meet in Connect  
after stand-up today. I'll keep it short so that we don't distract too  
much from testing 1.0.



Michelle D'Souza
Software Developer, Fluid Project
Adaptive Technology Resource Centre
University of Toronto

More information about the fluid-work mailing list