Windows X64 CYGWIN Openjdk builds run between 16 and 25mins, depending on the machine used (hardware vs. VM), how many CPUs etc. But it's a bit erratic, depends on lots of things. We are still working around some CYGWIN issues. The incremental builds should be similar. I don't have any numbers right now.
We hope we can get MinGW/MSYS working which might reduce the overall time by 20% or more (a big guess) (Remember MKS will not work with the new build-infra Makefiles). Windows XP 32bit builds take a bit longer maybe 35mins?, but the XP systems have limited RAM and cpu capacity. Solaris, Linux, and Mac builds are pretty consistent, but Windows is another story. :^( What we have noticed is that a beefy PC running Windows XP can easily do 20min builds, but building in an area that is immune from On-Access AntiVirus scanning or turning On-Access scanning off. -kto On Sep 12, 2012, at 11:52 AM, Igor Nekrestyanov wrote: > What about windows? > > -igor > > On 9/12/12 11:49 AM, Kelly O'Hair wrote: >> Some stats on incremental builds. Not partial builds.. >> >> This is an older Solaris machine svc6.us.oracle.com, building the complete >> openjdk forest from scratch >> for 64bit including images took less than 14 minutes (parallel build setting >> was 8) and images took 2mins of this 14mins: >> >> -- Build times ---------- >> Target >> Start 2012-09-12 10:56:17 >> End 2012-09-12 11:09:55 >> 00:00:30 corba >> 00:04:51 hotspot >> 00:00:23 jaxp >> 00:00:33 jaxws >> 00:04:43 jdk >> 00:01:59 jdk-images >> 00:00:39 langtools >> 00:13:38 TOTAL >> ------------------------- >> >> A repeated 'gmake images" with no changes took 31 seconds: >> >> -- Build times ---------- >> Target >> Start 2012-09-12 11:13:30 >> End 2012-09-12 11:14:01 >> 00:00:02 corba >> 00:00:07 hotspot >> 00:00:02 jaxp >> 00:00:04 jaxws >> 00:00:08 jdk >> 00:00:07 jdk-images >> 00:00:01 langtools >> 00:00:31 TOTAL >> ------------------------- >> >> I touched a few awt java sources (touch >> jdk/src/share/classes/java/awt/*.java) and did just a 'gmake all' (no images) >> and it took 2 minutes (this will improve significantly with smartjavac): >> >> -- Build times ---------- >> Target >> Start 2012-09-12 11:17:34 >> End 2012-09-12 11:19:32 >> 00:00:00 corba >> 00:00:00 hotspot >> 00:00:00 jaxp >> 00:00:01 jaxws >> 00:01:56 jdk >> 00:00:01 langtools >> 00:01:58 TOTAL >> ------------------------- >> >> I touched a few awt native sources (touch >> jdk/src/share/native/sun/awt/*/*.c) and did the 'gmake all' (no images) >> and it took 37 seconds): >> >> -- Build times ---------- >> Target >> Start 2012-09-12 11:22:24 >> End 2012-09-12 11:23:01 >> 00:00:00 corba >> 00:00:00 hotspot >> 00:00:00 jaxp >> 00:00:01 jaxws >> 00:00:35 jdk >> 00:00:01 langtools >> 00:00:37 TOTAL >> ------------------------- >> >> So as far as incremental builds go, I think this is a vast improvement. And >> the incremental build should be accurate. >> >> I'm not taking a position on partial builds here, just providing some hard >> data on full openjdk builds with the >> new build-infra makefiles. >> >> The above builds are complete openjdk builds, with no import jdk needed, and >> no concerns about >> sync issues between jdk components (hotspot<->jdk). >> >> -kto >> >> >> On Sep 11, 2012, at 6:37 AM, Anthony Petrov wrote: >> >>> Magnus, >>> >>> You've only explained how incremental builds could work for Java classes in >>> the new build-infra. What about incremental builds of native code? E.g. in >>> AWT we often do the following: >>> >>> $ cd make/sun/awt (or make/java/awt, or make/sun/lwawt) >>> $ make >>> >>> And this re-builds both AWT classes and AWT native code (and some 2D stuff >>> too, btw). What has build-infra got to offer for incremental builds of >>> native code? >>> >>> Also, how fast are those incremental solutions (both the temporary, and the >>> expected final one) in build-infra? Performing the above commands with the >>> current build system takes literally just a few seconds on any platform >>> (given you've built the JDK repo once before, and it might took like 10-30 >>> minutes for the first build). >>> >>> -- >>> best regards, >>> Anthony >>> >>> On 9/10/2012 6:00 PM, Magnus Ihse Bursie wrote: >>>> On 2012-09-10 14:13, Alan Bateman wrote: >>>>> When you say "sub-directory builds" then I think you mean incremental >>>>> builds, or "poor-man increment builds" as I call it. I think the majority >>>>> of people working in the jdk repository, at least in Oracle, do this >>>>> because they know the area and know which make files that re-build the >>>>> files that they have changed. Incremental builds are generally not very >>>>> reliable but seem to be "good enough" for most people needs, at least >>>>> those that aren't doing significant refactoring. The main motive of >>>>> course is to be able to re-build in a few seconds and the #1 goal of any >>>>> new build system has to be fast incremental builds. >>>> In the new build system, fast incremental builds of Java code is dependent >>>> on the new "smart javac", which unfortunately has still not proven stable >>>> enough to be enabled by default, even in the experimental build-infra >>>> forest. It is still our hope that it will turn out to be good enough to be >>>> used as default, but I don't want to trust hope alone. >>>> As an interim solution, I have just created the following two shortcuts. >>>> Both of these bypass the proper dependency detection. This means that make >>>> will cut to the chase and recompile faster, but it also means that you >>>> need to take over the responsibility of making sure dependencies are >>>> correct. This is very similar to the "*-only" (e.g. hotspot-only) targets >>>> that are current available in the new build system. >>>> First shortcut is to skip parts of the JDK makefile. By typing e.g. "make >>>> jdk JDK_TARGET=classes", the JDK build will stop after building the >>>> "classes" target (which compiles the majority of the JDK java files). An >>>> even faster, but less safe, version is "make jdk-only >>>> JDK_TARGET=classes-only", which will jump directly to the JDK Makefile, >>>> and only execute the "classes" target. In this way, absolutely no time is >>>> spent before starting to compile Java classes. >>>> Second shortcut is to limit the classes that are recompiled by the JDK >>>> "classes" target. Currently, *all* (more or less) Java classes in the JDK >>>> is recompiled at once. While this speeds up things considerably at a first >>>> time compilation, it makes all subsequent builds take the same time. By >>>> specifying e.g. JDK_FILTER=java/nio, only files in the java/nio package >>>> will get compiled. This is, I think, similar (but not strictly not >>>> identical) to the effect of "sub-directory builds". It is possible to use >>>> an even more fine-grained filter, separated by comma, e.g. >>>> JDK_FILTER=java/nio/channels,java/nio/charset -- the smaller number of >>>> Java files your filter includes, the faster the build will go (more or >>>> less). >>>> These two can of course be combined. >>>> I would like to point out that this is hopefully a temporary solution -- >>>> if proper dependency checking and incremental builds get fast enough, this >>>> kind of trickery should not be needed. If this happens, we will remove the >>>> support for these shortcuts since they do carry a risk of improper builds. >>>> /Magnus >