From a9bc8fa402c10d2b4f63fe4dda3241eb74aaf4ee Mon Sep 17 00:00:00 2001 From: Ilya Gorbunov Date: Wed, 28 Jun 2023 05:48:24 +0200 Subject: [PATCH] [stdlib-mpp] Exclude kotlin-stdlib-js/js-ir projects and use kotlin-stdlib instead - Specify disambiguating attributes in kotlin-dom-api-compat compile dependency configurations because it uses the flag that removes JS compiler type attribute from all configurations and variants KT-56106 --- build.gradle.kts | 7 ++-- js/js.tests/build.gradle.kts | 2 +- .../kotlin-dom-api-compat/build.gradle.kts | 11 ++++++- libraries/kotlin.test/build.gradle.kts | 2 +- .../js-ir-minimal-for-test/build.gradle.kts | 32 ++++++++++++++----- .../js-ir-runtime-for-ide/build.gradle.kts | 4 +-- .../kotlin-dom-api-compat.pom | 2 +- .../kotlin/kotlin-test-js/kotlin-test-js.pom | 2 +- .../buildsrc-compat/src/main/kotlin/tasks.kt | 1 - settings.gradle | 7 ++-- 10 files changed, 46 insertions(+), 24 deletions(-) diff --git a/build.gradle.kts b/build.gradle.kts index 5a77820b26d..ffa0439f0c8 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -325,7 +325,6 @@ extra["compilerArtifactsForIde"] = listOfNotNull( ":plugins:parcelize:parcelize-runtime", ":kotlin-stdlib-common", ":kotlin-stdlib", - ":kotlin-stdlib-js", ":kotlin-stdlib-wasm", ":kotlin-test", ":kotlin-daemon", @@ -342,7 +341,7 @@ val coreLibProjects by extra { listOfNotNull( ":kotlin-stdlib", ":kotlin-stdlib-common", - ":kotlin-stdlib-js", + ":kotlin-stdlib-js".takeIf { !kotlinBuildProperties.kotlinStdlibMpp }, ":kotlin-stdlib-jdk7", ":kotlin-stdlib-jdk8", ":kotlin-test", @@ -605,9 +604,9 @@ tasks { } register("coreLibsTest") { - (coreLibProjects + listOf( + (coreLibProjects + listOfNotNull( ":kotlin-stdlib:samples", - ":kotlin-stdlib-js-ir", + ":kotlin-stdlib-js-ir".takeIf { !kotlinBuildProperties.kotlinStdlibMpp }, ":kotlin-test:kotlin-test-js-ir".takeIf { !kotlinBuildProperties.isInJpsBuildIdeaSync }, ":kotlin-test:kotlin-test-js:kotlin-test-js-it".takeIf { !kotlinBuildProperties.isInJpsBuildIdeaSync }, ":kotlin-test:kotlin-test-js-ir:kotlin-test-js-ir-it".takeIf { !kotlinBuildProperties.isInJpsBuildIdeaSync }, diff --git a/js/js.tests/build.gradle.kts b/js/js.tests/build.gradle.kts index ba21e55286e..da8c56549d9 100644 --- a/js/js.tests/build.gradle.kts +++ b/js/js.tests/build.gradle.kts @@ -68,7 +68,7 @@ dependencies { testRuntimeOnly(commonDependency("org.jetbrains.intellij.deps:jdom")) testRuntimeOnly(kotlinStdlib()) - testJsRuntime(kotlinStdlib("js")) + testJsRuntime(kotlinStdlib()) if (!kotlinBuildProperties.isInJpsBuildIdeaSync) { testJsRuntime(project(":kotlin-test:kotlin-test-js")) // to be sure that kotlin-test-js built before tests runned } diff --git a/libraries/kotlin-dom-api-compat/build.gradle.kts b/libraries/kotlin-dom-api-compat/build.gradle.kts index 17bee3fefe1..e489de9ea96 100644 --- a/libraries/kotlin-dom-api-compat/build.gradle.kts +++ b/libraries/kotlin-dom-api-compat/build.gradle.kts @@ -1,3 +1,4 @@ +import org.jetbrains.kotlin.gradle.targets.js.KotlinJsCompilerAttribute import plugins.configureDefaultPublishing import plugins.configureKotlinPomAttributes @@ -20,10 +21,18 @@ kotlin { kotlin.srcDir("$jsStdlibSources/kotlin/dom") } dependencies { - api(project(":kotlin-stdlib-js")) + api(project(":kotlin-stdlib")) } } } + val main by compilations.getting + val test by compilations.getting + // TODO: Remove together with kotlin.js.compiler.publish.attribute=false property + listOf(main, test).forEach { compilation -> + configurations[compilation.compileDependencyConfigurationName].attributes { + attribute(KotlinJsCompilerAttribute.jsCompilerAttribute, KotlinJsCompilerAttribute.ir) + } + } } } diff --git a/libraries/kotlin.test/build.gradle.kts b/libraries/kotlin.test/build.gradle.kts index f34366d6fc5..d0c602504ca 100644 --- a/libraries/kotlin.test/build.gradle.kts +++ b/libraries/kotlin.test/build.gradle.kts @@ -266,7 +266,7 @@ val (jsApi, jsRuntime) = listOf("api", "runtime").map { usage -> jsRuntime.extendsFrom(jsApi) dependencies { - jsApi(project(":kotlin-stdlib-js")) + jsApi(project(":kotlin-stdlib")) } artifacts { diff --git a/libraries/stdlib/js-ir-minimal-for-test/build.gradle.kts b/libraries/stdlib/js-ir-minimal-for-test/build.gradle.kts index f0991717b23..f401fd4a59b 100644 --- a/libraries/stdlib/js-ir-minimal-for-test/build.gradle.kts +++ b/libraries/stdlib/js-ir-minimal-for-test/build.gradle.kts @@ -9,11 +9,28 @@ kotlin { nodejs() } } +val commonMainFullSources by task { + dependsOn(":prepare:build.version:writeStdlibVersion") + + val sources = listOf( + "libraries/stdlib/common/src/", + "libraries/stdlib/src/kotlin/", + "libraries/stdlib/unsigned/", + "core/builtins/src/kotlin/internal/", + ) + + sources.forEach { path -> + from("$rootDir/$path") { + into(path.dropLastWhile { it != '/' }) + } + } + + into("$buildDir/commonMainFullSources") +} val commonMainSources by task { - dependsOn(":kotlin-stdlib-js-ir:commonMainSources") + dependsOn(commonMainFullSources) from { - val fullCommonMainSources = tasks.getByPath(":kotlin-stdlib-js-ir:commonMainSources") exclude( listOf( "libraries/stdlib/unsigned/src/kotlin/UByteArray.kt", @@ -52,28 +69,27 @@ val commonMainSources by task { "libraries/stdlib/src/kotlin/enums/**" ) ) - fullCommonMainSources.outputs.files.singleFile + commonMainFullSources.get().outputs.files.singleFile } into("$buildDir/commonMainSources") } val commonMainCollectionSources by task { - dependsOn(":kotlin-stdlib-js-ir:commonMainSources") + dependsOn(commonMainFullSources) from { - val fullCommonMainSources = tasks.getByPath(":kotlin-stdlib-js-ir:commonMainSources") include("libraries/stdlib/src/kotlin/collections/PrimitiveIterators.kt") - fullCommonMainSources.outputs.files.singleFile + commonMainFullSources.get().outputs.files.singleFile } into("$buildDir/commonMainCollectionSources") } val jsMainSources by task { - dependsOn(":kotlin-stdlib-js-ir:jsMainSources") + dependsOn(":kotlin-stdlib:prepareJsIrMainSources") from { - val fullJsMainSources = tasks.getByPath(":kotlin-stdlib-js-ir:jsMainSources") + val fullJsMainSources = tasks.getByPath(":kotlin-stdlib:prepareJsIrMainSources") exclude( listOf( "libraries/stdlib/js/src/org.w3c/**", diff --git a/prepare/ide-plugin-dependencies/js-ir-runtime-for-ide/build.gradle.kts b/prepare/ide-plugin-dependencies/js-ir-runtime-for-ide/build.gradle.kts index 925617accb5..5ddcc834797 100644 --- a/prepare/ide-plugin-dependencies/js-ir-runtime-for-ide/build.gradle.kts +++ b/prepare/ide-plugin-dependencies/js-ir-runtime-for-ide/build.gradle.kts @@ -10,8 +10,8 @@ idePluginDependency { jar.apply { archiveExtension.set("klib") - val jsRuntimeProjectName = ":kotlin-stdlib-js-ir" - val klibTaskName = "packFullRuntimeKLib" + val jsRuntimeProjectName = ":kotlin-stdlib" + val klibTaskName = "jsJar" dependsOn("$jsRuntimeProjectName:$klibTaskName") diff --git a/repo/artifacts-tests/src/test/resources/org/jetbrains/kotlin/kotlin-dom-api-compat/kotlin-dom-api-compat.pom b/repo/artifacts-tests/src/test/resources/org/jetbrains/kotlin/kotlin-dom-api-compat/kotlin-dom-api-compat.pom index f61845b20e2..8334a0e56a5 100644 --- a/repo/artifacts-tests/src/test/resources/org/jetbrains/kotlin/kotlin-dom-api-compat/kotlin-dom-api-compat.pom +++ b/repo/artifacts-tests/src/test/resources/org/jetbrains/kotlin/kotlin-dom-api-compat/kotlin-dom-api-compat.pom @@ -35,7 +35,7 @@ org.jetbrains.kotlin - kotlin-stdlib-js + kotlin-stdlib ArtifactsTest.version compile diff --git a/repo/artifacts-tests/src/test/resources/org/jetbrains/kotlin/kotlin-test-js/kotlin-test-js.pom b/repo/artifacts-tests/src/test/resources/org/jetbrains/kotlin/kotlin-test-js/kotlin-test-js.pom index a4e73883fe7..feb6926e1e0 100644 --- a/repo/artifacts-tests/src/test/resources/org/jetbrains/kotlin/kotlin-test-js/kotlin-test-js.pom +++ b/repo/artifacts-tests/src/test/resources/org/jetbrains/kotlin/kotlin-test-js/kotlin-test-js.pom @@ -34,7 +34,7 @@ org.jetbrains.kotlin - kotlin-stdlib-js + kotlin-stdlib ArtifactsTest.version compile diff --git a/repo/gradle-build-conventions/buildsrc-compat/src/main/kotlin/tasks.kt b/repo/gradle-build-conventions/buildsrc-compat/src/main/kotlin/tasks.kt index d4ad8725a92..23d5e5ec64f 100644 --- a/repo/gradle-build-conventions/buildsrc-compat/src/main/kotlin/tasks.kt +++ b/repo/gradle-build-conventions/buildsrc-compat/src/main/kotlin/tasks.kt @@ -64,7 +64,6 @@ val kotlinGradlePluginAndItsRequired = arrayOf( ":kotlin-stdlib", ":kotlin-stdlib-jdk7", ":kotlin-stdlib-jdk8", - ":kotlin-stdlib-js", ":kotlin-stdlib-wasm", ":examples:annotation-processor-example", ":kotlin-assignment-compiler-plugin.embeddable", diff --git a/settings.gradle b/settings.gradle index 697a88672c3..1346f3dfd7d 100644 --- a/settings.gradle +++ b/settings.gradle @@ -582,8 +582,6 @@ if (buildProperties.inJpsBuildIdeaSync) { include ":core:builtins", ":kotlin-stdlib-common", ":kotlin-stdlib", - ":kotlin-stdlib-js", - ":kotlin-stdlib-js-ir", ":kotlin-dom-api-compat", ":kotlin-stdlib-js-ir-minimal-for-test", ":kotlin-stdlib-wasm", @@ -603,12 +601,13 @@ if (buildProperties.inJpsBuildIdeaSync) { ":kotlin-test:kotlin-test-wasm", ":native:native.tests" + if (!stdlibMpp) include ":kotlin-stdlib-js", ":kotlin-stdlib-js-ir" if (!stdlibMpp) include ":kotlin-stdlib-mpp" project(':kotlin-stdlib-common').projectDir = "$rootDir/libraries/stdlib/common" as File project(':kotlin-stdlib').projectDir = "$rootDir/libraries/stdlib" + (stdlibMpp ? "" : "/jvm") as File - project(':kotlin-stdlib-js').projectDir = "$rootDir/libraries/stdlib/js-v1" as File - project(':kotlin-stdlib-js-ir').projectDir = "$rootDir/libraries/stdlib/js-ir" as File + if (!stdlibMpp) project(':kotlin-stdlib-js').projectDir = "$rootDir/libraries/stdlib/js-v1" as File + if (!stdlibMpp) project(':kotlin-stdlib-js-ir').projectDir = "$rootDir/libraries/stdlib/js-ir" as File project(':kotlin-dom-api-compat').projectDir = "$rootDir/libraries/kotlin-dom-api-compat" as File project(':kotlin-stdlib-wasm').projectDir = "$rootDir/libraries/stdlib/wasm" as File project(':kotlin-stdlib-js-ir-minimal-for-test').projectDir = "$rootDir/libraries/stdlib/js-ir-minimal-for-test" as File