From 52b41db99a955b5d4d88f17d7b12f11afd14e295 Mon Sep 17 00:00:00 2001 From: Sascha Lisson Date: Mon, 20 Jan 2025 09:22:11 +0100 Subject: [PATCH] fix: use an absolute path when executing ant At least with Java 21 on OSX executing an application by just specifying the name instead of the absolute path fails with "No such file". --- .../org/modelix/gradle/mpsbuild/MPSBuildPlugin.kt | 3 ++- .../org/modelix/buildtools/BuildScriptGenerator.kt | 10 +++++++++- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/build-tools-gradle/src/main/kotlin/org/modelix/gradle/mpsbuild/MPSBuildPlugin.kt b/build-tools-gradle/src/main/kotlin/org/modelix/gradle/mpsbuild/MPSBuildPlugin.kt index 5b470c4..ca4d829 100644 --- a/build-tools-gradle/src/main/kotlin/org/modelix/gradle/mpsbuild/MPSBuildPlugin.kt +++ b/build-tools-gradle/src/main/kotlin/org/modelix/gradle/mpsbuild/MPSBuildPlugin.kt @@ -41,6 +41,7 @@ import org.modelix.buildtools.ModulesMiner import org.modelix.buildtools.PublicationDependencyGraph import org.modelix.buildtools.SourceModuleOwner import org.modelix.buildtools.StubsSolutionGenerator +import org.modelix.buildtools.findExecutableAbsolutePath import org.modelix.buildtools.invokelambda.InvokeLambda import org.modelix.buildtools.modelixBuildToolsVersion import org.modelix.buildtools.newChild @@ -230,7 +231,7 @@ class MPSBuildPlugin @Inject constructor(val project: Project) : Plugin val taskAssembleMpsModules = project.tasks.create("assembleMpsModules", Exec::class.java) { workingDir(buildDir.get()) - commandLine(antScriptFile.map { listOf("ant", "-f", it.asFile.absolutePath, "assemble") }.get()) + commandLine(antScriptFile.map { listOf(findExecutableAbsolutePath("ant"), "-f", it.asFile.absolutePath, "assemble") }.get()) standardOutput = System.out errorOutput = System.err standardInput = System.`in` diff --git a/build-tools-lib/src/main/kotlin/org/modelix/buildtools/BuildScriptGenerator.kt b/build-tools-lib/src/main/kotlin/org/modelix/buildtools/BuildScriptGenerator.kt index 64f4c55..95dc4df 100644 --- a/build-tools-lib/src/main/kotlin/org/modelix/buildtools/BuildScriptGenerator.kt +++ b/build-tools-lib/src/main/kotlin/org/modelix/buildtools/BuildScriptGenerator.kt @@ -47,7 +47,7 @@ class BuildScriptGenerator( } fun getAntPath(): String { - return listOf("/usr/local/bin/ant").firstOrNull { File(it).exists() } ?: "ant" + return findExecutableAbsolutePath("ant") } fun generateXML(): String { @@ -953,3 +953,11 @@ class BuildScriptGenerator( } private fun getIdeaPluginsBuildDir(buildDir: File) = buildDir.resolve("idea-plugins") + +fun findExecutableAbsolutePath(name: String): String { + return System.getenv("PATH").split(File.pathSeparatorChar) + .map { File(it).resolve(name) } + .firstOrNull { it.isFile && it.exists() } + ?.absolutePath + ?: name +}