[Source] Xj3D teleconference proposal: development branch merging

Alan Hudson alan at shapeways.com
Thu Sep 1 17:04:49 PDT 2011


On 9/1/2011 4:53 PM, Justin Couch wrote:
>
> If you can guarantee that the build system will detect and fail when it
> finds circular dependencies, move to ant. However, you will find that it
> is far more complex and far, far more difficult to maintain than what is
> there currently. I'm working with a similar sized codebase right now that
> didn't check for that and it's a fucking huge nightmare to do anything
> with - it takes me 5 times longer to get anything done than it does with a
> sane codebase. No circular dependencies is an absolute hard requirement as
> far as I'm concerned for any build system.
>
I settled on something that partially answers this requirement in ant.  
It insures no package level circular dependencies.    It continues the 
tradition of having a per-package jar list as well.

An example:

<compilejava package="vrml/eai" include="**/*.java" jars="" />
<compilejava package="org/web3d/util"  jars="j3d-org-all_1.0.0.jar" />
<compilejava package="org/web3d/x3d/sai"  jars="" />
<compilejava package="org/web3d/x3d/sai/cadgeometry"  jars="" />

This follows the order as originally defined in Makefile.  A bit less 
painful then having each file written out.  But still requires a 
per-package level spellout.

If you need to exclude something in CVS that shouldn't compile then it 
must be explicitly listed:

<compilejava package="org/web3d/vrml/lang"
         jars="">
<exclude-elements>
<exclude name="org/web3d/vrml/lang/CADKernelType.java" />
</exclude-elements>
</compilejava>

I feel like this helps enforce better code writing without requiring as 
much build-system munging.

-- 
Alan Hudson, Director 3D Tools Shapeways
www.shapeways.com




More information about the Source mailing list