< prev index next >
modules/fxpackager/src/main/java/com/oracle/tools/packager/mac/MacAppStoreBundler.java
Print this page
rev 9619 : imported patch 9-jake-fxpackager.patch
*** 24,40 ****
*/
package com.oracle.tools.packager.mac;
import com.oracle.tools.packager.BundlerParamInfo;
- import com.oracle.tools.packager.JreUtils;
- import com.oracle.tools.packager.RelativeFileSet;
import com.oracle.tools.packager.StandardBundlerParam;
import com.oracle.tools.packager.Log;
import com.oracle.tools.packager.ConfigException;
import com.oracle.tools.packager.IOUtils;
import com.oracle.tools.packager.UnsupportedPlatformException;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.text.MessageFormat;
--- 24,39 ----
*/
package com.oracle.tools.packager.mac;
import com.oracle.tools.packager.BundlerParamInfo;
import com.oracle.tools.packager.StandardBundlerParam;
import com.oracle.tools.packager.Log;
import com.oracle.tools.packager.ConfigException;
import com.oracle.tools.packager.IOUtils;
import com.oracle.tools.packager.UnsupportedPlatformException;
+ import jdk.packager.builders.mac.MacAppImageBuilder;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.text.MessageFormat;
*** 109,119 ****
// first, load in some overrides
// icns needs @2 versions, so load in the @2 default
p.put(DEFAULT_ICNS_ICON.getID(), TEMPLATE_BUNDLE_ICON_HIDPI);
// next we need to change the jdk/jre stripping to strip gstreamer
! p.put(MAC_RULES.getID(), createMacAppStoreRuntimeRules(p));
// now we create the app
File appImageDir = APP_IMAGE_BUILD_ROOT.fetchFrom(p);
try {
appImageDir.mkdirs();
--- 108,118 ----
// first, load in some overrides
// icns needs @2 versions, so load in the @2 default
p.put(DEFAULT_ICNS_ICON.getID(), TEMPLATE_BUNDLE_ICON_HIDPI);
// next we need to change the jdk/jre stripping to strip gstreamer
! // p.put(MAC_RULES.getID(), createMacAppStoreRuntimeRules(p));
// now we create the app
File appImageDir = APP_IMAGE_BUILD_ROOT.fetchFrom(p);
try {
appImageDir.mkdirs();
*** 127,137 ****
String signingIdentity = MAC_APP_STORE_APP_SIGNING_KEY.fetchFrom(p);
String identifierPrefix = BUNDLE_ID_SIGNING_PREFIX.fetchFrom(p);
String entitlementsFile = getConfig_Entitlements(p).toString();
String inheritEntitlements = getConfig_Inherit_Entitlements(p).toString();
! signAppBundle(p, appLocation, signingIdentity, identifierPrefix, entitlementsFile, inheritEntitlements);
ProcessBuilder pb;
// create the final pkg file
File finalPKG = new File(outdir, INSTALLER_NAME.fetchFrom(p)
+ INSTALLER_SUFFIX.fetchFrom(p)
--- 126,136 ----
String signingIdentity = MAC_APP_STORE_APP_SIGNING_KEY.fetchFrom(p);
String identifierPrefix = BUNDLE_ID_SIGNING_PREFIX.fetchFrom(p);
String entitlementsFile = getConfig_Entitlements(p).toString();
String inheritEntitlements = getConfig_Inherit_Entitlements(p).toString();
! MacAppImageBuilder.signAppBundle(p, appLocation.toPath(), signingIdentity, identifierPrefix, entitlementsFile, inheritEntitlements);
ProcessBuilder pb;
// create the final pkg file
File finalPKG = new File(outdir, INSTALLER_NAME.fetchFrom(p)
+ INSTALLER_SUFFIX.fetchFrom(p)
*** 235,307 ****
private String getInheritEntitlementsFileName(Map<String, ? super Object> params) {
return MAC_BUNDLER_PREFIX+ APP_NAME.fetchFrom(params) +"_Inherit.entitlements";
}
- public static JreUtils.Rule[] createMacAppStoreRuntimeRules(Map<String, ? super Object> params) {
- //Subsetting of JRE is restricted.
- //JRE README defines what is allowed to strip:
- // http://www.oracle.com/technetwork/java/javase/jre-8-readme-2095710.html
- //
-
- List<JreUtils.Rule> rules = new ArrayList<>();
-
- rules.addAll(Arrays.asList(createMacRuntimeRules(params)));
-
- File baseDir;
-
- if (params.containsKey(MAC_RUNTIME.getID())) {
- Object o = params.get(MAC_RUNTIME.getID());
- if (o instanceof RelativeFileSet) {
-
- baseDir = ((RelativeFileSet) o).getBaseDirectory();
- } else {
- baseDir = new File(o.toString());
- }
- } else {
- baseDir = new File(System.getProperty("java.home"));
- }
-
- // we accept either pointing at the directories typically installed at:
- // /Libraries/Java/JavaVirtualMachine/jdk1.8.0_40/
- // * .
- // * Contents/Home
- // * Contents/Home/jre
- // /Library/Internet\ Plug-Ins/JavaAppletPlugin.plugin/
- // * .
- // * /Contents/Home
- // version may change, and if we don't detect any Contents/Home or Contents/Home/jre we will
- // presume we are at a root.
-
-
- try {
- String path = baseDir.getCanonicalPath();
- if (path.endsWith("/Contents/Home/jre")) {
- baseDir = baseDir.getParentFile().getParentFile().getParentFile();
- } else if (path.endsWith("/Contents/Home")) {
- baseDir = baseDir.getParentFile().getParentFile();
- }
- } catch (IOException e) {
- throw new RuntimeException(e);
- }
-
- if (!baseDir.exists()) {
- throw new RuntimeException(I18N.getString("error.non-existent-runtime"),
- new ConfigException(I18N.getString("error.non-existent-runtime"),
- I18N.getString("error.non-existent-runtime.advice")));
- }
-
- if (new File(baseDir, "Contents/Home/lib/libjfxmedia_qtkit.dylib").exists()
- || new File(baseDir, "Contents/Home/jre/lib/libjfxmedia_qtkit.dylib").exists())
- {
- rules.add(JreUtils.Rule.suffixNeg("/lib/libjfxmedia_qtkit.dylib"));
- } else {
- rules.add(JreUtils.Rule.suffixNeg("/lib/libjfxmedia.dylib"));
- }
- return rules.toArray(new JreUtils.Rule[rules.size()]);
- }
-
//////////////////////////////////////////////////////////////////////////////////
// Implement Bundler
//////////////////////////////////////////////////////////////////////////////////
@Override
--- 234,243 ----
*** 358,375 ****
// hdiutil is always available so there's no need to test for availability.
//run basic validation to ensure requirements are met
// Mac App Store apps cannot use the system runtime
! if (params.containsKey(MAC_RUNTIME.getID()) && params.get(MAC_RUNTIME.getID()) == null) {
! throw new ConfigException(
! I18N.getString("error.no-system-runtime"),
! I18N.getString("error.no-system-runtime.advice"));
! }
!
! //we need to change the jdk/jre stripping to strip qtkit code
! params.put(MAC_RULES.getID(), createMacAppStoreRuntimeRules(params));
//we are not interested in return code, only possible exception
validateAppImageAndBundeler(params);
// reject explicitly set to not sign
--- 294,304 ----
// hdiutil is always available so there's no need to test for availability.
//run basic validation to ensure requirements are met
// Mac App Store apps cannot use the system runtime
! //TODO
//we are not interested in return code, only possible exception
validateAppImageAndBundeler(params);
// reject explicitly set to not sign
< prev index next >