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

Magnus Ihse Bursie magnus.ihse.bursie at oracle.com
Tue Nov 24 15:32:32 UTC 2015


On 2015-11-24 16:02, Erik Joelsson wrote:
> Thanks, new review where I did as you suggested:
> http://cr.openjdk.java.net/~erikj/8142983/webrev.02/
Looks good!

/Magnus
>
> /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