Re-submission of https://github.com/openjdk/jdk/pull/25314 after merge conflict 
was resolved. Old PR will be closed.

All comments are addressed from old PR. Merge conflict was significant, so it 
is like new fix.

Fixed jpackage to produce valid Java runtimes based on description below:

Definitions:

- JDK bundle defined as bundle which contains "Contents/Home", 
"Contents/MacOS/libjli.dylib" and "Contents/Info.plist".
- Signed JDK bundle contains all files as JDK bundle + 
"Contents/_CodeSignature".
- JDK image defined as content of "Contents/Home".
- Signed JDK image does not exist, since it cannot be signed as bundle.

jpackage output based on input:

1. "--runtime-image" points to unsigned JDK bundle and --mac-sign is not 
provided:
- jpackage will copy all files as is from provided path and run ad-hoc codesign.

2. "--runtime-image" points to unsigned JDK bundle and --mac-sign is provided:
- jpackage will copy all files as is from provided path and run codesign with 
appropriate certificate based on same logic as we do for application image.
 
3. "--runtime-image" points to signed JDK bundle and --mac-sign is not provided:
- jpackage will copy all files as is from provided path including 
"Contents/_CodeSignature" to preserve signing.

4. "--runtime-image" points to signed JDK bundle and --mac-sign is provided:
- jpackage will copy all files as is from provided path including 
"Contents/_CodeSignature" and will re-sign bundle with appropriate certificate.

5. "--runtime-image" points to JDK image and --mac-sign is not provided:
 - jpackage will check for libjli.dylib presence in "lib" folder.
 - Create JDK bundle by putting all files from provided path to 
"Contents/Home", libjli.dylib from "lib" to "Contents/MacOS/libjli.dylib" and 
create default "Contents/Info.plist" similar to what we do for runtime in 
application image.
- Ad-hoc signing will done.

6. "--runtime-image" points to JDK image and --mac-sign is provided:
- 2 first steps from 5 and certificate signing will be done.

Additional changes:
- The bundle's top directory name will have the ".jdk" suffix.

-------------

Commit messages:
 - 8351073: [macos] jpackage produces invalid Java runtime DMG bundles

Changes: https://git.openjdk.org/jdk/pull/26173/files
  Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=26173&range=00
  Issue: https://bugs.openjdk.org/browse/JDK-8351073
  Stats: 563 lines in 17 files changed: 529 ins; 5 del; 29 mod
  Patch: https://git.openjdk.org/jdk/pull/26173.diff
  Fetch: git fetch https://git.openjdk.org/jdk.git pull/26173/head:pull/26173

PR: https://git.openjdk.org/jdk/pull/26173

Reply via email to