diff --git a/kotlin-native/build-tools/src/main/kotlin/org/jetbrains/kotlin/ExecutorService.kt b/kotlin-native/build-tools/src/main/kotlin/org/jetbrains/kotlin/ExecutorService.kt index b7abc29aeec..10473d8627b 100644 --- a/kotlin-native/build-tools/src/main/kotlin/org/jetbrains/kotlin/ExecutorService.kt +++ b/kotlin-native/build-tools/src/main/kotlin/org/jetbrains/kotlin/ExecutorService.kt @@ -120,7 +120,7 @@ data class ProcessOutput(var stdOut: String, var stdErr: String, var exitCode: I * @param args arguments for a process */ fun runProcess(executor: (Action) -> ExecResult?, - executable: String, args: List): ProcessOutput { + executable: String, args: List, env: Map = emptyMap()): ProcessOutput { val outStream = ByteArrayOutputStream() val errStream = ByteArrayOutputStream() @@ -130,6 +130,7 @@ fun runProcess(executor: (Action) -> ExecResult?, this.standardOutput = outStream this.errorOutput = errStream this.isIgnoreExitValue = true + this.environment(env) }) checkNotNull(execResult) diff --git a/kotlin-native/build-tools/src/main/kotlin/org/jetbrains/kotlin/Utils.kt b/kotlin-native/build-tools/src/main/kotlin/org/jetbrains/kotlin/Utils.kt index 77852518e4e..bd60e2ddeab 100644 --- a/kotlin-native/build-tools/src/main/kotlin/org/jetbrains/kotlin/Utils.kt +++ b/kotlin-native/build-tools/src/main/kotlin/org/jetbrains/kotlin/Utils.kt @@ -300,7 +300,10 @@ fun compileSwift( options + "-o" + output.toString() + sources + if (fullBitcode) listOf("-embed-bitcode", "-Xlinker", "-bitcode_verify") else listOf("-embed-bitcode-marker") - val (stdOut, stdErr, exitCode) = runProcess(executor = localExecutor(project), executable = compiler, args = args) + val (stdOut, stdErr, exitCode) = runProcess( + executor = localExecutor(project), executable = compiler, args = args, + env = mapOf("DYLD_FALLBACK_FRAMEWORK_PATH" to configs.absoluteTargetToolchain + "/ExtraFrameworks") + ) println( """ diff --git a/kotlin-native/performance/buildSrc/src/main/kotlin/benchmark/SwiftBenchmarkingPlugin.kt b/kotlin-native/performance/buildSrc/src/main/kotlin/benchmark/SwiftBenchmarkingPlugin.kt index 60573fe7417..707eaa2fe6c 100644 --- a/kotlin-native/performance/buildSrc/src/main/kotlin/benchmark/SwiftBenchmarkingPlugin.kt +++ b/kotlin-native/performance/buildSrc/src/main/kotlin/benchmark/SwiftBenchmarkingPlugin.kt @@ -100,16 +100,20 @@ open class SwiftBenchmarkingPlugin : BenchmarkingPlugin() { fun Array.runCommand( workingDir: File = File("."), timeoutAmount: Long = 60, - timeoutUnit: TimeUnit = TimeUnit.SECONDS + timeoutUnit: TimeUnit = TimeUnit.SECONDS, + env: Map, ): String { return try { - ProcessBuilder(*this) + val processBuilder = ProcessBuilder(*this) .directory(workingDir) .redirectOutput(ProcessBuilder.Redirect.PIPE) .redirectError(ProcessBuilder.Redirect.PIPE) - .start().apply { - waitFor(timeoutAmount, timeoutUnit) - }.inputStream.bufferedReader().readText() + env.forEach { key, value -> + processBuilder.environment().set(key, value) + } + processBuilder.start().apply { + waitFor(timeoutAmount, timeoutUnit) + }.inputStream.bufferedReader().readText() } catch (e: Exception) { println("Couldn't run command ${this.joinToString(" ")}") println(e.stackTrace.joinToString("\n")) @@ -134,7 +138,10 @@ open class SwiftBenchmarkingPlugin : BenchmarkingPlugin() { val out = mutableListOf().apply { add(compiler) addAll(args) - }.toTypedArray().runCommand(timeoutAmount = 240) + }.toTypedArray().runCommand( + timeoutAmount = 240, + env = mapOf("DYLD_FALLBACK_FRAMEWORK_PATH" to configs.absoluteTargetToolchain + "/ExtraFrameworks"), + ) println( """