diff --git a/app/build.gradle.kts b/app/build.gradle.kts index aadb1715f..63554140b 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -1,4 +1,5 @@ import org.gradle.internal.jvm.Jvm +import org.gradle.internal.os.OperatingSystem import org.gradle.nativeplatform.platform.internal.DefaultNativePlatform import org.jetbrains.compose.desktop.application.dsl.TargetFormat import org.jetbrains.compose.desktop.application.tasks.AbstractJPackageTask @@ -135,11 +136,11 @@ tasks.compileJava{ val version = if(project.version == "unspecified") "1.0.0" else project.version tasks.register("installCreateDmg") { - onlyIf { org.gradle.internal.os.OperatingSystem.current().isMacOsX } + onlyIf { OperatingSystem.current().isMacOsX } commandLine("arch", "-arm64", "brew", "install", "--quiet", "create-dmg") } tasks.register("packageCustomDmg"){ - onlyIf { org.gradle.internal.os.OperatingSystem.current().isMacOsX } + onlyIf { OperatingSystem.current().isMacOsX } group = "compose desktop" val distributable = tasks.named("createDistributable").get() @@ -169,8 +170,6 @@ tasks.register("packageCustomDmg"){ extra.add("25") } - commandLine("brew", "install", "--quiet", "create-dmg") - commandLine("create-dmg", "--volname", packageName, "--volicon", file("macos/volume.icns"), @@ -187,7 +186,7 @@ tasks.register("packageCustomDmg"){ } tasks.register("packageCustomMsi"){ - onlyIf { org.gradle.internal.os.OperatingSystem.current().isWindows } + onlyIf { OperatingSystem.current().isWindows } dependsOn("createDistributable") workingDir = file("windows") group = "compose desktop" @@ -203,20 +202,22 @@ tasks.register("packageCustomMsi"){ ) } -val snapname = findProperty("snapname") ?: rootProject.name -val snaparch = when (System.getProperty("os.arch")) { - "amd64", "x86_64" -> "amd64" - "aarch64" -> "arm64" - else -> System.getProperty("os.arch") -} + tasks.register("generateSnapConfiguration"){ - onlyIf { org.gradle.internal.os.OperatingSystem.current().isLinux } + val name = findProperty("snapname") ?: rootProject.name + val arch = when (System.getProperty("os.arch")) { + "amd64", "x86_64" -> "amd64" + "aarch64" -> "arm64" + else -> System.getProperty("os.arch") + } + + onlyIf { OperatingSystem.current().isLinux } val distributable = tasks.named("createDistributable").get() dependsOn(distributable) val dir = distributable.destinationDir.get() val content = """ - name: $snapname + name: $name version: $version base: core22 summary: A creative coding editor @@ -243,7 +244,7 @@ tasks.register("generateSnapConfiguration"){ parts: processing: plugin: dump - source: deb/processing_$version-1_$snaparch.deb + source: deb/processing_$version-1_$arch.deb source-type: deb stage-packages: - openjdk-17-jre @@ -255,7 +256,7 @@ tasks.register("generateSnapConfiguration"){ } tasks.register("packageSnap"){ - onlyIf { org.gradle.internal.os.OperatingSystem.current().isLinux } + onlyIf { OperatingSystem.current().isLinux } dependsOn("packageDeb", "generateSnapConfiguration") group = "compose desktop" @@ -290,7 +291,7 @@ afterEvaluate{ actions = emptyList() } tasks.named("packageDistributionForCurrentOS").configure { - if(org.gradle.internal.os.OperatingSystem.current().isMacOsX + if(OperatingSystem.current().isMacOsX && compose.desktop.application.nativeDistributions.macOS.notarization.appleID.isPresent ){ dependsOn("notarizeDmg") @@ -321,40 +322,9 @@ tasks.register("includeJavaMode") { into(composeResources("modes/java/mode")) duplicatesStrategy = DuplicatesStrategy.EXCLUDE } -tasks.register("includeJdk") { - dependsOn("createDistributable") - doFirst { - val jdk = Jvm.current().javaHome.absolutePath - val target = layout.buildDirectory.dir("compose/binaries").get().asFileTree.matching { include("**/include.jdk") } - .files - .firstOrNull() - ?.parentFile - ?.resolve("jdk") - ?.absolutePath - ?: error("Could not find include.jdk") - - val isWindows = System.getProperty("os.name").lowercase().contains("win") - val isMacOS = System.getProperty("os.name").lowercase().contains("mac") - val command = if (isWindows) { - listOf("xcopy", "/E", "/I", "/Q", jdk, target) - } else { - listOf("cp", "-a", jdk, target) - } - ProcessBuilder(command).inheritIO().start().waitFor() - - if(org.gradle.internal.os.OperatingSystem.current().isMacOsX - && compose.desktop.application.nativeDistributions.macOS.notarization.appleID.isPresent - ) { - // Sign the main binary again since changed it. - val app = layout.buildDirectory.dir("compose/binaries").get().asFileTree.matching { include("**/*.app") } - .files - .firstOrNull() - ?.parentFile ?: error("Could not find Info.plist") - val signCommand = listOf("codesign", "--timestamp", "--force", "--deep","--options=runtime", "--sign", "Developer ID Application", app.absolutePath) - ProcessBuilder(signCommand).inheritIO().start().waitFor() - } - - } +tasks.register("includeJdk") { + from(Jvm.current().javaHome.absolutePath) + destinationDir = composeResources("jdk").get().asFile } tasks.register("includeSharedAssets"){ from("../build/shared/") @@ -400,6 +370,7 @@ tasks.register("includeJavaModeResources") { from(java.layout.buildDirectory.dir("resources-bundled")) into(composeResources("../")) } +// TODO: Move to java mode tasks.register("renameWindres") { dependsOn("includeSharedAssets","includeJavaModeResources") val dir = composeResources("modes/java/application/launch4j/bin/") @@ -416,14 +387,9 @@ tasks.register("renameWindres") { duplicatesStrategy = DuplicatesStrategy.INCLUDE into(dir) } -tasks.register("signResources"){ - onlyIf { - org.gradle.internal.os.OperatingSystem.current().isMacOsX - && - compose.desktop.application.nativeDistributions.macOS.signing.sign.get() - } - group = "compose desktop" +tasks.register("includeProcessingResources"){ dependsOn( + "includeJdk", "includeCore", "includeJavaMode", "includeSharedAssets", @@ -432,12 +398,18 @@ tasks.register("signResources"){ "includeJavaModeResources", "renameWindres" ) - finalizedBy("prepareAppResources") + finalizedBy("signResources") +} +tasks.register("signResources"){ + onlyIf { + OperatingSystem.current().isMacOsX + && + compose.desktop.application.nativeDistributions.macOS.signing.sign.get() + } + group = "compose desktop" val resourcesPath = composeResources("") - - // find jars in the resources directory val jars = mutableListOf() doFirst{ @@ -470,7 +442,7 @@ tasks.register("signResources"){ include("**/*x86_64*") include("**/*ffmpeg*") include("**/ffmpeg*/**") - exclude("jdk-*/**") + exclude("jdk/**") exclude("*.jar") exclude("*.so") exclude("*.dll") @@ -506,39 +478,32 @@ tasks.register("signResources"){ } -afterEvaluate { - tasks.named("prepareAppResources").configure { - dependsOn( - "includeCore", - "includeJavaMode", - "includeSharedAssets", - "includeProcessingExamples", - "includeProcessingWebsiteExamples", - "includeJavaModeResources", - "renameWindres" - ) - } - tasks.register("setExecutablePermissions") { - description = "Sets executable permissions on binaries in Processing.app resources" - group = "compose desktop" +tasks.register("setExecutablePermissions") { + description = "Sets executable permissions on binaries in Processing.app resources" + group = "compose desktop" - doLast { - val resourcesPath = layout.buildDirectory.dir("compose/binaries") - fileTree(resourcesPath) { - include("**/resources/**/bin/**") - include("**/resources/**/*.sh") - include("**/resources/**/*.dylib") - include("**/resources/**/*.so") - include("**/resources/**/*.exe") - }.forEach { file -> - if (file.isFile) { - file.setExecutable(true, false) - } + doLast { + val resourcesPath = layout.buildDirectory.dir("compose/binaries") + fileTree(resourcesPath) { + include("**/resources/**/bin/**") + include("**/resources/**/lib/**") + include("**/resources/**/*.sh") + include("**/resources/**/*.dylib") + include("**/resources/**/*.so") + include("**/resources/**/*.exe") + }.forEach { file -> + if (file.isFile) { + file.setExecutable(true, false) } } } +} + +afterEvaluate { + tasks.named("prepareAppResources").configure { + dependsOn("includeProcessingResources") + } tasks.named("createDistributable").configure { - dependsOn("signResources") - finalizedBy( "includeJdk", "setExecutablePermissions") + finalizedBy("setExecutablePermissions") } } diff --git a/build/shared/include.jdk b/build/shared/include.jdk deleted file mode 100644 index e69de29bb..000000000