[Gradle][Minor] Handle 'isSourcesPublishable' more lazily

... as the value is allowed to change until 'finaliseDsl'

^KT-60159 Verification Pending
This commit is contained in:
Sebastian Sellmair
2023-08-03 12:21:50 +02:00
committed by Space Team
parent 9f2c2b7265
commit fd50b80aa1
3 changed files with 18 additions and 4 deletions
@@ -210,7 +210,7 @@ abstract class AbstractKotlinTargetConfigurator<KotlinTargetType : KotlinTarget>
isCanBeResolved = false
isCanBeConsumed = true
configureSourcesPublicationAttributes(target)
project.whenEvaluated { isCanBeConsumed = target.internal.isSourcesPublishable }
project.launch { isCanBeConsumed = target.internal.isSourcesPublishableFuture.await() }
}
if (createTestCompilation) {
@@ -10,6 +10,8 @@ import org.jetbrains.kotlin.gradle.InternalKotlinGradlePluginApi
import org.jetbrains.kotlin.gradle.plugin.KotlinPluginLifecycle
import org.jetbrains.kotlin.gradle.plugin.KotlinTarget
import org.jetbrains.kotlin.gradle.plugin.KotlinTargetComponent
import org.jetbrains.kotlin.gradle.plugin.await
import org.jetbrains.kotlin.gradle.utils.futureExtension
import org.jetbrains.kotlin.tooling.core.HasMutableExtras
internal interface InternalKotlinTarget : KotlinTarget, HasMutableExtras {
@@ -24,4 +26,10 @@ internal interface InternalKotlinTarget : KotlinTarget, HasMutableExtras {
internal val KotlinTarget.internal: InternalKotlinTarget
get() = (this as? InternalKotlinTarget) ?: throw IllegalArgumentException(
"KotlinTarget($name) ${this::class} does not implement ${InternalKotlinTarget::class}"
)
)
internal val InternalKotlinTarget.isSourcesPublishableFuture by futureExtension("isSourcesPublishableFuture") {
KotlinPluginLifecycle.Stage.AfterFinaliseDsl.await()
isSourcesPublishable
}
@@ -16,6 +16,8 @@ import org.jetbrains.kotlin.gradle.dsl.multiplatformExtension
import org.jetbrains.kotlin.gradle.plugin.launch
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinTargetSoftwareComponent
import org.jetbrains.kotlin.tooling.core.UnsafeApi
import org.jetbrains.kotlin.gradle.plugin.mpp.isSourcesPublishableFuture
internal fun ExternalKotlinTargetSoftwareComponent(
@@ -32,8 +34,12 @@ internal fun ExternalKotlinTargetSoftwareComponent(
details.mapToMavenScope("runtime")
}
if (target.isSourcesPublishable) {
adhocSoftwareComponent.addVariantsFromConfiguration(target.sourcesElementsPublishedConfiguration) { _ -> }
target.project.launch {
if (target.isSourcesPublishableFuture.await()) {
adhocSoftwareComponent.addVariantsFromConfiguration(target.sourcesElementsPublishedConfiguration) { details ->
details.mapToOptional()
}
}
}
@OptIn(UnsafeApi::class)