[Gradle] Only register CInteropMetadataDependencyTransformationTask's for shared native source sets
KT-58712
diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/internal/CInteropMetadataDependencyTransformationTask.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/internal/CInteropMetadataDependencyTransformationTask.kt
index ecb3445..0ec4127 100644
--- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/internal/CInteropMetadataDependencyTransformationTask.kt
+++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/internal/CInteropMetadataDependencyTransformationTask.kt
@@ -16,6 +16,7 @@
import org.jetbrains.kotlin.gradle.plugin.PropertiesProvider.Companion.kotlinPropertiesProvider
import org.jetbrains.kotlin.gradle.plugin.ide.Idea222Api
import org.jetbrains.kotlin.gradle.plugin.ide.ideaImportDependsOn
+import org.jetbrains.kotlin.gradle.plugin.launch
import org.jetbrains.kotlin.gradle.plugin.mpp.*
import org.jetbrains.kotlin.gradle.plugin.mpp.MetadataDependencyResolution.ChooseVisibleSourceSets
import org.jetbrains.kotlin.gradle.plugin.mpp.MetadataDependencyResolution.ChooseVisibleSourceSets.MetadataProvider.ArtifactMetadataProvider
@@ -44,6 +45,7 @@
sourceSet: DefaultKotlinSourceSet,
): TaskProvider<CInteropMetadataDependencyTransformationTask>? {
if (!cInteropCommonizationEnabled()) return null
+ if (sourceSet.internal.commonizerTarget.await() !is SharedCommonizerTarget) return null
return locateOrRegisterTask(
sourceSet.cinteropMetadataDependencyTransformationTaskName,
@@ -56,7 +58,7 @@
/* transformProjectDependencies = */
true,
),
- configureTask = { configureTaskOrder(); onlyIfSourceSetIsSharedNative() }
+ configureTask = { configureTaskOrder() }
)
}
@@ -64,6 +66,7 @@
sourceSet: DefaultKotlinSourceSet,
): TaskProvider<CInteropMetadataDependencyTransformationTask>? {
if (!cInteropCommonizationEnabled()) return null
+ if (sourceSet.internal.commonizerTarget.await() !is SharedCommonizerTarget) return null
return locateOrRegisterTask(
sourceSet.cinteropMetadataDependencyTransformationForIdeTaskName,
@@ -84,7 +87,7 @@
/* transformProjectDependencies = */
false, // For IDE Project Dependencies will be transformed during configuration, see [createCInteropMetadataDependencyClasspath]
),
- configureTask = { configureTaskOrder(); onlyIfSourceSetIsSharedNative() }
+ configureTask = { configureTaskOrder() }
)
}
@@ -105,10 +108,6 @@
mustRunAfter(tasksForVisibleSourceSets)
}
-private fun CInteropMetadataDependencyTransformationTask.onlyIfSourceSetIsSharedNative() {
- val isSharedCommonizerTarget = sourceSet.internal.commonizerTarget.getOrThrow() is SharedCommonizerTarget
- onlyIf { isSharedCommonizerTarget }
-}
internal open class CInteropMetadataDependencyTransformationTask @Inject constructor(
@Transient @get:Internal val sourceSet: DefaultKotlinSourceSet,
@@ -167,7 +166,7 @@
}
private fun materializeMetadata(
- chooseVisibleSourceSets: ChooseVisibleSourceSets
+ chooseVisibleSourceSets: ChooseVisibleSourceSets,
): Iterable<File> {
val metadataProvider = chooseVisibleSourceSets.metadataProvider
return when (metadataProvider) {
diff --git a/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/unitTests/CInteropMetadataDependencyTransformationTaskTest.kt b/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/unitTests/CInteropMetadataDependencyTransformationTaskTest.kt
index 37bd5c7..6b45bf8 100644
--- a/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/unitTests/CInteropMetadataDependencyTransformationTaskTest.kt
+++ b/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/unitTests/CInteropMetadataDependencyTransformationTaskTest.kt
@@ -66,7 +66,6 @@
linuxX64Test.dependsOn(nativeTest)
linuxArm64Test.dependsOn(nativeTest)
- KotlinPluginLifecycle.Stage.ReadyForExecution.await()
val nativeTestTransformationTask = locateOrRegisterCInteropMetadataDependencyTransformationTask(nativeTest)
@@ -102,18 +101,10 @@
linuxX64Main.dependsOn(linuxMain)
project.runLifecycleAwareTest {
- KotlinPluginLifecycle.Stage.ReadyForExecution.await()
-
listOf(
"commonMain", "jvmMain", "linuxArm64Main", "linuxX64Main"
).map { sourceSetName -> kotlin.sourceSets.getByName(sourceSetName) }.forEach { sourceSet ->
- val task = locateOrRegisterCInteropMetadataDependencyTransformationTask(sourceSet as DefaultKotlinSourceSet)
- ?: return@forEach
-
- assertFalse(
- task.get().onlyIf.isSatisfiedBy(task.get() as TaskInternal),
- "Expected task ${task.name} to be disabled (not a shared native source set)"
- )
+ assertNull(locateOrRegisterCInteropMetadataDependencyTransformationTask(sourceSet as DefaultKotlinSourceSet))
}
val linuxMainTask = locateOrRegisterCInteropMetadataDependencyTransformationTaskForIde(linuxMain)