[Gradle] Only register CInteropMetadataDependencyTransformationTask's for shared native source sets
KT-58712
This commit is contained in:
committed by
Space Team
parent
4695d9088a
commit
8d2ac41454
+6
-7
@@ -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.PropertiesProvider.Companion.kotlinPropertiesProvider
|
||||||
import org.jetbrains.kotlin.gradle.plugin.ide.Idea222Api
|
import org.jetbrains.kotlin.gradle.plugin.ide.Idea222Api
|
||||||
import org.jetbrains.kotlin.gradle.plugin.ide.ideaImportDependsOn
|
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.*
|
||||||
import org.jetbrains.kotlin.gradle.plugin.mpp.MetadataDependencyResolution.ChooseVisibleSourceSets
|
import org.jetbrains.kotlin.gradle.plugin.mpp.MetadataDependencyResolution.ChooseVisibleSourceSets
|
||||||
import org.jetbrains.kotlin.gradle.plugin.mpp.MetadataDependencyResolution.ChooseVisibleSourceSets.MetadataProvider.ArtifactMetadataProvider
|
import org.jetbrains.kotlin.gradle.plugin.mpp.MetadataDependencyResolution.ChooseVisibleSourceSets.MetadataProvider.ArtifactMetadataProvider
|
||||||
@@ -45,6 +46,7 @@ internal suspend fun Project.locateOrRegisterCInteropMetadataDependencyTransform
|
|||||||
sourceSet: DefaultKotlinSourceSet,
|
sourceSet: DefaultKotlinSourceSet,
|
||||||
): TaskProvider<CInteropMetadataDependencyTransformationTask>? {
|
): TaskProvider<CInteropMetadataDependencyTransformationTask>? {
|
||||||
if (!cInteropCommonizationEnabled()) return null
|
if (!cInteropCommonizationEnabled()) return null
|
||||||
|
if (sourceSet.internal.commonizerTarget.await() !is SharedCommonizerTarget) return null
|
||||||
|
|
||||||
return locateOrRegisterTask(
|
return locateOrRegisterTask(
|
||||||
sourceSet.cinteropMetadataDependencyTransformationTaskName,
|
sourceSet.cinteropMetadataDependencyTransformationTaskName,
|
||||||
@@ -57,7 +59,7 @@ internal suspend fun Project.locateOrRegisterCInteropMetadataDependencyTransform
|
|||||||
/* transformProjectDependencies = */
|
/* transformProjectDependencies = */
|
||||||
true,
|
true,
|
||||||
),
|
),
|
||||||
configureTask = { configureTaskOrder(); onlyIfSourceSetIsSharedNative() }
|
configureTask = { configureTaskOrder() }
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -65,6 +67,7 @@ internal suspend fun Project.locateOrRegisterCInteropMetadataDependencyTransform
|
|||||||
sourceSet: DefaultKotlinSourceSet,
|
sourceSet: DefaultKotlinSourceSet,
|
||||||
): TaskProvider<CInteropMetadataDependencyTransformationTask>? {
|
): TaskProvider<CInteropMetadataDependencyTransformationTask>? {
|
||||||
if (!cInteropCommonizationEnabled()) return null
|
if (!cInteropCommonizationEnabled()) return null
|
||||||
|
if (sourceSet.internal.commonizerTarget.await() !is SharedCommonizerTarget) return null
|
||||||
|
|
||||||
return locateOrRegisterTask(
|
return locateOrRegisterTask(
|
||||||
sourceSet.cinteropMetadataDependencyTransformationForIdeTaskName,
|
sourceSet.cinteropMetadataDependencyTransformationForIdeTaskName,
|
||||||
@@ -85,7 +88,7 @@ internal suspend fun Project.locateOrRegisterCInteropMetadataDependencyTransform
|
|||||||
/* transformProjectDependencies = */
|
/* transformProjectDependencies = */
|
||||||
false, // For IDE Project Dependencies will be transformed during configuration, see [createCInteropMetadataDependencyClasspath]
|
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)
|
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")
|
@DisableCachingByDefault(because = "Metadata Dependency Transformation Task doesn't benefit from caching as it doesn't have heavy load")
|
||||||
internal open class CInteropMetadataDependencyTransformationTask @Inject constructor(
|
internal open class CInteropMetadataDependencyTransformationTask @Inject constructor(
|
||||||
@@ -169,7 +168,7 @@ internal open class CInteropMetadataDependencyTransformationTask @Inject constru
|
|||||||
}
|
}
|
||||||
|
|
||||||
private fun materializeMetadata(
|
private fun materializeMetadata(
|
||||||
chooseVisibleSourceSets: ChooseVisibleSourceSets
|
chooseVisibleSourceSets: ChooseVisibleSourceSets,
|
||||||
): Iterable<File> {
|
): Iterable<File> {
|
||||||
val metadataProvider = chooseVisibleSourceSets.metadataProvider
|
val metadataProvider = chooseVisibleSourceSets.metadataProvider
|
||||||
return when (metadataProvider) {
|
return when (metadataProvider) {
|
||||||
|
|||||||
+1
-10
@@ -66,7 +66,6 @@ class CInteropMetadataDependencyTransformationTaskTest : MultiplatformExtensionT
|
|||||||
linuxX64Test.dependsOn(nativeTest)
|
linuxX64Test.dependsOn(nativeTest)
|
||||||
linuxArm64Test.dependsOn(nativeTest)
|
linuxArm64Test.dependsOn(nativeTest)
|
||||||
|
|
||||||
KotlinPluginLifecycle.Stage.ReadyForExecution.await()
|
|
||||||
|
|
||||||
val nativeTestTransformationTask = locateOrRegisterCInteropMetadataDependencyTransformationTask(nativeTest)
|
val nativeTestTransformationTask = locateOrRegisterCInteropMetadataDependencyTransformationTask(nativeTest)
|
||||||
|
|
||||||
@@ -102,18 +101,10 @@ class CInteropMetadataDependencyTransformationTaskTest : MultiplatformExtensionT
|
|||||||
linuxX64Main.dependsOn(linuxMain)
|
linuxX64Main.dependsOn(linuxMain)
|
||||||
|
|
||||||
project.runLifecycleAwareTest {
|
project.runLifecycleAwareTest {
|
||||||
KotlinPluginLifecycle.Stage.ReadyForExecution.await()
|
|
||||||
|
|
||||||
listOf(
|
listOf(
|
||||||
"commonMain", "jvmMain", "linuxArm64Main", "linuxX64Main"
|
"commonMain", "jvmMain", "linuxArm64Main", "linuxX64Main"
|
||||||
).map { sourceSetName -> kotlin.sourceSets.getByName(sourceSetName) }.forEach { sourceSet ->
|
).map { sourceSetName -> kotlin.sourceSets.getByName(sourceSetName) }.forEach { sourceSet ->
|
||||||
val task = locateOrRegisterCInteropMetadataDependencyTransformationTask(sourceSet as DefaultKotlinSourceSet)
|
assertNull(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)"
|
|
||||||
)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
val linuxMainTask = locateOrRegisterCInteropMetadataDependencyTransformationTaskForIde(linuxMain)
|
val linuxMainTask = locateOrRegisterCInteropMetadataDependencyTransformationTaskForIde(linuxMain)
|
||||||
|
|||||||
Reference in New Issue
Block a user