Review Request: Build-infra M1 (original) (raw)

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