[K/N][build] Define meta versions order and comparing
Move isAtLeast() from compiler downloader and test to CompilerVersion.kt
This commit is contained in:
@@ -76,3 +76,11 @@ data class CompilerVersionImpl(
|
|||||||
|
|
||||||
override fun toString() = versionString
|
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
|
||||||
|
}
|
||||||
@@ -5,21 +5,30 @@
|
|||||||
package org.jetbrains.kotlin.konan
|
package org.jetbrains.kotlin.konan
|
||||||
|
|
||||||
inline class MetaVersion(val metaString: String) {
|
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 {
|
companion object {
|
||||||
// Following meta versions are left for source-level compatibility
|
// Following meta versions are left for source-level compatibility
|
||||||
val DEV = MetaVersion("dev")
|
val DEV = MetaVersion("dev")
|
||||||
val DEV_GOOGLE = MetaVersion("dev-google-pr")
|
val DEV_GOOGLE = MetaVersion("dev-google-pr")
|
||||||
val EAP = MetaVersion("eap")
|
val EAP = MetaVersion("eap")
|
||||||
val BETA = MetaVersion("Beta")
|
val BETA = MetaVersion("Beta")
|
||||||
val M1 = MetaVersion("M1")
|
|
||||||
val M2 = MetaVersion("M2")
|
|
||||||
val RC = MetaVersion("RC")
|
val RC = MetaVersion("RC")
|
||||||
val PUB = MetaVersion("PUB")
|
val PUB = MetaVersion("PUB")
|
||||||
val RELEASE = MetaVersion("release")
|
val RELEASE = MetaVersion("release")
|
||||||
|
|
||||||
fun findAppropriate(metaString: String): MetaVersion =
|
// Defines order of meta versions
|
||||||
listOf(DEV, DEV_GOOGLE, EAP, BETA, M1, M2, RC, PUB, RELEASE)
|
private val metaOrder = listOf(DEV, DEV_GOOGLE, EAP, BETA, RC, PUB, RELEASE)
|
||||||
.find { it.metaString.equals(metaString, ignoreCase = true) }
|
|
||||||
?: if (metaString.isBlank()) RELEASE else MetaVersion(metaString)
|
fun findAppropriate(metaString: String): MetaVersion = metaOrder
|
||||||
|
.find { it.metaString.equals(metaString, ignoreCase = true) }
|
||||||
|
?: if (metaString.isBlank()) RELEASE else MetaVersion(metaString) // should it be lowercased?
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,10 +5,7 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.native
|
package org.jetbrains.kotlin.native
|
||||||
|
|
||||||
import org.jetbrains.kotlin.konan.CompilerVersion
|
import org.jetbrains.kotlin.konan.*
|
||||||
import org.jetbrains.kotlin.konan.CompilerVersionImpl
|
|
||||||
import org.jetbrains.kotlin.konan.MetaVersion
|
|
||||||
import org.jetbrains.kotlin.konan.parseCompilerVersion
|
|
||||||
import org.junit.Assert.assertEquals
|
import org.junit.Assert.assertEquals
|
||||||
import org.junit.Test
|
import org.junit.Test
|
||||||
import kotlin.test.*
|
import kotlin.test.*
|
||||||
@@ -62,20 +59,6 @@ class NativeCompilerVersionTest {
|
|||||||
assertEquals(MetaVersion.DEV, meta)
|
assertEquals(MetaVersion.DEV, meta)
|
||||||
assertEquals(1, build)
|
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 {
|
"1.6.10-RC".parseCompilerVersion().apply {
|
||||||
assertEquals(1, major)
|
assertEquals(1, major)
|
||||||
assertEquals(6, minor)
|
assertEquals(6, minor)
|
||||||
@@ -161,4 +144,17 @@ class NativeCompilerVersionTest {
|
|||||||
assertEquals(-1, build)
|
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()))
|
||||||
|
}
|
||||||
}
|
}
|
||||||
+1
-8
@@ -15,6 +15,7 @@ import org.jetbrains.kotlin.gradle.util.modify
|
|||||||
import org.jetbrains.kotlin.gradle.utils.NativeCompilerDownloader
|
import org.jetbrains.kotlin.gradle.utils.NativeCompilerDownloader
|
||||||
import org.jetbrains.kotlin.konan.CompilerVersion
|
import org.jetbrains.kotlin.konan.CompilerVersion
|
||||||
import org.jetbrains.kotlin.konan.CompilerVersionImpl
|
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.HostManager
|
||||||
import org.jetbrains.kotlin.konan.target.KonanTarget
|
import org.jetbrains.kotlin.konan.target.KonanTarget
|
||||||
import org.jetbrains.kotlin.konan.target.presetName
|
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 =
|
private fun simpleOsName(compilerVersion: CompilerVersion): String =
|
||||||
if (compilerVersion.isAtLeast(CompilerVersionImpl(major = 1, minor = 5, maintenance = 30, build = 1466))) {
|
if (compilerVersion.isAtLeast(CompilerVersionImpl(major = 1, minor = 5, maintenance = 30, build = 1466))) {
|
||||||
HostManager.platformName()
|
HostManager.platformName()
|
||||||
|
|||||||
+1
-7
@@ -19,6 +19,7 @@ import org.jetbrains.kotlin.gradle.targets.native.internal.NativeDistributionTyp
|
|||||||
import org.jetbrains.kotlin.konan.CompilerVersion
|
import org.jetbrains.kotlin.konan.CompilerVersion
|
||||||
import org.jetbrains.kotlin.konan.CompilerVersionImpl
|
import org.jetbrains.kotlin.konan.CompilerVersionImpl
|
||||||
import org.jetbrains.kotlin.konan.MetaVersion
|
import org.jetbrains.kotlin.konan.MetaVersion
|
||||||
|
import org.jetbrains.kotlin.konan.isAtLeast
|
||||||
import org.jetbrains.kotlin.konan.target.HostManager
|
import org.jetbrains.kotlin.konan.target.HostManager
|
||||||
import org.jetbrains.kotlin.konan.util.DependencyDirectories
|
import org.jetbrains.kotlin.konan.util.DependencyDirectories
|
||||||
import java.io.File
|
import java.io.File
|
||||||
@@ -50,13 +51,6 @@ class NativeCompilerDownloader(
|
|||||||
|
|
||||||
private val simpleOsName: String
|
private val simpleOsName: String
|
||||||
get() {
|
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))) {
|
return if (compilerVersion.isAtLeast(CompilerVersionImpl(major = 1, minor = 5, maintenance = 30, build = 1466))) {
|
||||||
HostManager.platformName()
|
HostManager.platformName()
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
Reference in New Issue
Block a user