harmony-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Mark Hindess" <mark.hind...@googlemail.com>
Subject [build] Merging back changes from my test branch
Date Wed, 05 May 2010 18:55:31 GMT

After watching our build on some of the older laptops in use at the
Open Source Jumpstart, I decided that the inefficiencies of our build
were overdue some attention.  I created a new branch:


and set about reducing resource usage and generally improving our

Currently my changes improve the federated build time (after fresh
checkout) by 8% and the build time (after a build[0]) by 40%.  Also,
as the build does fewer copies, the size of the resulting build tree
is down from about 1.5G to less than 1G.

The improvements to the classlib build times are 9% and 57%

I am planning to merge my changes back to the trunk so I thought I
should document some of the differences.

The main functional change is that I have removed the 'build-java',
'build-native' and 'build-test' targets in the classlib build.  I've
replaced them with properties (defaulting to true) called 'build.java',
'build.native', and 'build.test'.  So that:

  ant build-java


  ant -Dbuild.native=false -Dbuild.test=false

This may seem worse (in terms of typing) but it works from the
federated build, in jdktools, and in individual modules rather than
just in classlib.  I've not yet made the necessary changes to drlvm.

I've appended a summary of other changes.


[0] This is the pathological case - no changes - similar to the
typical development case where a developer will have changed one or
two files.

federated build:

  Rename "internal" targets to begin with '-' so they can't be
  called directly.  This should mean we are left with a smaller
  set of API targets to support namely:

    fetch-depends check-depends build clean findbugs test

  This is incomplete with significant work still to do particularly
  in drlvm.

  Reduce copying in federated build by building directly to
  target/hdk where possible.  Again this is incomplete.

  Pass svn.info property down to builds to avoid repeated "svn info"
  calls that make a big difference to build times.  It is a problem if
  people modify versions of modules independently of the top-level but
  I think that this has been broken for a while anyway.

  Add "check-depends" target to federated build.

  Fix MANIFEST.MF files to use specification version from a property
  rather than being hardcoded to 1.5.


  Remove make/build-*.xml

  "ant test" is just a wrapper for "ant -f deploy/build/test/build.xml"


  As with classlib, add build.java, build.native, and build.test

  Move tests to the HDK.

  Change implementation version in drlvm jars manifests to be svn

View raw message