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)