[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/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,
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+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.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) }
|
||||||
|
|||||||
+1
-1
@@ -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,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
+2
-1
@@ -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)
|
||||||
|
|||||||
+16
-2
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user