RFR: JDK-8142983: Enable builds with icecc/icecream
Erik Joelsson
erik.joelsson at oracle.com
Tue Nov 24 15:02:50 UTC 2015
Thanks, new review where I did as you suggested:
http://cr.openjdk.java.net/~erikj/8142983/webrev.02/
/Erik
On 2015-11-24 14:42, Magnus Ihse Bursie wrote:
> On 2015-11-13 20:55, 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/
>
> Nice work. :)
>
> Just a minor request:
> ICECC_ENV_BUNDLE="${CONFIGURESUPPORT_OUTPUTDIR}/icecc/`${SED} -n \
> '/^creating/s/creating //p' ${icecc_create_env_log}`"
>
> I think it would be clearer if you did the extraction as a separate
> step, e.g. something like ICECC_ENV_BUNDLE_BASENAME=`$(SED) ...`. This
> goes for both places you do this.
>
> Apart from this, it looks fine.
>
> /Magnus
>
>
>
>
>>
>> /Erik
>
More information about the build-dev
mailing list