Feedback on the New Build System

David Holmes david.holmes at
Thu Mar 14 01:26:38 UTC 2013

Hi Andrew,

On 14/03/2013 2:16 AM, Andrew Hughes wrote:
> I've just got my first build out of the new system using the main jdk8/jdk8 tree (b80) and
> so thought it was worth giving some feedback on the problems encountered and issues
> with the end result:
> 1.  It took some time to work out how to get back to the usual 'noisy' build as the
> default seems to subdue all the useful output.  VERBOSE=true broke the build when
> it tried to use 'true' as a Makefile target.  It turns out the solution is the rather
> non-obvious VERBOSE= .  Could we not have this documented somewhere and perhaps have
> verbosity as a configure option?  After grepping around, it's not very obvious to me
> where it gets set.

This has already been covered with LOG=trace (or DEBUG) but note that it 
is actually logged to disk - the output (regardless of the log level) 
goes to build.log in the configuration directory (by default).

> 2.  One of the javac calls in the jdk tree fails with:
> /home/andrew/projects/openjdk/upstream/jdk8/jdk/src/share/classes/javax/swing/ error: package sun.util.locale.provider does not exist
> /home/andrew/projects/openjdk/upstream/jdk8/jdk/src/share/classes/javax/swing/ error: package sun.util.locale.provider does not exist
> /home/andrew/projects/openjdk/upstream/jdk8/jdk/src/share/classes/javax/swing/ error: package sun.util.locale.provider does not exist
> This package is in the jdk8 tree but not in the build JDK (7).  Oddly, the build
> continues despite this error and the final rt.jar does include JSpinner.

I think this is actually a javadoc call (hence the non-fatal nature of 
the error). But it is very hard to associate the message with any given 
command due to all the interleaving (at least in my build). :(

> 3.  -Werror is set for the SCTP native code causing the build to fail:
> Lots of stuff like:
> /home/andrew/projects/openjdk/upstream/jdk8/jdk/src/solaris/native/sun/nio/ch/sctp/SctpChannelImpl.c:88:24: error: unused parameter 'klass' [-Werror=unused-parameter]
> as -Werror is passed and -Wno-unused doesn't seem to turn these off.  SCTP_WERROR=
> worked around it (perhaps this should at least be WARNINGS_ARE_ERRORS to match HotSpot?)
> Do we have a preferred way to fix these errors?  I know about __unused__ but I believe this
> is GCC-specific and I wouldn't want to break the build on other platforms (Solaris, MacOS X, BSD).

What gcc version are you using? I don't see this with 4.6.

Probably best to take this up with nio-dev folk.

> 4.  It's odd that the default 'make' no longer means 'make all' and 'make' on its own doesn't produce
> a JDK image to use.  This will be confusing for newcomers who miss that important 'all' word or people
> like me who go by the usual presumption that the default argument to make is 'all', but appears to have
> been subverted here.

This is odd. The top-level Makefile in the forest has:

default: all

but the generated Makefile in the configuration directory simply 
includes NewMakefile.gmk which has

# This must be the first rule

I always use the generated Makefile as the entry point but then I never 
rely on default targets anyway.

But this certainly is confusing.

> 5.  The final image produces:
> openjdk version "1.8.0-internal"
> from -version.  I can't remember whether or not the internal was there before and we suppressed it in IcedTea,
> but we've definitely always had 'java version' and not having this will break numerous applications (possibly
> including the JDK build, as I know at least the old one used to check the version).

Is this an old-build vs new-build issue or a 7 vs 8 issue? The default 
version information comes from files in the forest:


PRODUCT_SUFFIX="Runtime Environment"

# Might need better names for these


> Hope this helps.  I'm happy to produce patches for some of these issues, but wanted to discuss the best way
> forward first.
> Thanks,

More information about the build-dev mailing list