From 02c1d7fad35118ca12934c047d953f4c96f815aa Mon Sep 17 00:00:00 2001 From: "sebastian.sellmair" Date: Thu, 8 Apr 2021 12:25:12 +0200 Subject: [PATCH] [Gradle] HierarchicalNativeDistributionCommonizerTask: Ensure that native distribution commonization tasks can't run in parallel --- .../HierarchicalNativeDistributionCommonizerTask.kt | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/native/internal/HierarchicalNativeDistributionCommonizerTask.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/native/internal/HierarchicalNativeDistributionCommonizerTask.kt index 42974170a31..02e5690c42c 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/native/internal/HierarchicalNativeDistributionCommonizerTask.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/native/internal/HierarchicalNativeDistributionCommonizerTask.kt @@ -50,6 +50,17 @@ internal open class HierarchicalNativeDistributionCommonizerTask : DefaultTask() val outputDirectories: Set get() = rootCommonizerTargets.map(::getRootOutputDirectory).toSet() + /* + Ensures that only one CommonizerTask can run at a time. + This is necessary because of the success-marker mechanism of this task. + This is a phantom file: No one has the intention to actually create this output file. + However, telling Gradle that all those tasks rely on the same output file will enforce + non-parallel execution. + */ + @get:OutputFile + @Suppress("unused") + val taskMutex: File = project.rootProject.file(".commonizer-phantom-output") + @get:Internal internal val commonizerRunner = KotlinNativeCommonizerToolRunner(project)