From 0cad069522bc182627bf1aa7e57a4c2552f8bd68 Mon Sep 17 00:00:00 2001 From: Yahor Berdnikau Date: Fri, 10 Feb 2023 19:59:01 +0100 Subject: [PATCH] [Build] Pin api and language level to 1.8 in Kotlin compiler modules used by KGP This is required to be able to compile KGP and it's dependencies which set LV to 1.4 when repo will use LV 1.9. This caused by the change how enums are compiled (KT-48872). --- build-common/build.gradle.kts | 10 ++++++++++ compiler/cli/cli-common/build.gradle.kts | 10 ++++++++++ compiler/config.jvm/build.gradle.kts | 10 ++++++++++ compiler/daemon/daemon-client/build.gradle.kts | 14 ++++++++++---- compiler/daemon/daemon-common/build.gradle.kts | 11 +++++++++++ compiler/frontend.common/build.gradle.kts | 11 +++++++++++ .../incremental-compilation-impl/build.gradle.kts | 9 +++++++++ compiler/util/build.gradle.kts | 10 ++++++++++ core/deserialization.common.jvm/build.gradle.kts | 10 ++++++++++ core/util.runtime/build.gradle.kts | 10 ++++++++++ libraries/scripting/common/build.gradle.kts | 10 ++++++++++ .../kotlin-gradle-plugin-idea/build.gradle.kts | 13 +++++++++++-- native/commonizer-api/build.gradle.kts | 10 ++++++++++ 13 files changed, 132 insertions(+), 6 deletions(-) diff --git a/build-common/build.gradle.kts b/build-common/build.gradle.kts index dda121f75c1..875b70fbdc0 100644 --- a/build-common/build.gradle.kts +++ b/build-common/build.gradle.kts @@ -1,3 +1,6 @@ +import org.jetbrains.kotlin.gradle.dsl.KotlinVersion as GradleKotlinVersion +import org.jetbrains.kotlin.gradle.tasks.KotlinCompilationTask + description = "Kotlin Build Common" plugins { @@ -46,3 +49,10 @@ projectTest(parallel = true) projectTest("testJUnit5", jUnitMode = JUnitMode.JUnit5, parallel = true) { useJUnitPlatform() } + +// 1.9 level breaks Kotlin Gradle plugins via changes in enums (KT-48872) +// We limit api and LV until KGP will stop using Kotlin compiler directly (KT-56574) +tasks.withType>().configureEach { + compilerOptions.apiVersion.value(GradleKotlinVersion.KOTLIN_1_8).finalizeValueOnRead() + compilerOptions.languageVersion.value(GradleKotlinVersion.KOTLIN_1_8).finalizeValueOnRead() +} diff --git a/compiler/cli/cli-common/build.gradle.kts b/compiler/cli/cli-common/build.gradle.kts index 9fd7ae56c88..2f71d0dbf5a 100644 --- a/compiler/cli/cli-common/build.gradle.kts +++ b/compiler/cli/cli-common/build.gradle.kts @@ -1,3 +1,6 @@ +import org.jetbrains.kotlin.gradle.dsl.KotlinVersion +import org.jetbrains.kotlin.gradle.tasks.KotlinCompilationTask + plugins { kotlin("jvm") id("jps-compatible") @@ -27,3 +30,10 @@ tasks.getByName("jar") { //excludes unused bunch files exclude("META-INF/extensions/*.xml.**") } + +// 1.9 level breaks Kotlin Gradle plugins via changes in enums (KT-48872) +// We limit api and LV until KGP will stop using Kotlin compiler directly (KT-56574) +tasks.withType>().configureEach { + compilerOptions.apiVersion.value(KotlinVersion.KOTLIN_1_8).finalizeValueOnRead() + compilerOptions.languageVersion.value(KotlinVersion.KOTLIN_1_8).finalizeValueOnRead() +} diff --git a/compiler/config.jvm/build.gradle.kts b/compiler/config.jvm/build.gradle.kts index 52e0265427c..c8564261562 100644 --- a/compiler/config.jvm/build.gradle.kts +++ b/compiler/config.jvm/build.gradle.kts @@ -1,3 +1,6 @@ +import org.jetbrains.kotlin.gradle.dsl.KotlinVersion +import org.jetbrains.kotlin.gradle.tasks.KotlinCompilationTask + plugins { kotlin("jvm") id("jps-compatible") @@ -13,3 +16,10 @@ sourceSets { "main" { projectDefault() } "test" { } } + +// 1.9 level breaks Kotlin Gradle plugins via changes in enums (KT-48872) +// We limit api and LV until KGP will stop using Kotlin compiler directly (KT-56574) +tasks.withType>().configureEach { + compilerOptions.apiVersion.value(KotlinVersion.KOTLIN_1_8).finalizeValueOnRead() + compilerOptions.languageVersion.value(KotlinVersion.KOTLIN_1_8).finalizeValueOnRead() +} diff --git a/compiler/daemon/daemon-client/build.gradle.kts b/compiler/daemon/daemon-client/build.gradle.kts index b27039cb18a..a02f61fb894 100644 --- a/compiler/daemon/daemon-client/build.gradle.kts +++ b/compiler/daemon/daemon-client/build.gradle.kts @@ -1,3 +1,6 @@ +import org.jetbrains.kotlin.gradle.dsl.KotlinVersion +import org.jetbrains.kotlin.gradle.tasks.KotlinCompilationTask + description = "Kotlin Daemon Client" plugins { @@ -35,11 +38,14 @@ dependencies { } } -tasks.withType> { - kotlinOptions { +tasks.withType> { + compilerOptions { // This module is being run from within Gradle, older versions of which only have older kotlin-stdlib in the runtime classpath. - apiVersion = "1.4" - freeCompilerArgs += "-Xsuppress-version-warnings" + @Suppress("DEPRECATION") + apiVersion.set(KotlinVersion.KOTLIN_1_4) + @Suppress("DEPRECATION") + languageVersion.set(KotlinVersion.KOTLIN_1_4) + freeCompilerArgs.add("-Xsuppress-version-warnings") } } diff --git a/compiler/daemon/daemon-common/build.gradle.kts b/compiler/daemon/daemon-common/build.gradle.kts index e45efbab0e2..c4fbc0de032 100644 --- a/compiler/daemon/daemon-common/build.gradle.kts +++ b/compiler/daemon/daemon-common/build.gradle.kts @@ -1,3 +1,6 @@ +import org.jetbrains.kotlin.gradle.dsl.KotlinVersion +import org.jetbrains.kotlin.gradle.tasks.KotlinCompilationTask + plugins { kotlin("jvm") id("jps-compatible") @@ -16,3 +19,11 @@ sourceSets { "main" { projectDefault() } "test" {} } + +// 1.9 level breaks Kotlin Gradle plugins via changes in enums (KT-48872) +// We limit api and LV until KGP will stop using Kotlin compiler directly (KT-56574) +tasks.withType>().configureEach { + compilerOptions.apiVersion.value(KotlinVersion.KOTLIN_1_8).finalizeValueOnRead() + compilerOptions.languageVersion.value(KotlinVersion.KOTLIN_1_8).finalizeValueOnRead() +} + diff --git a/compiler/frontend.common/build.gradle.kts b/compiler/frontend.common/build.gradle.kts index 179df840a88..ce2f074fabe 100644 --- a/compiler/frontend.common/build.gradle.kts +++ b/compiler/frontend.common/build.gradle.kts @@ -1,3 +1,7 @@ +import org.jetbrains.kotlin.gradle.dsl.KotlinVersion +import org.jetbrains.kotlin.gradle.tasks.KotlinCompilationTask + + plugins { kotlin("jvm") id("jps-compatible") @@ -14,3 +18,10 @@ sourceSets { "main" { projectDefault() } "test" {} } + +// 1.9 level breaks Kotlin Gradle plugins via changes in enums (KT-48872) +// We limit api and LV until KGP will stop using Kotlin compiler directly (KT-56574) +tasks.withType>().configureEach { + compilerOptions.apiVersion.value(KotlinVersion.KOTLIN_1_8).finalizeValueOnRead() + compilerOptions.languageVersion.value(KotlinVersion.KOTLIN_1_8).finalizeValueOnRead() +} diff --git a/compiler/incremental-compilation-impl/build.gradle.kts b/compiler/incremental-compilation-impl/build.gradle.kts index 110b467fe31..c6d43a045d9 100644 --- a/compiler/incremental-compilation-impl/build.gradle.kts +++ b/compiler/incremental-compilation-impl/build.gradle.kts @@ -1,3 +1,5 @@ +import org.jetbrains.kotlin.gradle.dsl.KotlinVersion +import org.jetbrains.kotlin.gradle.tasks.KotlinCompilationTask plugins { kotlin("jvm") @@ -53,3 +55,10 @@ projectTest("testJvmICWithJdk11", parallel = true) { } testsJar() + +// 1.9 level breaks Kotlin Gradle plugins via changes in enums (KT-48872) +// We limit api and LV until KGP will stop using Kotlin compiler directly (KT-56574) +tasks.withType>().configureEach { + compilerOptions.apiVersion.value(KotlinVersion.KOTLIN_1_8).finalizeValueOnRead() + compilerOptions.languageVersion.value(KotlinVersion.KOTLIN_1_8).finalizeValueOnRead() +} diff --git a/compiler/util/build.gradle.kts b/compiler/util/build.gradle.kts index bfe49e70214..835a9f7ce69 100644 --- a/compiler/util/build.gradle.kts +++ b/compiler/util/build.gradle.kts @@ -1,3 +1,6 @@ +import org.jetbrains.kotlin.gradle.dsl.KotlinVersion as GradleKotlinVersion +import org.jetbrains.kotlin.gradle.tasks.KotlinCompilationTask + plugins { kotlin("jvm") id("jps-compatible") @@ -21,3 +24,10 @@ sourceSets { } "test" {} } + +// 1.9 level breaks Kotlin Gradle plugins via changes in enums (KT-48872) +// We limit api and LV until KGP will stop using Kotlin compiler directly (KT-56574) +tasks.withType>().configureEach { + compilerOptions.apiVersion.value(GradleKotlinVersion.KOTLIN_1_8).finalizeValueOnRead() + compilerOptions.languageVersion.value(GradleKotlinVersion.KOTLIN_1_8).finalizeValueOnRead() +} diff --git a/core/deserialization.common.jvm/build.gradle.kts b/core/deserialization.common.jvm/build.gradle.kts index b028bc4d89e..9f2a00ba503 100644 --- a/core/deserialization.common.jvm/build.gradle.kts +++ b/core/deserialization.common.jvm/build.gradle.kts @@ -1,3 +1,6 @@ +import org.jetbrains.kotlin.gradle.dsl.KotlinVersion +import org.jetbrains.kotlin.gradle.tasks.KotlinCompilationTask + plugins { kotlin("jvm") id("jps-compatible") @@ -15,3 +18,10 @@ sourceSets { "main" { projectDefault() } "test" {} } + +// 1.9 level breaks Kotlin Gradle plugins via changes in enums (KT-48872) +// We limit api and LV until KGP will stop using Kotlin compiler directly (KT-56574) +tasks.withType>().configureEach { + compilerOptions.apiVersion.value(KotlinVersion.KOTLIN_1_8).finalizeValueOnRead() + compilerOptions.languageVersion.value(KotlinVersion.KOTLIN_1_8).finalizeValueOnRead() +} diff --git a/core/util.runtime/build.gradle.kts b/core/util.runtime/build.gradle.kts index 75d285f5606..49345040c26 100644 --- a/core/util.runtime/build.gradle.kts +++ b/core/util.runtime/build.gradle.kts @@ -1,3 +1,6 @@ +import org.jetbrains.kotlin.gradle.dsl.KotlinVersion +import org.jetbrains.kotlin.gradle.tasks.KotlinCompilationTask + plugins { kotlin("jvm") id("jps-compatible") @@ -13,3 +16,10 @@ sourceSets { "main" { projectDefault() } "test" {} } + +// 1.9 level breaks Kotlin Gradle plugins via changes in enums (KT-48872) +// We limit api and LV until KGP will stop using Kotlin compiler directly (KT-56574) +tasks.withType>().configureEach { + compilerOptions.apiVersion.value(KotlinVersion.KOTLIN_1_8).finalizeValueOnRead() + compilerOptions.languageVersion.value(KotlinVersion.KOTLIN_1_8).finalizeValueOnRead() +} diff --git a/libraries/scripting/common/build.gradle.kts b/libraries/scripting/common/build.gradle.kts index ddabe603dfb..423721cd0ba 100644 --- a/libraries/scripting/common/build.gradle.kts +++ b/libraries/scripting/common/build.gradle.kts @@ -1,3 +1,6 @@ +import org.jetbrains.kotlin.gradle.dsl.KotlinVersion +import org.jetbrains.kotlin.gradle.tasks.KotlinCompilationTask + plugins { kotlin("jvm") id("jps-compatible") @@ -27,3 +30,10 @@ publish() runtimeJar() sourcesJar() javadocJar() + +// 1.9 level breaks Kotlin Gradle plugins via changes in enums (KT-48872) +// We limit api and LV until KGP will stop using Kotlin compiler directly (KT-56574) +tasks.withType>().configureEach { + compilerOptions.apiVersion.value(KotlinVersion.KOTLIN_1_8).finalizeValueOnRead() + compilerOptions.languageVersion.value(KotlinVersion.KOTLIN_1_8).finalizeValueOnRead() +} diff --git a/libraries/tools/kotlin-gradle-plugin-idea/build.gradle.kts b/libraries/tools/kotlin-gradle-plugin-idea/build.gradle.kts index 1d91ab4c96d..3cb69cf7a46 100644 --- a/libraries/tools/kotlin-gradle-plugin-idea/build.gradle.kts +++ b/libraries/tools/kotlin-gradle-plugin-idea/build.gradle.kts @@ -1,3 +1,5 @@ +import org.jetbrains.kotlin.gradle.dsl.KotlinVersion +import org.jetbrains.kotlin.gradle.tasks.KotlinCompilationTask import plugins.KotlinBuildPublishingPlugin.Companion.ADHOC_COMPONENT_NAME plugins { @@ -7,9 +9,16 @@ plugins { id("org.jetbrains.kotlinx.binary-compatibility-validator") } +@Suppress("DEPRECATION") +tasks.withType>().configureEach { + compilerOptions { + apiVersion.value(KotlinVersion.KOTLIN_1_5).finalizeValueOnRead() + languageVersion.value(KotlinVersion.KOTLIN_1_5).finalizeValueOnRead() + freeCompilerArgs.add("-Xsuppress-version-warnings") + } +} + kotlin.sourceSets.configureEach { - languageSettings.apiVersion = "1.4" - languageSettings.languageVersion = "1.4" languageSettings.optIn("org.jetbrains.kotlin.gradle.InternalKotlinGradlePluginApi") } diff --git a/native/commonizer-api/build.gradle.kts b/native/commonizer-api/build.gradle.kts index 1d4b96a6d2c..c42a4cd3986 100644 --- a/native/commonizer-api/build.gradle.kts +++ b/native/commonizer-api/build.gradle.kts @@ -1,3 +1,6 @@ +import org.jetbrains.kotlin.gradle.dsl.KotlinVersion +import org.jetbrains.kotlin.gradle.tasks.KotlinCompilationTask + plugins { kotlin("jvm") } @@ -36,3 +39,10 @@ projectTest(parallel = false) { runtimeJar() sourcesJar() javadocJar() + +// 1.9 level breaks Kotlin Gradle plugins via changes in enums (KT-48872) +// We limit api and LV until KGP will stop using Kotlin compiler directly (KT-56574) +tasks.withType>().configureEach { + compilerOptions.apiVersion.value(KotlinVersion.KOTLIN_1_8).finalizeValueOnRead() + compilerOptions.languageVersion.value(KotlinVersion.KOTLIN_1_8).finalizeValueOnRead() +}