From 49e5878b9f1c3ec74fa0852955afef1f89d57f29 Mon Sep 17 00:00:00 2001 From: Stef Tervelde Date: Mon, 16 Dec 2024 22:49:17 +0100 Subject: [PATCH] Application export Small macOS regression --- app/build.gradle.kts | 19 +++++++++++++++-- gradle/libs.versions.toml | 1 + java/build.gradle.kts | 1 + java/src/processing/mode/java/JavaBuild.java | 22 +++++++++++--------- 4 files changed, 31 insertions(+), 12 deletions(-) diff --git a/app/build.gradle.kts b/app/build.gradle.kts index c638db8c2..56d923d46 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -167,9 +167,24 @@ tasks.register("copyJavaMode"){ from(project(":java").layout.buildDirectory.dir("resources-bundled")) into(layout.buildDirectory.dir("resources-bundled")) } - +tasks.register("renameWindres") { + dependsOn("copyJavaMode", "copyShared", "unzipJDK") + val dir = layout.buildDirectory.dir("resources-bundled/common/modes/java/application/launch4j/bin/") + val os: OperatingSystem = DefaultNativePlatform.getCurrentOperatingSystem() + val platform = when { + os.isWindows -> "windows" + os.isMacOsX -> "macos" + else -> "linux" + } + from(dir) { + include("*-$platform*") + rename("(.*)-$platform(.*)", "$1$2") + } + duplicatesStrategy = DuplicatesStrategy.INCLUDE + into(dir) +} afterEvaluate { - tasks.findByName("prepareAppResources")?.dependsOn("unzipJDK","copyShared", "copyCore", "unzipExamples") + tasks.findByName("prepareAppResources")?.dependsOn("unzipJDK","copyShared", "copyCore", "unzipExamples","renameWindres", "copyJavaMode") tasks.register("setExecutablePermissions") { description = "Sets executable permissions on binaries in Processing.app resources" group = "compose desktop" diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index a8aa897a3..61703c19a 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -15,6 +15,7 @@ junit = { module = "junit:junit", version = "4.13.2" } mockito = { module = "org.mockito:mockito-core", version = "4.11.0" } antlr = { module = "org.antlr:antlr4", version = "4.7.2" } eclipseJDT = { module = "org.eclipse.jdt:org.eclipse.jdt.core", version = "3.16.0" } +eclipseJDTCompiler = { module = "org.eclipse.jdt:org.eclipse.jdt.compiler.apt", version = "1.3.400" } classpathExplorer = { module = "com.google.classpath-explorer:classpath-explorer", version = "1.0" } netbeansSwing = { module = "org.netbeans.api:org-netbeans-swing-outline", version = "RELEASE210" } ant = { module = "org.apache.ant:ant", version = "1.10.14" } diff --git a/java/build.gradle.kts b/java/build.gradle.kts index ae4a9378e..738af803b 100644 --- a/java/build.gradle.kts +++ b/java/build.gradle.kts @@ -28,6 +28,7 @@ dependencies{ implementation(project(":java:preprocessor")) implementation(libs.eclipseJDT) + implementation(libs.eclipseJDTCompiler) implementation(libs.classpathExplorer) implementation(libs.netbeansSwing) implementation(libs.ant) diff --git a/java/src/processing/mode/java/JavaBuild.java b/java/src/processing/mode/java/JavaBuild.java index 2de6a65d1..d9aeb5b4d 100644 --- a/java/src/processing/mode/java/JavaBuild.java +++ b/java/src/processing/mode/java/JavaBuild.java @@ -732,18 +732,20 @@ protected boolean exportApplication(File destFolder, writer.println("APPL????"); writer.flush(); writer.close(); + if(System.getProperty("compose.application.resources.dir") == null) { + // Use faster(?) native copy here (also to do sym links) + if (embedJava) { + Util.copyDirNative(new File(contentsOrig, "PlugIns"), + new File(contentsFolder, "PlugIns")); + } - // Use faster(?) native copy here (also to do sym links) - if (embedJava) { - Util.copyDirNative(new File(contentsOrig, "PlugIns"), - new File(contentsFolder, "PlugIns")); + File resourcesFolder = new File(contentsFolder, "Resources"); + Util.copyDir(new File(contentsOrig, "Resources/en.lproj"), + new File(resourcesFolder, "en.lproj")); + Util.copyFile(mode.getContentFile("application/application.icns"), + new File(resourcesFolder, "application.icns")); } - - File resourcesFolder = new File(contentsFolder, "Resources"); - Util.copyDir(new File(contentsOrig, "Resources/en.lproj"), - new File(resourcesFolder, "en.lproj")); - Util.copyFile(mode.getContentFile("application/application.icns"), - new File(resourcesFolder, "application.icns")); + // TODO: Handle the java embed and Icon with the new build system } else if (exportPlatform == PConstants.LINUX) { if (embedJava) {