diff --git a/build.gradle.kts b/build.gradle.kts index f144cc18..4404d2c5 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -3,7 +3,6 @@ */ import org.jetbrains.kotlin.gradle.plugin.getKotlinPluginVersion -import util.kotlinVersionParsed import util.libs plugins { @@ -46,22 +45,22 @@ apiValidation { nonPublicMarkers.add(Const.INTERNAL_RPC_API_ANNOTATION) } -val kotlinVersion: KotlinVersion by extra +val kotlinVersionFull: String by extra allprojects { group = "org.jetbrains.kotlinx" version = rootProject.libs.versions.kotlinx.rpc.get() } -println("kotlinx.rpc project version: $version, Kotlin version: $kotlinVersion") +println("kotlinx.rpc project version: $version, Kotlin version: $kotlinVersionFull") // If the prefix of the kPRC version is not Kotlin gradle plugin version – you have a problem :) // Probably some dependency brings kotlin with the later version. // To mitigate so, refer to `versions-root/kotlin-version-lookup.json` // and its usage in `gradle-conventions-settings/src/main/kotlin/settings-conventions.settings.gradle.kts` -val kotlinGPVersion = getKotlinPluginVersion().kotlinVersionParsed() -if (kotlinVersion != kotlinGPVersion) { - error("KGP version mismatch. Project version: $kotlinVersion, KGP version: $kotlinGPVersion") +val kotlinGPVersion = getKotlinPluginVersion() +if (kotlinVersionFull != kotlinGPVersion) { + error("KGP version mismatch. Project version: $kotlinVersionFull, KGP version: $kotlinGPVersion") } // necessary for CI js tests diff --git a/compiler-plugin/build.gradle.kts b/compiler-plugin/build.gradle.kts index c0d16570..19563841 100644 --- a/compiler-plugin/build.gradle.kts +++ b/compiler-plugin/build.gradle.kts @@ -6,10 +6,10 @@ plugins { alias(libs.plugins.conventions.gradle.doctor) } -val kotlinVersion: KotlinVersion by extra +val kotlinVersionFull: String by extra val rpcVersion: String = libs.versions.kotlinx.rpc.get() allprojects { group = "org.jetbrains.kotlinx" - version = "$kotlinVersion-$rpcVersion" + version = "$kotlinVersionFull-$rpcVersion" } diff --git a/gradle-conventions-settings/build.gradle.kts b/gradle-conventions-settings/build.gradle.kts index b700e193..f47d1dd2 100644 --- a/gradle-conventions-settings/build.gradle.kts +++ b/gradle-conventions-settings/build.gradle.kts @@ -15,7 +15,6 @@ configurations.configureEach { } } -val kotlinVersion: KotlinVersion by extra val isLatestKotlinVersion: Boolean by extra dependencies { diff --git a/gradle-conventions-settings/src/main/kotlin/settings-conventions.settings.gradle.kts b/gradle-conventions-settings/src/main/kotlin/settings-conventions.settings.gradle.kts index 3a78d912..69cdd7de 100644 --- a/gradle-conventions-settings/src/main/kotlin/settings-conventions.settings.gradle.kts +++ b/gradle-conventions-settings/src/main/kotlin/settings-conventions.settings.gradle.kts @@ -19,7 +19,7 @@ pluginManagement { fun Path.bufferedReader( charset: Charset = Charsets.UTF_8, bufferSize: Int = DEFAULT_BUFFER_SIZE, - vararg options: OpenOption + vararg options: OpenOption, ): BufferedReader { return BufferedReader( InputStreamReader( @@ -32,6 +32,7 @@ fun Path.bufferedReader( object SettingsConventions { const val KOTLIN_VERSION_ENV_VAR_NAME = "KOTLIN_VERSION" + const val LIBRARY_VERSION_ENV_VAR_NAME = "LIBRARY_VERSION" const val EAP_VERSION_ENV_VAR_NAME = "EAP_VERSION" const val KSP_VERSION_ALIAS = "ksp" @@ -82,10 +83,18 @@ fun loadLookupTable(rootDir: Path, kotlinVersion: String): Pair= 2 } ?.run { - latest = get(1).substringBefore(',') - when (val versionsRow = singleOrNull { it.startsWith(kotlinVersion) }) { - null -> null - else -> first().asCsvValues() to versionsRow.asCsvValues() + first().asCsvValues() to when (val versionsRow = singleOrNull { it.startsWith(kotlinVersion) }) { + // resolve latest for an unknown version + // considers that unknown versions are too new and not yet added + null -> { + latest = kotlinVersion + get(1).asCsvValues() + } + + else -> { + latest = get(1).substringBefore(',') + versionsRow.asCsvValues() + } } } ?.takeIf { (keys, values) -> keys.size == values.size } @@ -156,16 +165,22 @@ fun VersionCatalogBuilder.resolveKotlinVersion(versionCatalog: Map) { - val eapVersion: String = System.getenv(SettingsConventions.EAP_VERSION_ENV_VAR_NAME) - ?.let { "-eap-$it" } ?: "" - val libraryCatalogVersion = versionCatalog[SettingsConventions.LIBRARY_CORE_VERSION_ALIAS] + val libraryCoreVersion: String = System.getenv(SettingsConventions.LIBRARY_VERSION_ENV_VAR_NAME) + ?: versionCatalog[SettingsConventions.LIBRARY_CORE_VERSION_ALIAS] ?: error("Expected to resolve '${SettingsConventions.LIBRARY_CORE_VERSION_ALIAS}' version") - val libraryCoreVersion = libraryCatalogVersion + eapVersion - version(SettingsConventions.LIBRARY_CORE_VERSION_ALIAS, libraryCoreVersion) + val eapVersion: String = System.getenv(SettingsConventions.EAP_VERSION_ENV_VAR_NAME) + ?.let { + when (it){ + "SNAPSHOT" -> "-$it" + else -> "-eap-$it" + } + } ?: "" + + version(SettingsConventions.LIBRARY_CORE_VERSION_ALIAS, libraryCoreVersion + eapVersion) } fun String.kotlinVersionParsed(): KotlinVersion { @@ -193,11 +208,13 @@ dependencyResolutionManagement { val isLatestKotlin = latestKotlin == kotlinVersion extra["kotlinVersion"] = kotlinVersion.kotlinVersionParsed() + extra["kotlinVersionFull"] = kotlinVersion extra["isLatestKotlinVersion"] = isLatestKotlin gradle.rootProject { allprojects { this.extra["kotlinVersion"] = kotlinVersion.kotlinVersionParsed() + this.extra["kotlinVersionFull"] = kotlinVersion this.extra["isLatestKotlinVersion"] = isLatestKotlin } } diff --git a/ksp-plugin/build.gradle.kts b/ksp-plugin/build.gradle.kts index 3d2a5d54..aa8520fd 100644 --- a/ksp-plugin/build.gradle.kts +++ b/ksp-plugin/build.gradle.kts @@ -4,12 +4,12 @@ import org.jetbrains.kotlin.gradle.dsl.ExplicitApiMode -val kotlinVersion: KotlinVersion by extra +val kotlinVersionFull: String by extra val rpcVersion: String = libs.versions.kotlinx.rpc.get() allprojects { group = "org.jetbrains.kotlinx" - version = "$kotlinVersion-$rpcVersion" + version = "$kotlinVersionFull-$rpcVersion" } plugins {