Skip to content

Commit 7c5bd00

Browse files
authored
Merge pull request #1054 from Stefterv/include-jdk
Change for `includeJDK` to grab the running JDK
2 parents ed1256f + 527bded commit 7c5bd00

File tree

2 files changed

+61
-101
lines changed

2 files changed

+61
-101
lines changed

app/build.gradle.kts

Lines changed: 57 additions & 94 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
1-
import org.gradle.kotlin.dsl.support.zipTo
1+
import org.gradle.internal.jvm.Jvm
2+
import org.gradle.internal.os.OperatingSystem
23
import org.gradle.nativeplatform.platform.internal.DefaultNativePlatform
34
import org.jetbrains.compose.desktop.application.dsl.TargetFormat
45
import org.jetbrains.compose.desktop.application.tasks.AbstractJPackageTask
56
import org.jetbrains.compose.internal.de.undercouch.gradle.tasks.download.Download
6-
import org.jetbrains.kotlin.fir.scopes.impl.overrides
77
import java.io.FileOutputStream
88
import java.util.zip.ZipEntry
99
import java.util.zip.ZipOutputStream
@@ -139,11 +139,11 @@ tasks.compileJava{
139139
val version = if(project.version == "unspecified") "1.0.0" else project.version
140140

141141
tasks.register<Exec>("installCreateDmg") {
142-
onlyIf { org.gradle.internal.os.OperatingSystem.current().isMacOsX }
142+
onlyIf { OperatingSystem.current().isMacOsX }
143143
commandLine("arch", "-arm64", "brew", "install", "--quiet", "create-dmg")
144144
}
145145
tasks.register<Exec>("packageCustomDmg"){
146-
onlyIf { org.gradle.internal.os.OperatingSystem.current().isMacOsX }
146+
onlyIf { OperatingSystem.current().isMacOsX }
147147
group = "compose desktop"
148148

149149
val distributable = tasks.named<AbstractJPackageTask>("createDistributable").get()
@@ -173,8 +173,6 @@ tasks.register<Exec>("packageCustomDmg"){
173173
extra.add("25")
174174
}
175175

176-
commandLine("brew", "install", "--quiet", "create-dmg")
177-
178176
commandLine("create-dmg",
179177
"--volname", packageName,
180178
"--volicon", file("macos/volume.icns"),
@@ -191,7 +189,7 @@ tasks.register<Exec>("packageCustomDmg"){
191189
}
192190

193191
tasks.register<Exec>("packageCustomMsi"){
194-
onlyIf { org.gradle.internal.os.OperatingSystem.current().isWindows }
192+
onlyIf { OperatingSystem.current().isWindows }
195193
dependsOn("createDistributable")
196194
workingDir = file("windows")
197195
group = "compose desktop"
@@ -207,20 +205,22 @@ tasks.register<Exec>("packageCustomMsi"){
207205
)
208206
}
209207

210-
val snapname = findProperty("snapname") ?: rootProject.name
211-
val snaparch = when (System.getProperty("os.arch")) {
212-
"amd64", "x86_64" -> "amd64"
213-
"aarch64" -> "arm64"
214-
else -> System.getProperty("os.arch")
215-
}
208+
216209
tasks.register("generateSnapConfiguration"){
217-
onlyIf { org.gradle.internal.os.OperatingSystem.current().isLinux }
210+
val name = findProperty("snapname") ?: rootProject.name
211+
val arch = when (System.getProperty("os.arch")) {
212+
"amd64", "x86_64" -> "amd64"
213+
"aarch64" -> "arm64"
214+
else -> System.getProperty("os.arch")
215+
}
216+
217+
onlyIf { OperatingSystem.current().isLinux }
218218
val distributable = tasks.named<AbstractJPackageTask>("createDistributable").get()
219219
dependsOn(distributable)
220220

221221
val dir = distributable.destinationDir.get()
222222
val content = """
223-
name: $snapname
223+
name: $name
224224
version: $version
225225
base: core22
226226
summary: A creative coding editor
@@ -248,20 +248,19 @@ tasks.register("generateSnapConfiguration"){
248248
parts:
249249
processing:
250250
plugin: dump
251-
source: deb/processing_$version-1_$snaparch.deb
251+
source: deb/processing_$version-1_$arch.deb
252252
source-type: deb
253253
stage-packages:
254254
- openjdk-17-jre
255255
override-prime: |
256256
snapcraftctl prime
257-
chmod -R +x opt/processing/lib/app/resources/jdk-*
258257
rm -vf usr/lib/jvm/java-17-openjdk-*/lib/security/cacerts
259258
""".trimIndent()
260259
dir.file("../snapcraft.yaml").asFile.writeText(content)
261260
}
262261

263262
tasks.register<Exec>("packageSnap"){
264-
onlyIf { org.gradle.internal.os.OperatingSystem.current().isLinux }
263+
onlyIf { OperatingSystem.current().isLinux }
265264
dependsOn("packageDeb", "generateSnapConfiguration")
266265
group = "compose desktop"
267266

@@ -283,19 +282,20 @@ tasks.register<Zip>("zipDistributable"){
283282
}
284283

285284
afterEvaluate{
285+
// Override the default DMG task to use our custom one
286286
tasks.named("packageDmg").configure{
287287
dependsOn("packageCustomDmg")
288288
group = "compose desktop"
289289
actions = emptyList()
290290
}
291-
291+
// Override the default MSI task to use our custom one
292292
tasks.named("packageMsi").configure{
293293
dependsOn("packageCustomMsi")
294294
group = "compose desktop"
295295
actions = emptyList()
296296
}
297297
tasks.named("packageDistributionForCurrentOS").configure {
298-
if(org.gradle.internal.os.OperatingSystem.current().isMacOsX
298+
if(OperatingSystem.current().isMacOsX
299299
&& compose.desktop.application.nativeDistributions.macOS.notarization.appleID.isPresent
300300
){
301301
dependsOn("notarizeDmg")
@@ -326,40 +326,9 @@ tasks.register<Copy>("includeJavaMode") {
326326
into(composeResources("modes/java/mode"))
327327
duplicatesStrategy = DuplicatesStrategy.EXCLUDE
328328
}
329-
tasks.register<Download>("includeJdk") {
330-
val os = DefaultNativePlatform.getCurrentOperatingSystem()
331-
val arch = when (System.getProperty("os.arch")) {
332-
"amd64", "x86_64" -> "x64"
333-
else -> System.getProperty("os.arch")
334-
}
335-
val platform = when {
336-
os.isWindows -> "windows"
337-
os.isMacOsX -> "mac"
338-
else -> "linux"
339-
}
340-
341-
val javaVersion = System.getProperty("java.version").split(".")[0]
342-
val imageType = "jdk"
343-
344-
src("https://api.adoptium.net/v3/binary/latest/" +
345-
"$javaVersion/ga/" +
346-
"$platform/" +
347-
"$arch/" +
348-
"$imageType/" +
349-
"hotspot/normal/eclipse?project=jdk")
350-
351-
val extension = if (os.isWindows) "zip" else "tar.gz"
352-
val jdk = layout.buildDirectory.file("tmp/jdk-$platform-$arch.$extension")
353-
dest(jdk)
354-
overwrite(false)
355-
doLast {
356-
copy {
357-
val archive = if (os.isWindows) { zipTree(jdk) } else { tarTree(jdk) }
358-
from(archive){ eachFile{ permissions{ unix("755") } } }
359-
into(composeResources(""))
360-
}
361-
}
362-
finalizedBy("prepareAppResources")
329+
tasks.register<Copy>("includeJdk") {
330+
from(Jvm.current().javaHome.absolutePath)
331+
destinationDir = composeResources("jdk").get().asFile
363332
}
364333
tasks.register<Copy>("includeSharedAssets"){
365334
from("../build/shared/")
@@ -405,6 +374,7 @@ tasks.register<Copy>("includeJavaModeResources") {
405374
from(java.layout.buildDirectory.dir("resources-bundled"))
406375
into(composeResources("../"))
407376
}
377+
// TODO: Move to java mode
408378
tasks.register<Copy>("renameWindres") {
409379
dependsOn("includeSharedAssets","includeJavaModeResources")
410380
val dir = composeResources("modes/java/application/launch4j/bin/")
@@ -421,29 +391,29 @@ tasks.register<Copy>("renameWindres") {
421391
duplicatesStrategy = DuplicatesStrategy.INCLUDE
422392
into(dir)
423393
}
424-
tasks.register("signResources"){
425-
onlyIf {
426-
org.gradle.internal.os.OperatingSystem.current().isMacOsX
427-
&&
428-
compose.desktop.application.nativeDistributions.macOS.signing.sign.get()
429-
}
430-
group = "compose desktop"
394+
tasks.register("includeProcessingResources"){
431395
dependsOn(
396+
"includeJdk",
432397
"includeCore",
433398
"includeJavaMode",
434-
"includeJdk",
435399
"includeSharedAssets",
436400
"includeProcessingExamples",
437401
"includeProcessingWebsiteExamples",
438402
"includeJavaModeResources",
439403
"renameWindres"
440404
)
441-
finalizedBy("prepareAppResources")
405+
finalizedBy("signResources")
406+
}
442407

408+
tasks.register("signResources"){
409+
onlyIf {
410+
OperatingSystem.current().isMacOsX
411+
&&
412+
compose.desktop.application.nativeDistributions.macOS.signing.sign.get()
413+
}
414+
group = "compose desktop"
443415
val resourcesPath = composeResources("")
444416

445-
446-
447417
// find jars in the resources directory
448418
val jars = mutableListOf<File>()
449419
doFirst{
@@ -476,7 +446,7 @@ tasks.register("signResources"){
476446
include("**/*x86_64*")
477447
include("**/*ffmpeg*")
478448
include("**/ffmpeg*/**")
479-
exclude("jdk-*/**")
449+
exclude("jdk/**")
480450
exclude("*.jar")
481451
exclude("*.so")
482452
exclude("*.dll")
@@ -512,39 +482,32 @@ tasks.register("signResources"){
512482

513483

514484
}
515-
afterEvaluate {
516-
tasks.named("prepareAppResources").configure {
517-
dependsOn(
518-
"includeCore",
519-
"includeJavaMode",
520-
"includeSharedAssets",
521-
"includeProcessingExamples",
522-
"includeProcessingWebsiteExamples",
523-
"includeJavaModeResources",
524-
"renameWindres"
525-
)
526-
}
527-
tasks.register("setExecutablePermissions") {
528-
description = "Sets executable permissions on binaries in Processing.app resources"
529-
group = "compose desktop"
485+
tasks.register("setExecutablePermissions") {
486+
description = "Sets executable permissions on binaries in Processing.app resources"
487+
group = "compose desktop"
530488

531-
doLast {
532-
val resourcesPath = layout.buildDirectory.dir("compose/binaries")
533-
fileTree(resourcesPath) {
534-
include("**/resources/**/bin/**")
535-
include("**/resources/**/*.sh")
536-
include("**/resources/**/*.dylib")
537-
include("**/resources/**/*.so")
538-
include("**/resources/**/*.exe")
539-
}.forEach { file ->
540-
if (file.isFile) {
541-
file.setExecutable(true, false)
542-
}
489+
doLast {
490+
val resourcesPath = layout.buildDirectory.dir("compose/binaries")
491+
fileTree(resourcesPath) {
492+
include("**/resources/**/bin/**")
493+
include("**/resources/**/lib/**")
494+
include("**/resources/**/*.sh")
495+
include("**/resources/**/*.dylib")
496+
include("**/resources/**/*.so")
497+
include("**/resources/**/*.exe")
498+
}.forEach { file ->
499+
if (file.isFile) {
500+
file.setExecutable(true, false)
543501
}
544502
}
545503
}
504+
}
505+
506+
afterEvaluate {
507+
tasks.named("prepareAppResources").configure {
508+
dependsOn("includeProcessingResources")
509+
}
546510
tasks.named("createDistributable").configure {
547-
dependsOn("signResources", "includeJdk")
548511
finalizedBy("setExecutablePermissions")
549512
}
550513
}

app/src/processing/app/Platform.java

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -391,17 +391,14 @@ static public File getContentFile(String name) {
391391
static public File getJavaHome() {
392392
var resourcesDir = System.getProperty("compose.application.resources.dir");
393393
if(resourcesDir != null) {
394-
var jdkFolder = Arrays.stream(new File(resourcesDir).listFiles((dir, name) -> dir.isDirectory() && name.startsWith("jdk-")))
395-
.findFirst()
396-
.orElse(null);
397-
if(Platform.isMacOS()){
398-
return new File(jdkFolder, "Contents/Home");
399-
}
394+
var jdkFolder = new File(resourcesDir,"jdk");
395+
if(jdkFolder.exists()){
400396
return jdkFolder;
397+
}
401398
}
402399

403400
var home = System.getProperty("java.home");
404-
if(home != null && new File(home, "bin/java").exists()){
401+
if(home != null){
405402
return new File(home);
406403
}
407404
if (Platform.isMacOS()) {

0 commit comments

Comments
 (0)