[Gradle] Keep stdlib-common for shared native source sets

^KT-56278 Verification Pending
This commit is contained in:
Sebastian Sellmair
2023-01-30 10:27:30 +01:00
committed by Space Team
parent 090a58ccc4
commit 35c0a3d391
5 changed files with 29 additions and 6 deletions
@@ -34,7 +34,8 @@ class MppCompositeBuildIT : KGPBaseTest() {
regularSourceDependency("producerBuild::producerA/commonMain"), regularSourceDependency("producerBuild::producerA/commonMain"),
regularSourceDependency("producerBuild::producerA/nativeMain"), regularSourceDependency("producerBuild::producerA/nativeMain"),
regularSourceDependency("producerBuild::producerA/linuxMain"), regularSourceDependency("producerBuild::producerA/linuxMain"),
kotilnNativeDistributionDependencies kotilnNativeDistributionDependencies,
binaryCoordinates(Regex(".*stdlib-common:.*")) /* KT-56278 */
) )
dependencies["linuxMain"].assertMatches( dependencies["linuxMain"].assertMatches(
@@ -47,7 +48,7 @@ class MppCompositeBuildIT : KGPBaseTest() {
dependsOnDependency(":consumerA/nativeMain"), dependsOnDependency(":consumerA/nativeMain"),
dependsOnDependency(":consumerA/linuxMain"), dependsOnDependency(":consumerA/linuxMain"),
projectArtifactDependency(Regular, "producerBuild::producerA", FilePathRegex(".*/linuxX64/main/klib/producerA.klib")), projectArtifactDependency(Regular, "producerBuild::producerA", FilePathRegex(".*/linuxX64/main/klib/producerA.klib")),
kotilnNativeDistributionDependencies kotilnNativeDistributionDependencies,
) )
} }
} }
@@ -21,6 +21,7 @@ import org.jetbrains.kotlin.gradle.plugin.extraProperties
import org.jetbrains.kotlin.gradle.plugin.ide.IdeMultiplatformImport.DependencyResolutionLevel.Default import org.jetbrains.kotlin.gradle.plugin.ide.IdeMultiplatformImport.DependencyResolutionLevel.Default
import org.jetbrains.kotlin.gradle.plugin.ide.IdeMultiplatformImport.DependencyResolutionLevel.Overwrite import org.jetbrains.kotlin.gradle.plugin.ide.IdeMultiplatformImport.DependencyResolutionLevel.Overwrite
import org.jetbrains.kotlin.gradle.plugin.ide.IdeMultiplatformImport.SourceSetConstraint import org.jetbrains.kotlin.gradle.plugin.ide.IdeMultiplatformImport.SourceSetConstraint
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinNativeCompilation
import org.jetbrains.kotlin.gradle.plugin.sources.internal import org.jetbrains.kotlin.gradle.plugin.sources.internal
import org.jetbrains.kotlin.gradle.plugin.sources.project import org.jetbrains.kotlin.gradle.plugin.sources.project
import org.jetbrains.kotlin.gradle.targets.metadata.isNativeSourceSet import org.jetbrains.kotlin.gradle.targets.metadata.isNativeSourceSet
@@ -176,6 +177,12 @@ interface IdeMultiplatformImport {
val isNative = SourceSetConstraint { isNativeSourceSet(it) } val isNative = SourceSetConstraint { isNativeSourceSet(it) }
val isSharedNative = isNative and SourceSetConstraint { sourceSet ->
sourceSet.internal.compilations.filterIsInstance<KotlinNativeCompilation>()
.map { compilation -> compilation.konanTarget }
.toSet().size > 1
}
val isSinglePlatformType = SourceSetConstraint { isSinglePlatformTypeSourceSet(it) } val isSinglePlatformType = SourceSetConstraint { isSinglePlatformTypeSourceSet(it) }
val isSingleKotlinTarget = SourceSetConstraint { isSingleKotlinTargetSourceSet(it) } val isSingleKotlinTarget = SourceSetConstraint { isSingleKotlinTargetSourceSet(it) }
@@ -150,7 +150,7 @@ internal fun IdeMultiplatformImport(extension: KotlinProjectExtension): IdeMulti
registerDependencyTransformer( registerDependencyTransformer(
transformer = IdePlatformStdlibCommonDependencyFilter, transformer = IdePlatformStdlibCommonDependencyFilter,
constraint = SourceSetConstraint.isSinglePlatformType, constraint = SourceSetConstraint.isSinglePlatformType and !SourceSetConstraint.isSharedNative,
phase = IdeMultiplatformImport.DependencyTransformationPhase.DependencyFilteringPhase, phase = IdeMultiplatformImport.DependencyTransformationPhase.DependencyFilteringPhase,
) )
@@ -82,7 +82,8 @@ class IdeSourcesAndDocumentationResolutionTest {
binaryCoordinates("com.arkivanov.mvikotlin:mvikotlin:3.0.2:jsNativeMain"), binaryCoordinates("com.arkivanov.mvikotlin:mvikotlin:3.0.2:jsNativeMain"),
binaryCoordinates("com.arkivanov.essenty:lifecycle:0.4.2:commonMain"), binaryCoordinates("com.arkivanov.essenty:lifecycle:0.4.2:commonMain"),
binaryCoordinates("com.arkivanov.essenty:instance-keeper:0.4.2:commonMain"), binaryCoordinates("com.arkivanov.essenty:instance-keeper:0.4.2:commonMain"),
IdeNativeStdlibDependencyResolver.nativeStdlibCoordinates(project) IdeNativeStdlibDependencyResolver.nativeStdlibCoordinates(project),
binaryCoordinates(Regex(".*stdlib-common:.*")) /* KT-56278 */
) )
val resolvedDependencies = resolveDependencySources(nativeMain) val resolvedDependencies = resolveDependencySources(nativeMain)
@@ -175,8 +175,22 @@ class IdeStdlibResolutionTest {
project.evaluate() project.evaluate()
project.assertStdlibDependencies(linuxSharedMain, nativeStdlibDependency(kotlin)) project.assertStdlibDependencies(
project.assertStdlibDependencies(linuxSharedTest, nativeStdlibDependency(kotlin)) linuxSharedMain, listOf(
nativeStdlibDependency(kotlin),
/* See: KT-56278: We still need stdlib-common for shared native source sets */
commonStdlibDependency(kotlin)
)
)
project.assertStdlibDependencies(
linuxSharedTest, listOf(
nativeStdlibDependency(kotlin),
/* See: KT-56278: We still need stdlib-common for shared native source sets */
commonStdlibDependency(kotlin)
)
)
} }
@Test @Test