[Gradle] Keep stdlib-common for shared native source sets
^KT-56278 Verification Pending
This commit is contained in:
committed by
Space Team
parent
090a58ccc4
commit
35c0a3d391
+3
-2
@@ -34,7 +34,8 @@ class MppCompositeBuildIT : KGPBaseTest() {
|
||||
regularSourceDependency("producerBuild::producerA/commonMain"),
|
||||
regularSourceDependency("producerBuild::producerA/nativeMain"),
|
||||
regularSourceDependency("producerBuild::producerA/linuxMain"),
|
||||
kotilnNativeDistributionDependencies
|
||||
kotilnNativeDistributionDependencies,
|
||||
binaryCoordinates(Regex(".*stdlib-common:.*")) /* KT-56278 */
|
||||
)
|
||||
|
||||
dependencies["linuxMain"].assertMatches(
|
||||
@@ -47,7 +48,7 @@ class MppCompositeBuildIT : KGPBaseTest() {
|
||||
dependsOnDependency(":consumerA/nativeMain"),
|
||||
dependsOnDependency(":consumerA/linuxMain"),
|
||||
projectArtifactDependency(Regular, "producerBuild::producerA", FilePathRegex(".*/linuxX64/main/klib/producerA.klib")),
|
||||
kotilnNativeDistributionDependencies
|
||||
kotilnNativeDistributionDependencies,
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
+7
@@ -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.Overwrite
|
||||
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.project
|
||||
import org.jetbrains.kotlin.gradle.targets.metadata.isNativeSourceSet
|
||||
@@ -176,6 +177,12 @@ interface IdeMultiplatformImport {
|
||||
|
||||
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 isSingleKotlinTarget = SourceSetConstraint { isSingleKotlinTargetSourceSet(it) }
|
||||
|
||||
+1
-1
@@ -150,7 +150,7 @@ internal fun IdeMultiplatformImport(extension: KotlinProjectExtension): IdeMulti
|
||||
|
||||
registerDependencyTransformer(
|
||||
transformer = IdePlatformStdlibCommonDependencyFilter,
|
||||
constraint = SourceSetConstraint.isSinglePlatformType,
|
||||
constraint = SourceSetConstraint.isSinglePlatformType and !SourceSetConstraint.isSharedNative,
|
||||
phase = IdeMultiplatformImport.DependencyTransformationPhase.DependencyFilteringPhase,
|
||||
)
|
||||
|
||||
|
||||
+2
-1
@@ -82,7 +82,8 @@ class IdeSourcesAndDocumentationResolutionTest {
|
||||
binaryCoordinates("com.arkivanov.mvikotlin:mvikotlin:3.0.2:jsNativeMain"),
|
||||
binaryCoordinates("com.arkivanov.essenty:lifecycle: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)
|
||||
|
||||
+16
-2
@@ -175,8 +175,22 @@ class IdeStdlibResolutionTest {
|
||||
|
||||
project.evaluate()
|
||||
|
||||
project.assertStdlibDependencies(linuxSharedMain, nativeStdlibDependency(kotlin))
|
||||
project.assertStdlibDependencies(linuxSharedTest, nativeStdlibDependency(kotlin))
|
||||
project.assertStdlibDependencies(
|
||||
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
|
||||
|
||||
Reference in New Issue
Block a user