[Gradle] Only register CInteropMetadataDependencyTransformationTask's for shared native source sets

KT-58712
This commit is contained in:
Sebastian Sellmair
2023-06-30 10:02:02 +02:00
committed by Space Team
parent 4695d9088a
commit 8d2ac41454
2 changed files with 7 additions and 17 deletions
@@ -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<CInteropMetadataDependencyTransformationTask>? {
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<CInteropMetadataDependencyTransformationTask>? {
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<File> {
val metadataProvider = chooseVisibleSourceSets.metadataProvider
return when (metadataProvider) {
@@ -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)