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