[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