From 1ce7286c861fc7d379a03a960f402198e411335f Mon Sep 17 00:00:00 2001 From: Pavel Punegov Date: Thu, 3 Feb 2022 19:37:41 +0300 Subject: [PATCH] [Gradle][K/N] Don't use Gradle daemon <= 6.9 on macOS arm64 Native Apple Silicon support was added in 6.9. Older versions suffer from inability to set environment variables in the daemon process --- .../org/jetbrains/kotlin/gradle/BaseGradleIT.kt | 15 ++++++++++++--- .../kotlin/gradle/native/GeneralNativeIT.kt | 4 ++-- 2 files changed, 14 insertions(+), 5 deletions(-) diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/BaseGradleIT.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/BaseGradleIT.kt index ecfbe241349..645244938a3 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/BaseGradleIT.kt +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/BaseGradleIT.kt @@ -24,6 +24,8 @@ import org.jetbrains.kotlin.gradle.testbase.readAndCleanupTestResults import org.jetbrains.kotlin.gradle.testbase.addPluginManagementToSettings import org.jetbrains.kotlin.gradle.util.* import org.jetbrains.kotlin.gradle.util.modify +import org.jetbrains.kotlin.konan.target.HostManager +import org.jetbrains.kotlin.konan.target.KonanTarget import org.jetbrains.kotlin.test.RunnerWithMuteInDatabase import org.jetbrains.kotlin.test.util.trimTrailingWhitespaces import org.junit.After @@ -418,10 +420,17 @@ abstract class BaseGradleIT { ) { val wrapperVersion = chooseWrapperVersionOrFinishTest() - val env = createEnvironmentVariablesMap(options) + // TODO: remove this when the minimal Gradle version is >= 6.9 + val buildOptions = if (HostManager.host == KonanTarget.MACOS_ARM64) { + val minSupportedMacAArch64Version = GradleVersion.version("6.9") + val withDaemon = (GradleVersion.version(wrapperVersion) >= minSupportedMacAArch64Version) + options.copy(withDaemon = withDaemon && options.withDaemon) + } else options + + val env = createEnvironmentVariablesMap(buildOptions) val wrapperDir = prepareWrapper(wrapperVersion, env) - val cmd = createBuildCommand(wrapperDir, params, options) + val cmd = createBuildCommand(wrapperDir, params, buildOptions) if (!projectDir.exists()) { setupWorkingDir() @@ -431,7 +440,7 @@ abstract class BaseGradleIT { var result: ProcessRunResult? = null try { - result = runProcess(cmd, projectDir, env, options) + result = runProcess(cmd, projectDir, env, buildOptions) CompiledProject(this, result.output, result.exitCode).check() } catch (t: Throwable) { println("<=== Test build: ${this.projectName} $cmd ===>") diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/native/GeneralNativeIT.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/native/GeneralNativeIT.kt index 7a530066b7e..41ebf22de33 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/native/GeneralNativeIT.kt +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/native/GeneralNativeIT.kt @@ -667,14 +667,14 @@ class GeneralNativeIT : BaseGradleIT() { } // Check that setting new value to tracked environment variable triggers tests rerun - build("check", options = defaultBuildOptions().copy(withDaemon = false, androidHome = projectDir)) { + build("check", options = defaultBuildOptions().copy(androidHome = projectDir)) { assertSuccessful() assertTasksExecuted(*testsToExecute.toTypedArray()) assertTasksSkipped(*testsToSkip.toTypedArray()) } - build("check", options = defaultBuildOptions().copy(withDaemon = false, androidHome = projectDir)) { + build("check", options = defaultBuildOptions().copy(androidHome = projectDir)) { assertSuccessful() assertTasksUpToDate(*testsToExecute.toTypedArray())