Review Request: Build-infra M1

David Holmes david.holmes at oracle.com
Thu Mar 22 06:15:59 UTC 2012


Hi Erik,

On 22/03/2012 12:07 AM, Erik Joelsson wrote:
> As outlined in [1], the build-infra project would like to push the
> current work into jdk8 in order to expose it to a wider audience. The
> webrevs are made against the jdk8/build forest. In each repository,
> there are two kinds of changes:
>
> 1. Changes to old makefiles and source code to be compatible with the
> new build.
> 2. The new makefiles

My major concern with the transition here is being able to take existing 
knowledge of the build system and be able to figure out where in the new 
system certain things are handled. How can I tell if a Makefile is part 
of the old build or the new build? Are some both?

It is still unclear to me how cross-compilation is to be set up.

It is unclear to me how the src/closed and make/closed repositories are 
supported/handled. Going forward much of what pertains to Oracle JDK 
proprietary features, should be moved out of the OpenJDK repository in 
my opinion.

Is there a cheat sheet for how to run configure? There are many options 
that seems completely irrelevant to what would normally be part of a JDK 
build; conversely some obvious flags seem to be missing eg ALT_OUTPUTDIR.

> For corba, jaxp and jaxws, all changes of category 1 have already gone
> in. For langtools, we are awaiting one more change for introducing the
> GenerateNativeHeader annotation. For hotspot, all necessary changes have
> been pushed into hotspot-rt. For jdk, there are two webrevs, one with
> everything and one with just the category 1 changes, to make it easier
> to see them. Finally for the root repository there are only new files in
> the common subdir.
>
> root, configure script and makefiles:
> http://cr.openjdk.java.net/~erikj/build-infra-m1/webrev-root-new/
> <http://cr.openjdk.java.net/%7Eerikj/build-infra-m1/webrev-root-new/>

Is it intended that any single person actually understand the contents 
of configure and need to edit it? It has strange contents (like multiple 
file copyright headers in places ???).

The BUILD_HEADLESS_ONLY option is not for what it has been used. A 
normal JDK build will build a JDK that has both headful and headless 
support (property: java.awt.headless=true). The BUILD_HEADLESS_ONLY flag 
was an artifact from our embedded build systems for use on platforms 
where it was simply not possible to build anything pertaining to the GUI 
systems ie no X11 headers or libraries. As has been pointed out recently 
BUILD_HEADLESS_ONLY doesn't actually work in current jdk8 (and likely 
jdk7 too).

common/makefiles/Makefile

I may be misreading something but the help has

  161         $(info     make ALL             # build images for all 
configurations)

but the all: target only builds jdk, not images.

common/makefiles/compress.post
common/makefiles/compress.pre

??? These are just weird. What role do they serve? Were they autogenerated?

common/makefiles/uncompress.sed

??? what is this? Is it autogenerated? How do I know if I need to add 
anything to it?

> langtools, 1 new makefile:
> http://cr.openjdk.java.net/~erikj/build-infra-m1/webrev-langtools-new/
> <http://cr.openjdk.java.net/%7Eerikj/build-infra-m1/webrev-langtools-new/>
>
> langtools, GenerateNativeHeader annotation (this is already going in
> through tools, but adding it here for reference as the jdk changes
> depend on it)
> http://cr.openjdk.java.net/~erikj/build-infra-m1/webrev-langtools-nativeheader/
> <http://cr.openjdk.java.net/%7Eerikj/build-infra-m1/webrev-langtools-nativeheader/>

Does this pertain only to the new javac server or is this a general 
enhancement to javac for 8?

> corba, 1 new makefile:
> http://cr.openjdk.java.net/~erikj/build-infra-m1/webrev-corba-new/
> <http://cr.openjdk.java.net/%7Eerikj/build-infra-m1/webrev-corba-new/>
>
> jaxp, 1 new makefile
> http://cr.openjdk.java.net/~erikj/build-infra-m1/webrev-jaxp-new/
> <http://cr.openjdk.java.net/%7Eerikj/build-infra-m1/webrev-jaxp-new/>
>
> jaxws, 1 new makefile
> http://cr.openjdk.java.net/~erikj/build-infra-m1/webrev-jaxws-new/
> <http://cr.openjdk.java.net/%7Eerikj/build-infra-m1/webrev-jaxws-new/>
>
> jdk, just the changes to old files
> http://cr.openjdk.java.net/~erikj/build-infra-m1/webrev-jdk-other/
> <http://cr.openjdk.java.net/%7Eerikj/build-infra-m1/webrev-jdk-other/>

Most of these changes seem to be related to tool changes rather than 
being build system changes.

> jdk, all changes including a partial copy of the old makefiles.
> http://cr.openjdk.java.net/~erikj/build-infra-m1/webrev-jdk-new/
> <http://cr.openjdk.java.net/%7Eerikj/build-infra-m1/webrev-jdk-new/>
>
> Of course, if you prefer you can look at the new makefiles directly in
> the build-infra/jdk8 repository forest too.
>
> These changes should not affect the old build at all. To build using the
> new build system, change directory to "common/makefiles" and:

Why do I have to cd to common/makefiles ?
>
> ../autoconf/configure
> make
> (make images)
>
> State of the new build (the old build should of course be unaffected):
>
>   * Linux 32bit: Works
>   * Linux 64bit: Works

I tried this today and got a javac error compiling a Java2D demo - as 
report to the build-infra list.

Cheers,
David
------

>   * Windows 32bit: Works
>   * Windows 64bit: Works
>   * Solaris i586: Builds but launchers currently unusable
>
> Some notes:
>
>   * The old and new build (on linux x64) produce very close to equal
>     results. There is a comparison script in common/bin/compareimage.sh
>     with which this can be checked.
>   * Not all makefiles in jdk have been converted yet, for those that
>     haven't been, a copy of the old files are used.
>   * Not all promised features in the java compilation are active and
>     ready in this milestone. Most notably, it's still not using more
>     than one cpu and the nifty new dependency tracking is disabled. A
>     clean build is still pretty fast, but incremental builds aren't as
>     good as they will be yet.
>   * On windows, only cygwin is currently supported.
>
> Now please share your feedback!
>
> /Erik
>
> [1]
> http://mail.openjdk.java.net/pipermail/build-infra-dev/2012-March/000571.html
>



More information about the build-dev mailing list