From 3d17d476e0c2bbab6c02c5856f97a8d1ea51b34d Mon Sep 17 00:00:00 2001 From: Pavel Punegov Date: Thu, 17 Feb 2022 18:57:33 +0300 Subject: [PATCH] [K/N][build] Define meta versions order and comparing Move isAtLeast() from compiler downloader and test to CompilerVersion.kt --- .../jetbrains/kotlin/konan/CompilerVersion.kt | 8 +++++ .../org/jetbrains/kotlin/konan/MetaVersion.kt | 21 ++++++++---- .../native/NativeCompilerVersionTest.kt | 32 ++++++++----------- .../gradle/native/NativePlatformLibsIT.kt | 9 +----- .../native/NativeCompilerDownloader.kt | 8 +---- 5 files changed, 39 insertions(+), 39 deletions(-) diff --git a/compiler/util-io/src/org/jetbrains/kotlin/konan/CompilerVersion.kt b/compiler/util-io/src/org/jetbrains/kotlin/konan/CompilerVersion.kt index ba61ea411c7..079eb46f658 100644 --- a/compiler/util-io/src/org/jetbrains/kotlin/konan/CompilerVersion.kt +++ b/compiler/util-io/src/org/jetbrains/kotlin/konan/CompilerVersion.kt @@ -76,3 +76,11 @@ data class CompilerVersionImpl( override fun toString() = versionString } + +fun CompilerVersion.isAtLeast(compilerVersion: CompilerVersion): Boolean { + if (this.major != compilerVersion.major) return this.major > compilerVersion.major + if (this.minor != compilerVersion.minor) return this.minor > compilerVersion.minor + if (this.maintenance != compilerVersion.maintenance) return this.maintenance > compilerVersion.maintenance + if (this.meta != compilerVersion.meta) return this.meta > compilerVersion.meta + return this.build >= compilerVersion.build +} \ No newline at end of file diff --git a/compiler/util-io/src/org/jetbrains/kotlin/konan/MetaVersion.kt b/compiler/util-io/src/org/jetbrains/kotlin/konan/MetaVersion.kt index 16a8e4c5bbf..48e28a9b907 100644 --- a/compiler/util-io/src/org/jetbrains/kotlin/konan/MetaVersion.kt +++ b/compiler/util-io/src/org/jetbrains/kotlin/konan/MetaVersion.kt @@ -5,21 +5,30 @@ package org.jetbrains.kotlin.konan inline class MetaVersion(val metaString: String) { + operator fun compareTo(other: MetaVersion): Int { + if (metaOrder.contains(this)) { + if (metaOrder.contains(other)) { + return metaOrder.indexOf(this).compareTo(metaOrder.indexOf(other)) + } + } + return metaString.compareTo(other.metaString) + } + companion object { // Following meta versions are left for source-level compatibility val DEV = MetaVersion("dev") val DEV_GOOGLE = MetaVersion("dev-google-pr") val EAP = MetaVersion("eap") val BETA = MetaVersion("Beta") - val M1 = MetaVersion("M1") - val M2 = MetaVersion("M2") val RC = MetaVersion("RC") val PUB = MetaVersion("PUB") val RELEASE = MetaVersion("release") - fun findAppropriate(metaString: String): MetaVersion = - listOf(DEV, DEV_GOOGLE, EAP, BETA, M1, M2, RC, PUB, RELEASE) - .find { it.metaString.equals(metaString, ignoreCase = true) } - ?: if (metaString.isBlank()) RELEASE else MetaVersion(metaString) + // Defines order of meta versions + private val metaOrder = listOf(DEV, DEV_GOOGLE, EAP, BETA, RC, PUB, RELEASE) + + fun findAppropriate(metaString: String): MetaVersion = metaOrder + .find { it.metaString.equals(metaString, ignoreCase = true) } + ?: if (metaString.isBlank()) RELEASE else MetaVersion(metaString) // should it be lowercased? } } diff --git a/compiler/util-io/test/org/jetbrains/kotlin/native/NativeCompilerVersionTest.kt b/compiler/util-io/test/org/jetbrains/kotlin/native/NativeCompilerVersionTest.kt index a30086c5141..047256a1586 100644 --- a/compiler/util-io/test/org/jetbrains/kotlin/native/NativeCompilerVersionTest.kt +++ b/compiler/util-io/test/org/jetbrains/kotlin/native/NativeCompilerVersionTest.kt @@ -5,10 +5,7 @@ package org.jetbrains.kotlin.native -import org.jetbrains.kotlin.konan.CompilerVersion -import org.jetbrains.kotlin.konan.CompilerVersionImpl -import org.jetbrains.kotlin.konan.MetaVersion -import org.jetbrains.kotlin.konan.parseCompilerVersion +import org.jetbrains.kotlin.konan.* import org.junit.Assert.assertEquals import org.junit.Test import kotlin.test.* @@ -62,20 +59,6 @@ class NativeCompilerVersionTest { assertEquals(MetaVersion.DEV, meta) assertEquals(1, build) } - "1.6.10-M1-3".parseCompilerVersion().apply { - assertEquals(1, major) - assertEquals(6, minor) - assertEquals(10, maintenance) - assertEquals(MetaVersion.M1, meta) - assertEquals(3, build) - } - "1.6.20-M2".parseCompilerVersion().apply { - assertEquals(1, major) - assertEquals(6, minor) - assertEquals(20, maintenance) - assertEquals(MetaVersion.M2, meta) - assertEquals(-1, build) - } "1.6.10-RC".parseCompilerVersion().apply { assertEquals(1, major) assertEquals(6, minor) @@ -161,4 +144,17 @@ class NativeCompilerVersionTest { assertEquals(-1, build) } } + + @Test + fun metaVersionOrder() { + assertTrue("1.7.0-RC2".parseCompilerVersion().isAtLeast("1.7.0-RC".parseCompilerVersion())) + assertTrue("1.7.0-RC".parseCompilerVersion().isAtLeast("1.7.0-BETA".parseCompilerVersion())) + assertTrue("1.7.0-RC".parseCompilerVersion().isAtLeast("1.7.0-BETA2".parseCompilerVersion())) + assertTrue("1.7.0-RC2".parseCompilerVersion().isAtLeast("1.7.0-BETA3".parseCompilerVersion())) + assertTrue("1.7.0-release".parseCompilerVersion().isAtLeast("1.7.0-RC".parseCompilerVersion())) + assertTrue("1.7.0-release".parseCompilerVersion().isAtLeast("1.7.0-RC3".parseCompilerVersion())) + assertTrue("1.7.0-release".parseCompilerVersion().isAtLeast("1.7.0-dev-1234".parseCompilerVersion())) + assertTrue("1.7.0-eap1".parseCompilerVersion().isAtLeast("1.7.0-eap".parseCompilerVersion())) + assertTrue("1.7.0-eap1".parseCompilerVersion().isAtLeast("1.7.0-eap-134".parseCompilerVersion())) + } } \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/native/NativePlatformLibsIT.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/native/NativePlatformLibsIT.kt index 86237bab2ab..dc3a107ae3a 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/native/NativePlatformLibsIT.kt +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/native/NativePlatformLibsIT.kt @@ -15,6 +15,7 @@ import org.jetbrains.kotlin.gradle.util.modify import org.jetbrains.kotlin.gradle.utils.NativeCompilerDownloader import org.jetbrains.kotlin.konan.CompilerVersion import org.jetbrains.kotlin.konan.CompilerVersionImpl +import org.jetbrains.kotlin.konan.isAtLeast import org.jetbrains.kotlin.konan.target.HostManager import org.jetbrains.kotlin.konan.target.KonanTarget import org.jetbrains.kotlin.konan.target.presetName @@ -65,14 +66,6 @@ class NativePlatformLibsIT : BaseGradleIT() { } } - private fun CompilerVersion.isAtLeast(compilerVersion: CompilerVersion): Boolean { - if (this.major != compilerVersion.major) return this.major > compilerVersion.major - if (this.minor != compilerVersion.minor) return this.minor > compilerVersion.minor - if (this.maintenance != compilerVersion.maintenance) return this.maintenance > compilerVersion.maintenance - if (this.meta.ordinal != compilerVersion.meta.ordinal) return this.meta.ordinal > compilerVersion.meta.ordinal - return this.build >= compilerVersion.build - } - private fun simpleOsName(compilerVersion: CompilerVersion): String = if (compilerVersion.isAtLeast(CompilerVersionImpl(major = 1, minor = 5, maintenance = 30, build = 1466))) { HostManager.platformName() diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/NativeCompilerDownloader.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/NativeCompilerDownloader.kt index ff5a37840f9..d2cc2264ab2 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/NativeCompilerDownloader.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/NativeCompilerDownloader.kt @@ -19,6 +19,7 @@ import org.jetbrains.kotlin.gradle.targets.native.internal.NativeDistributionTyp import org.jetbrains.kotlin.konan.CompilerVersion import org.jetbrains.kotlin.konan.CompilerVersionImpl import org.jetbrains.kotlin.konan.MetaVersion +import org.jetbrains.kotlin.konan.isAtLeast import org.jetbrains.kotlin.konan.target.HostManager import org.jetbrains.kotlin.konan.util.DependencyDirectories import java.io.File @@ -50,13 +51,6 @@ class NativeCompilerDownloader( private val simpleOsName: String get() { - fun CompilerVersion.isAtLeast(compilerVersion: CompilerVersion): Boolean { - if (this.major != compilerVersion.major) return this.major > compilerVersion.major - if (this.minor != compilerVersion.minor) return this.minor > compilerVersion.minor - if (this.maintenance != compilerVersion.maintenance) return this.maintenance > compilerVersion.maintenance - if (this.meta.ordinal != compilerVersion.meta.ordinal) return this.meta.ordinal > compilerVersion.meta.ordinal - return this.build >= compilerVersion.build - } return if (compilerVersion.isAtLeast(CompilerVersionImpl(major = 1, minor = 5, maintenance = 30, build = 1466))) { HostManager.platformName() } else {