RFR: JDK-8142983: Enable builds with icecc/icecream

David Holmes david.holmes at oracle.com
Sat Nov 14 08:02:53 UTC 2015


I'll bite - what are icecc and icecream? :)

David

On 14/11/2015 5:55 AM, Erik Joelsson wrote:
> We should enable builds using icecc/icecream distributed native
> compilation. The setup is rather simple and the required changes to
> configure are no more complex than how we currently handle ccache.
>
> I have done some experiments and it seems to be working quite well. I
> can easily get build times of less than 2 minutes for "make
> exploded-image" using JOBS=100 to fully saturate a couple of extra hosts
> in the cluster. (I need to combine this with --enable-javac-server to
> get the java compilation to not be a bottleneck.)
>
> This is likely not that interesting to automated, already distributed
> build systems, but for a developers day to day work, being attached to
> an icecream cluster could greatly reduce local compile times.
>
> Icecream supports both linux and macosx but I have only tested this on
> linux myself. The implementation in configure will support both gcc and
> clang.
>
> To use the feature, given that you have icecc installed and setup to
> join a cluster, make sure icecc is on the path and simply configure with
> --enable-icecc and it should all work automatically. Configure will
> generate the necessary compiler build environments that get sent to the
> build slaves and setup the needed make variables.
>
> When enabling icecc, precompiled header is disabled. It is possible to
> get precompiled header to work with icecc, but the performance boost
> gets completely negated (and more) by the extra file transfer times of
> the precompiled header file, at least in my experience.
>
> Bug: https://bugs.openjdk.java.net/browse/JDK-8142983
> Webrev: http://cr.openjdk.java.net/~erikj/8142983/webrev.01/
>
> /Erik



More information about the build-dev mailing list