Continuous builds for OpenJDK

Kelly O'Hair Kelly.Ohair at Sun.COM
Fri May 16 20:47:37 UTC 2008



Jesse Glick wrote:
> David Herron wrote:
>> I would be happy to have more quality metrics like findbugs results
>> to publish on the site.
> 
> On that note, has anyone set up or thought about setting up a public 
> continuous builder for OpenJDK, e.g. using Hudson? This would ensure 
> that the codeline is still buildable (of course), and could show test 
> status, show FindBugs metrics, permit downloads of snapshot builds, etc.

Last I looked, Hudson did not support building native code on all 8
basic platforms, and more platforms if you want to include all the various
Linux flavors.

Having the OpenJDK build on just one platform is valuable, but not
really very re-assuring when it's so easy to break native code when using
all the different architectures and C/C++ compilers we use.

The findbugs issue doesn't get any better with Hudson, not sure how
it can help when it takes 12+hours to run findbugs on the jdk.

Hudson is a great tool, but I think it's sweet spot is the typical
Java project or product, built with a build.xml file and with
little or no native code.

> 
> One issue with Hudson is that it does not yet support the Forest 
> extension in its Mercurial plugin. You can 'hg fpull -u' in your build 
> script to do the update, but then the changelog will only show changes 
> in the root tree, and polling will not work correctly. Probably fixable 
> in the plugin; or it might just be better to set up a separate job for 
> each tree, assuming these components can be built meaningfully in 
> isolation (definitely true for langtools). You can also have 
> "downstream" jobs, so it would be possible for a jdk job to use binary 
> artifacts from the most recent successful build of a hotspot job, 
> assuming the makefile supports this scenario.

We have an in-house build/test system for the jdk called JPRT, which we hope to
open source, but it requires all the various platform client hardware.
The JPRT principle is based on a distributed SCM model, where
all the builds on all the platforms are guaranteed successful before the
changes ever get pushed to any shared repository.
This is different than doing a continuous build, which detects when an area
won't build and raises alarms when a shared repository fails to build.
JPRT works on a 'on-demand' job request from a user needing to push changes,
the shared repository is always guaranteed to build.

-kto



More information about the build-dev mailing list