Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-8142983

Enable builds with icecc/icecream

XMLWordPrintable

    • Icon: Enhancement Enhancement
    • Resolution: Fixed
    • Icon: P4 P4
    • 9
    • 9
    • infrastructure
    • b96
    • x86, x86_64
    • linux

      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.

            erikj Erik Joelsson
            erikj Erik Joelsson
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

              Created:
              Updated:
              Resolved: