Excessive rebuilds of modules

Ioi Lam ioi.lam at oracle.com
Fri May 22 04:53:02 UTC 2015

On 5/21/15 12:05 AM, Erik Joelsson wrote:
> On 2015-05-20 22:39, Alan Bateman wrote:
>> On 20/05/2015 21:12, Roger Riggs wrote:
>>> Ioi,
>>> You can rebuild just the contents of a single module:
>>> % make java.base java.base-libs java.base-launchers
>> Yes, and this works great when you are using an exploded build. It's 
>> possible that Ioi is looking for an images build of course. In 
>> general then this needs sjavac as Joe brings up.
> If you have a full image build, make a change to something in 
> java.base, you could do something like this to avoid unnecessary 
> rebuilds:
> $ make java.base && make images-only
Thanks for the information.

I tried this on my machine (32-way Xeon E5-2665 0 @ 2.40GHz), but it 
still takes one minute if I change a single file in java.base :-(

The making of java.base alone took about 30 seconds.

$ time sh -c 'make JOBS=29 java.base && make images-only'
Building target 'java.base' in configuration '/home/iklam/jdk/bld/'
Compiling 2759 files for java.base
Finished building target 'java.base' in configuration '/home/iklam/jdk/bld/'
Building target 'images-only' in configuration '/home/iklam/jdk/bld/'
Creating jdk server jimage
Creating jdk jimage
Creating jre jimage
duplicate resource 
"META-INF/services/sun.management.spi.PlatformMBeanProvider", skipping
duplicate resource 
"META-INF/services/sun.management.spi.PlatformMBeanProvider", skipping
duplicate resource 
"META-INF/services/sun.management.spi.PlatformMBeanProvider", skipping
Unzipping jdk/src/closed/db/db-derby-
duplicate resource "META-INF/services/com.sun.jdi.connect.Connector", 
Unzipping jdk/src/closed/db/db-derby-
Updating images/sec-bin.zip
## Starting verify-modules
Checking dependencies across JDK modules
Access verification succeeded.
## Finished verify-modules (build time 00:00:16)

Is there any way to make this faster?

I used to have a script that compiles the exact set of .java files that 
I touched, and patch rt.jar. It would complete the build in a second or 
so. I guess I could update the script to work with modules and jimage, 
but would be happier if I didn't have to.

- Ioi

> Note that if you put the *-only target on the same make command line, 
> the results will be unpredictable as -only deactivates dependencies, 
> so images would start running before java.base was properly done.
> A note on sjavac, I do believe it currently works (to some extent) in 
> jdk9.
> /Erik

More information about the build-dev mailing list