On Jan 8, 2013, at 12:02 AM, David Holmes wrote: > I have updated webrevs: > > http://cr.openjdk.java.net/~dholmes/8004265.v2/webrev.top/ > > http://cr.openjdk.java.net/~dholmes/8004265.v2/webrev.jdk/
They look ok to me. > > I've addressed the minor suggestions that have been given by Kelly and Erik > eg: > - better comment on the jarreorder change (and a CR to follow up) > - the de-beaned classes now go to the images output directory not JDK (thanks > to Alan) > > The major change is that I no longer use the profiles files to define the > contents of a full JRE. So the file lists that had moved to Profiles.gmk have > moved back to Images.gmk and are not used when creating a profile image. This > means that the only change for non-profiles builds (outside the Version.java > modifications) is in how the list of JARS to build is put together. > > I've also integrated this with latest jdk8/build changes including all the > UNSIGNED jar updates - which fit in quite nicely. > > One thing to note that I didn't mention originally, the change to > makefiles/GensrcX11Wrappers.gmk is a hack to make cross-compilation work. The > real fix is languishing in the build-infra forest and needs to get moved into > jdk8/build ASAP. Is this the Issue: JDK-8003958 build-infra: Cross-compilation of sizers utility has been broken ??? -kto > > Thanks, > David > > On 4/01/2013 1:35 PM, David Holmes wrote: >> Hi Erik, >> >> On 4/01/2013 12:15 AM, Erik Joelsson wrote: >>> Hello, >>> >>> Sorry for taking so long responding to this. Here are my thoughts on it. >> >> Thanks for getting to it, I know you have a lot on your plate at the >> moment. >> >>> I like the idea of defined sets of files for each type of image. The >>> current Images.gmk works with excludes, because that's how it used to >>> work, but I would be happy to change to an include based process. Then >>> we wouldn't need to convert include lists to exclude lists. I'm not >>> saying this must happen at this point though. >> >> It will definitely not happen at this point. :) There is simply no time >> to redesign everything. I have an update in the pipeline that constrains >> my changes further so that they do not affect which files are >> included/excluded in a full JRE. This was needed because the existing >> lists only work for linux/solaris at this point (but unsupported on >> solaris) and failed to produce correct JREs on windows and OSX due to >> difference in the path locations. I hope to post an updated webrev later >> today, or else over the weekend. >> >>> I would prefer if java class generation, compilation and also class >>> patching would not be happening inside CreateJars.gmk. Especially since >>> they emit files into the jdk output dir. For Version.java, I would break >>> it out of GensrcMisc.gmk to GensrcVersion.gmk and handle all the >>> variants of Version.java there. I would do the compilation in >>> CompileJavaClasses.gmk. For the patching, this would be a new concept >>> and has to happen after compilation and not in the same make invocation. >>> Leaving patching in images could be ok even if I would prefer not to. >>> But if it stays, the output needs to be in images and not jdk. The >>> drawback of all this is of course that these things will get built >>> regardless of if you intend to build profiles or not, but I don't think >>> they take long enough to matter. If you don't agree, then please at >>> least move the output to images. >> >> I may have to limit this to the "at least move the output to images" - >> at least for now - though I need all .class files in one place to >> package them into a jar file. Given the way the build is defined to >> build the world then package up jars and images based on the image >> contents, I was constraining myself to only affecting those two aspects. >> As you indicated to handle this in CompileJavaClasses the whole profile >> notion has to propagate through the build system into areas that really >> don't care about profiles or images. >> >>> For the images:: rule in common/makefiles/Main.gmk, do you actually need >>> to add things there that don't fit better in a closed version of >>> jdk/makefiles/BuildJdk.gmk? I can't find any use of it in the current >>> profiles repos. >> >> It is used in the jdk/make/closed repo for other build targets based on >> Profiles (ie the SE embedded profile images). I'm not sure how I could >> move it though as if it were in a closed BuildJdk.gmk then it would need >> to augment an open BuildJdk.gmk target - and hence the :: would simply >> move from one place to another. If this were only for embedded it might >> be doable through a new target, but there are other factors at play. >> (And in many ways the :: is a much simpler way of augmenting >> pre-existing targets.) >> >> Thanks, >> David >> >>> >>> /Erik >>> >>> On 2012-12-21 07:18, David Holmes wrote: >>>> The Java SE 8 Compact Profiles: >>>> >>>> http://openjdk.java.net/jeps/161 >>>> >>>> provides for subsetting of the Java SE 8 platform. While the >>>> specification covers the platform, we are only providing a reference >>>> implementation on Linux x86 at this time. >>>> >>>> This work is covered by a number of CRs due to there being a need for >>>> a number of CC requests to modifying existing specifications >>>> >>>> 8004265: Add build support for Compact Profiles >>>> 8004502: Compact Profiles contents >>>> 8003255: (profiles) Update JAR file specification to support profiles >>>> 8003256: (profiles) Add support for profile identification >>>> 8004931: add/removePropertyChangeListener should not exist in subset >>>> Profiles of Java SE >>>> >>>> The changes primarily involve the build, as you would imagine, the >>>> compact profiles define: >>>> >>>> - which files (binaries, jars, native libs) are in a JRE >>>> (profile-includes.txt) >>>> - which packages/classes are in rt.jar/resources.jar >>>> (profile-rtjar-includes.txt) >>>> >>>> But there are additional source changes: >>>> - to support reporting the profile name as part of version information >>>> - to test the versioning and tool changes >>>> >>>> and also changes to java, javac and jar so that you can indicate which >>>> profile you are targeting, and have javac make sure you don't use an >>>> API that won't be present; and which profile you need to run (listed >>>> in your executable jar) so the launcher can reject it if it isn't the >>>> right profile. The launcher and jar changes are included in this >>>> webrev, while the javac changes are being integrated separately (plus >>>> some related javadoc changes). >>>> >>>> Only the new build system is supported for building profiles. >>>> >>>> webrevs: >>>> >>>> top-level repo: http://cr.openjdk.java.net/~dholmes/8004265/webrev.top/ >>>> >>>> The main change is to simply add profiles and profiles-only as top >>>> level make targets (similar to images). There is also a change to >>>> remove the hardcoded version information (though this may be handled >>>> by a separate CR). >>>> >>>> jdk repo: http://cr.openjdk.java.net/~dholmes/8004265/webrev.jdk/ >>>> >>>> The overall build changes expand on the pre-existing definitions >>>> whereby a JRE is a JDK with things take out. So a compact JRE is then >>>> a JRE with additional things taken out. There are three compact >>>> profiles (compact1 being the smallest) and a full JRE. For internal >>>> build purposes these are referred to as PROFILE_1 etc, with a full JRE >>>> being represented by PROFILE_4 when needed. The specification for >>>> profiles indicates what is included in each profile, but the build >>>> rules then invert this to obtain a set of exclusions for each profile: >>>> the exclusions of a given profile is the set of inclusions of all >>>> larger profiles and the JRE (and of course the JDK). >>>> >>>> Please note I only expect build folks to look at build changes and >>>> core-libs to look at src/test changes (all of which have been >>>> developed by Alan Bateman) and there is no need to cross-post your >>>> responses. >>>> >>>> Like many I am about to head for Xmas break but I will continue to >>>> monitor email and deal with changes as needed. This is needed for M6 >>>> and we need to be ready to push in early January. >>>> >>>> Thanks, >>>> David Holmes >>>>