[8u60] RFR: 8038189: Add cross-platform compact profiles support

David Holmes david.holmes at oracle.com
Mon Dec 1 00:09:40 UTC 2014


Main bug is 8038189 but that is a closed bug, the open backport issue is:

https://bugs.openjdk.java.net/browse/JDK-8066200

Compact Profiles support was added in 8, but only for the Linux 
platform. I've now generalized this support to all the other platforms. 
This is an 8u only change, targetting 8u60, as soon as the jdk8u/dev 
starts accepting things for 8u60.

The changes are not that extensive - mostly generalizing the lists and 
accounting for different platforms putting files into different places 
(jre/lib/<arch> vs jre/lib vs jre/bin). It isn't necessary to produce 
detailed per-platform lists as files that don't exist simply don't get 
copied; but when files are obviously platform specific then I add them 
under suitable guards.

The biggest complexity comes from the debuginfo files, and in particular 
unzipped debuginfo files. This accounts for the bulk of the changes in 
profiles-includes.txt, as we try to identify the set of debug files that 
might exist for each library (and OSX is the main complication due to 
the .dSYM directory because the existing rules only copy files not 
directories). Suggestions for reducing the duplicated patterns would be 
appreciated.

Platform specific contents were determined in conjunction with 
examination of what Jigsaw is using in JDK 9 for the base module.

I tested all the main platforms (Windows, Linux, Solaris and OSX) and 
with/without zipping of debuginfo files. Note that Windows builds will 
not work with unzipped debuginfo files due to 8025936, but I checked 
that multiple debug info files were expanded into the right set of targets.

webrevs:

http://cr.openjdk.java.net/~dholmes/8038189/webrev.top/

make/Main.gmk:
  - Remove the os-check that constrained profiles to linux

http://cr.openjdk.java.net/~dholmes/8038189/webrev.jdk/

make/CreateJars.gmk:
  - Check for empty variables (Solaris doesn't like them)
  - Fix # # comments
  - Add explicit targets for the beanless classes with $ in them (the % 
substitution doesn't work on all platforms when $ is also present)

make/Images.gmk
  - Don't filter out server VM from compact profiles

make/Import.gmk
  - Add Info.plist to the exported files (for unzipped debuginfo files - 
this is a general fix not profiles specific so may warrant its own CR)

make/Profiles.gmk
  - Remove linux-only comment

make/Tools.gmk
  - Fix tool definitions to use $(PATH_SEP) and quote cp entries

make/profile-includes.txt
  - Bulk of changes as described above

make/profile-rtjar-includes.txt
  - Additional packages that exist on OSX only (but don't need to be 
conditionally added)
  - NOTE: if AIX or other platform add platform specific packages not 
already included by an enclosing package, then they will also need to be 
added

Thanks,
David



More information about the build-dev mailing list