27 import java.io.*; |
27 import java.io.*; |
28 import java.nio.file.InvalidPathException; |
28 import java.nio.file.InvalidPathException; |
29 import java.nio.file.Path; |
29 import java.nio.file.Path; |
30 import java.text.MessageFormat; |
30 import java.text.MessageFormat; |
31 import java.util.*; |
31 import java.util.*; |
|
32 import java.util.function.Function; |
32 import java.util.function.Predicate; |
33 import java.util.function.Predicate; |
33 import java.util.stream.Collectors; |
34 import java.util.stream.Collectors; |
34 import java.util.stream.Stream; |
35 import java.util.stream.Stream; |
35 import static jdk.jpackage.internal.DesktopIntegration.*; |
36 import static jdk.jpackage.internal.DesktopIntegration.*; |
36 import static jdk.jpackage.internal.LinuxAppBundler.LINUX_INSTALL_DIR; |
37 import static jdk.jpackage.internal.LinuxAppBundler.LINUX_INSTALL_DIR; |
97 File outputParentDir) throws PackagerException { |
98 File outputParentDir) throws PackagerException { |
98 IOUtils.writableOutputDir(outputParentDir.toPath()); |
99 IOUtils.writableOutputDir(outputParentDir.toPath()); |
99 |
100 |
100 PlatformPackage thePackage = createMetaPackage(params); |
101 PlatformPackage thePackage = createMetaPackage(params); |
101 |
102 |
|
103 Function<File, ApplicationLayout> initAppImageLayout = imageRoot -> { |
|
104 ApplicationLayout layout = appImageLayout(params); |
|
105 layout.pathGroup().setPath(new Object(), |
|
106 AppImageFile.getPathInAppImage(Path.of(""))); |
|
107 return layout.resolveAt(imageRoot.toPath()); |
|
108 }; |
|
109 |
102 try { |
110 try { |
103 File appImage = StandardBundlerParam.getPredefinedAppImage(params); |
111 File appImage = StandardBundlerParam.getPredefinedAppImage(params); |
104 |
112 |
105 // we either have an application image or need to build one |
113 // we either have an application image or need to build one |
106 if (appImage != null) { |
114 if (appImage != null) { |
107 appImageLayout(params).resolveAt(appImage.toPath()).copy( |
115 initAppImageLayout.apply(appImage).copy( |
108 thePackage.sourceApplicationLayout()); |
116 thePackage.sourceApplicationLayout()); |
109 } else { |
117 } else { |
110 appImage = APP_BUNDLER.fetchFrom(params).doBundle(params, |
118 appImage = APP_BUNDLER.fetchFrom(params).doBundle(params, |
111 thePackage.sourceRoot().toFile(), true); |
119 thePackage.sourceRoot().toFile(), true); |
112 ApplicationLayout srcAppLayout = appImageLayout(params).resolveAt( |
120 ApplicationLayout srcAppLayout = initAppImageLayout.apply( |
113 appImage.toPath()); |
121 appImage); |
114 if (appImage.equals(PREDEFINED_RUNTIME_IMAGE.fetchFrom(params))) { |
122 if (appImage.equals(PREDEFINED_RUNTIME_IMAGE.fetchFrom(params))) { |
115 // Application image points to run-time image. |
123 // Application image points to run-time image. |
116 // Copy it. |
124 // Copy it. |
117 srcAppLayout.copy(thePackage.sourceApplicationLayout()); |
125 srcAppLayout.copy(thePackage.sourceApplicationLayout()); |
118 } else { |
126 } else { |