From 8d2ac41454d3721318374bf34ba4fece21204646 Mon Sep 17 00:00:00 2001 From: Sebastian Sellmair Date: Fri, 30 Jun 2023 10:02:02 +0200 Subject: [PATCH] [Gradle] Only register CInteropMetadataDependencyTransformationTask's for shared native source sets KT-58712 --- .../CInteropMetadataDependencyTransformationTask.kt | 13 ++++++------- ...teropMetadataDependencyTransformationTaskTest.kt | 11 +---------- 2 files changed, 7 insertions(+), 17 deletions(-) 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 31462482c51..cef54f29b19 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 @@ -17,6 +17,7 @@ import org.jetbrains.kotlin.gradle.plugin.KotlinSourceSet 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 @@ -45,6 +46,7 @@ internal suspend fun Project.locateOrRegisterCInteropMetadataDependencyTransform sourceSet: DefaultKotlinSourceSet, ): TaskProvider? { if (!cInteropCommonizationEnabled()) return null + if (sourceSet.internal.commonizerTarget.await() !is SharedCommonizerTarget) return null return locateOrRegisterTask( sourceSet.cinteropMetadataDependencyTransformationTaskName, @@ -57,7 +59,7 @@ internal suspend fun Project.locateOrRegisterCInteropMetadataDependencyTransform /* transformProjectDependencies = */ true, ), - configureTask = { configureTaskOrder(); onlyIfSourceSetIsSharedNative() } + configureTask = { configureTaskOrder() } ) } @@ -65,6 +67,7 @@ internal suspend fun Project.locateOrRegisterCInteropMetadataDependencyTransform sourceSet: DefaultKotlinSourceSet, ): TaskProvider? { if (!cInteropCommonizationEnabled()) return null + if (sourceSet.internal.commonizerTarget.await() !is SharedCommonizerTarget) return null return locateOrRegisterTask( sourceSet.cinteropMetadataDependencyTransformationForIdeTaskName, @@ -85,7 +88,7 @@ internal suspend fun Project.locateOrRegisterCInteropMetadataDependencyTransform /* transformProjectDependencies = */ false, // For IDE Project Dependencies will be transformed during configuration, see [createCInteropMetadataDependencyClasspath] ), - configureTask = { configureTaskOrder(); onlyIfSourceSetIsSharedNative() } + configureTask = { configureTaskOrder() } ) } @@ -106,10 +109,6 @@ private fun CInteropMetadataDependencyTransformationTask.configureTaskOrder() { mustRunAfter(tasksForVisibleSourceSets) } -private fun CInteropMetadataDependencyTransformationTask.onlyIfSourceSetIsSharedNative() { - val isSharedCommonizerTarget = sourceSet.internal.commonizerTarget.getOrThrow() is SharedCommonizerTarget - onlyIf { isSharedCommonizerTarget } -} @DisableCachingByDefault(because = "Metadata Dependency Transformation Task doesn't benefit from caching as it doesn't have heavy load") internal open class CInteropMetadataDependencyTransformationTask @Inject constructor( @@ -169,7 +168,7 @@ internal open class CInteropMetadataDependencyTransformationTask @Inject constru } private fun materializeMetadata( - chooseVisibleSourceSets: ChooseVisibleSourceSets + chooseVisibleSourceSets: ChooseVisibleSourceSets, ): Iterable { 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 37bd5c79801..6b45bf81651 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 @@ class CInteropMetadataDependencyTransformationTaskTest : MultiplatformExtensionT linuxX64Test.dependsOn(nativeTest) linuxArm64Test.dependsOn(nativeTest) - KotlinPluginLifecycle.Stage.ReadyForExecution.await() val nativeTestTransformationTask = locateOrRegisterCInteropMetadataDependencyTransformationTask(nativeTest) @@ -102,18 +101,10 @@ class CInteropMetadataDependencyTransformationTaskTest : MultiplatformExtensionT 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)