From 7c5dd7c451d1fd88c6eb1082960df653d2664a3c Mon Sep 17 00:00:00 2001 From: Anton Lakotka Date: Tue, 8 Aug 2023 14:36:54 +0200 Subject: [PATCH] [stdlib-mpp] Add dependency constraint on kotlin-stdlib-common for... ...other variants where it can be expected. Such as: * commonMainMetadataElements (legacy metadata) * metadataElements (klib metadata) * nativeApiElements This would prevent from leaking kotlin-stdlib-common dependencies of older Kotlin versions. So every KGP configuration where stdlib dependencies is configured automatically will enforce dependency constraints on kotlin-stdlib-common. ^KT-61053 Verification Pending --- libraries/stdlib/build.gradle.kts | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/libraries/stdlib/build.gradle.kts b/libraries/stdlib/build.gradle.kts index f16305b9926..d41400e02e8 100644 --- a/libraries/stdlib/build.gradle.kts +++ b/libraries/stdlib/build.gradle.kts @@ -1,14 +1,14 @@ @file:Suppress("UNUSED_VARIABLE", "NAME_SHADOWING") import org.gradle.api.internal.component.SoftwareComponentInternal import org.gradle.api.internal.component.UsageContext -import java.nio.file.* -import org.jetbrains.kotlin.gradle.targets.js.dsl.KotlinJsTargetDsl -import org.jetbrains.kotlin.gradle.tasks.UsesKotlinJavaToolchain -import plugins.configureDefaultPublishing import org.gradle.jvm.tasks.Jar import org.jetbrains.kotlin.gradle.plugin.KotlinPlatformType import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinUsages +import org.jetbrains.kotlin.gradle.targets.js.dsl.KotlinJsTargetDsl +import org.jetbrains.kotlin.gradle.tasks.UsesKotlinJavaToolchain +import plugins.configureDefaultPublishing import plugins.configureKotlinPomAttributes +import java.nio.file.* plugins { id("kotlin-multiplatform") @@ -461,10 +461,16 @@ kotlin { dependencies { val jvmMainImplementation by configurations.getting + val commonMainMetadataElementsWithClassifier by configurations.creating + val metadataApiElements by configurations.getting + val nativeApiElements by configurations.creating constraints { // there is no dependency anymore from kotlin-stdlib to kotlin-stdlib-common, // but use this constraint to align it if another library brings it transitively jvmMainImplementation(project(":kotlin-stdlib-common")) + commonMainMetadataElementsWithClassifier(project(":kotlin-stdlib-common")) + metadataApiElements(project(":kotlin-stdlib-common")) + nativeApiElements(project(":kotlin-stdlib-common")) // to avoid split package and duplicate classes on classpath after moving them from these artifacts in 1.8.0 jvmMainImplementation("org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.8.0") jvmMainImplementation("org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.8.0")