[K/N] Remove old Compiler and Meta Version ^KT-55677 Fixed
* Replace it with KotlinCompilerVersion * K/N version should be set now with `deployVersion`. * Cleanup deprecated functions in older versions of the Gradle plugin * Cleanup tests for older versions of compiler downloader Merge-request: KT-MR-8436 Merged-by: Pavel Punegov <Pavel.Punegov@jetbrains.com>
This commit is contained in:
committed by
Space Team
parent
5ec626b29d
commit
c9aeadd31f
@@ -1,86 +0,0 @@
|
||||
/*
|
||||
* Copyright 2010-2019 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
||||
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
||||
*/
|
||||
|
||||
package org.jetbrains.kotlin.konan
|
||||
|
||||
import java.io.Serializable
|
||||
|
||||
interface CompilerVersion : Serializable {
|
||||
val meta: MetaVersion
|
||||
val major: Int
|
||||
val minor: Int
|
||||
val maintenance: Int
|
||||
|
||||
@Deprecated("Milestone is deprecated in favour to MetaVersion's M1 and M2")
|
||||
val milestone: Int
|
||||
|
||||
val build: Int
|
||||
|
||||
fun toString(showMeta: Boolean, showBuild: Boolean): String
|
||||
|
||||
companion object {
|
||||
// major.minor.patch-meta-build where patch, meta and build are optional.
|
||||
val versionPattern = "(\\d+)\\.(\\d+)(?:\\.(\\d+))?(?:-(\\p{Alpha}*\\p{Alnum}|[\\p{Alpha}-]*))?(?:-(\\d+))?".toRegex()
|
||||
|
||||
fun fromString(version: String): CompilerVersion {
|
||||
val (major, minor, maintenance, metaString, build) =
|
||||
versionPattern.matchEntire(version)?.destructured
|
||||
?: throw IllegalArgumentException("Cannot parse Kotlin/Native version: $version")
|
||||
|
||||
return CompilerVersionImpl(
|
||||
MetaVersion.findAppropriate(metaString),
|
||||
major.toInt(),
|
||||
minor.toInt(),
|
||||
maintenance.toIntOrNull() ?: 0,
|
||||
-1,
|
||||
build.toIntOrNull() ?: -1
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fun String.parseCompilerVersion() = CompilerVersion.fromString(this)
|
||||
|
||||
data class CompilerVersionImpl(
|
||||
override val meta: MetaVersion = MetaVersion.DEV,
|
||||
override val major: Int,
|
||||
override val minor: Int,
|
||||
override val maintenance: Int,
|
||||
@Deprecated("Milestone is deprecated in favour to MetaVersion's M1 and M2")
|
||||
override val milestone: Int = -1,
|
||||
override val build: Int = -1
|
||||
) : CompilerVersion {
|
||||
|
||||
override fun toString(showMeta: Boolean, showBuild: Boolean) = buildString {
|
||||
append(major)
|
||||
append('.')
|
||||
append(minor)
|
||||
append('.')
|
||||
append(maintenance)
|
||||
if (showMeta) {
|
||||
append('-')
|
||||
append(meta.metaString)
|
||||
}
|
||||
if (showBuild && build != -1) {
|
||||
append('-')
|
||||
append(build)
|
||||
}
|
||||
}
|
||||
|
||||
private val isRelease: Boolean
|
||||
get() = meta == MetaVersion.RELEASE
|
||||
|
||||
private val versionString by lazy { toString(!isRelease, true) }
|
||||
|
||||
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
|
||||
}
|
||||
@@ -1,34 +0,0 @@
|
||||
/*
|
||||
* Copyright 2010-2022 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
||||
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
||||
*/
|
||||
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 RC = MetaVersion("RC")
|
||||
val PUB = MetaVersion("PUB")
|
||||
val RELEASE = MetaVersion("release")
|
||||
|
||||
// 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?
|
||||
}
|
||||
}
|
||||
@@ -1,160 +0,0 @@
|
||||
/*
|
||||
* Copyright 2010-2021 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
||||
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
||||
*/
|
||||
|
||||
package org.jetbrains.kotlin.native
|
||||
|
||||
import org.jetbrains.kotlin.konan.*
|
||||
import org.junit.Assert.assertEquals
|
||||
import org.junit.Test
|
||||
import kotlin.test.*
|
||||
|
||||
class NativeCompilerVersionTest {
|
||||
|
||||
@Test
|
||||
fun versionParseTest() {
|
||||
"1.5.30-dev-1".parseCompilerVersion().apply {
|
||||
assertEquals(1, major)
|
||||
assertEquals(5, minor)
|
||||
assertEquals(30, maintenance)
|
||||
assertEquals(MetaVersion.DEV, meta)
|
||||
assertEquals(1, build)
|
||||
}
|
||||
"1.5.30-rc-12".parseCompilerVersion().apply {
|
||||
assertEquals(1, major)
|
||||
assertEquals(5, minor)
|
||||
assertEquals(30, maintenance)
|
||||
assertEquals(MetaVersion.RC, meta)
|
||||
assertEquals(12, build)
|
||||
}
|
||||
// Final release
|
||||
"1.5.30".parseCompilerVersion().apply {
|
||||
assertEquals(1, major)
|
||||
assertEquals(5, minor)
|
||||
assertEquals(30, maintenance)
|
||||
assertEquals(MetaVersion.RELEASE, meta)
|
||||
assertEquals(-1, build)
|
||||
}
|
||||
// Final release build.number
|
||||
"1.5.30-release-34".parseCompilerVersion().apply {
|
||||
assertEquals(1, major)
|
||||
assertEquals(5, minor)
|
||||
assertEquals(30, maintenance)
|
||||
assertEquals(MetaVersion.RELEASE, meta)
|
||||
assertEquals(34, build)
|
||||
}
|
||||
// Release builds
|
||||
"1.5.30-1234".parseCompilerVersion().apply {
|
||||
assertEquals(1, major)
|
||||
assertEquals(5, minor)
|
||||
assertEquals(30, maintenance)
|
||||
assertEquals(MetaVersion.RELEASE, meta)
|
||||
assertEquals(1234, build)
|
||||
}
|
||||
"1.6.0-dev-1".parseCompilerVersion().apply {
|
||||
assertEquals(1, major)
|
||||
assertEquals(6, minor)
|
||||
assertEquals(0, maintenance)
|
||||
assertEquals(MetaVersion.DEV, meta)
|
||||
assertEquals(1, build)
|
||||
}
|
||||
"1.6.10-RC".parseCompilerVersion().apply {
|
||||
assertEquals(1, major)
|
||||
assertEquals(6, minor)
|
||||
assertEquals(10, maintenance)
|
||||
assertEquals(MetaVersion.RC, meta)
|
||||
assertEquals(-1, build)
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
fun incorrectVersionString() {
|
||||
assertFailsWith<IllegalArgumentException> { CompilerVersion.fromString("1.5.30-M1-dev-123") }
|
||||
assertFailsWith<IllegalArgumentException> { CompilerVersion.fromString("1.5.30-M1-release-123") }
|
||||
assertFailsWith<IllegalArgumentException> { CompilerVersion.fromString("1.5.30.40-release-123") }
|
||||
}
|
||||
|
||||
@Test
|
||||
fun versionToString() {
|
||||
assertEquals("1.5.30-dev-140", CompilerVersionImpl(MetaVersion.DEV, 1, 5, 30, -1, 140).toString())
|
||||
assertEquals("1.5.30-RC-140", CompilerVersionImpl(MetaVersion.RC, 1, 5, 30, -1, 140).toString())
|
||||
assertEquals("1.5.30-RC", CompilerVersionImpl(MetaVersion.RC, 1, 5, 30, -1, -1).toString())
|
||||
assertEquals("1.6.10-14", CompilerVersionImpl(MetaVersion.RELEASE, 1, 6, 10, -1, 14).toString())
|
||||
assertEquals("1.6.10-14", CompilerVersionImpl(MetaVersion.RELEASE, 1, 6, 10, -1, 14).toString())
|
||||
assertEquals("1.6.0", CompilerVersionImpl(MetaVersion.RELEASE, 1, 6, 0, -1, -1).toString())
|
||||
}
|
||||
|
||||
@Test
|
||||
fun publicVersion() {
|
||||
"1.5.30-dev-google-pr-123".parseCompilerVersion().apply {
|
||||
assertEquals(1, major)
|
||||
assertEquals(5, minor)
|
||||
assertEquals(30, maintenance)
|
||||
assertEquals(MetaVersion.DEV_GOOGLE, meta)
|
||||
assertEquals(123, build)
|
||||
}
|
||||
assertEquals("1.5.30-dev-google-pr-140", CompilerVersionImpl(MetaVersion.DEV_GOOGLE, 1, 5, 30, -1, 140).toString())
|
||||
|
||||
"1.5.30-pub-123".parseCompilerVersion().apply {
|
||||
assertEquals(1, major)
|
||||
assertEquals(5, minor)
|
||||
assertEquals(30, maintenance)
|
||||
assertEquals(MetaVersion.PUB, meta)
|
||||
assertEquals(123, build)
|
||||
}
|
||||
assertEquals("1.5.30-PUB-140", CompilerVersionImpl(MetaVersion.PUB, 1, 5, 30, -1, 140).toString())
|
||||
}
|
||||
|
||||
@Test
|
||||
fun betasAndRCs() {
|
||||
"1.7.0-RC".parseCompilerVersion().apply {
|
||||
assertEquals(1, major)
|
||||
assertEquals(7, minor)
|
||||
assertEquals(0, maintenance)
|
||||
assertEquals(MetaVersion.RC, meta)
|
||||
assertEquals(-1, build)
|
||||
}
|
||||
"1.7.0-RC2".parseCompilerVersion().apply {
|
||||
assertEquals(1, major)
|
||||
assertEquals(7, minor)
|
||||
assertEquals(0, maintenance)
|
||||
assertEquals(MetaVersion("RC2"), meta)
|
||||
assertEquals(-1, build)
|
||||
}
|
||||
"1.7.0-RC2-123".parseCompilerVersion().apply {
|
||||
assertEquals(1, major)
|
||||
assertEquals(7, minor)
|
||||
assertEquals(0, maintenance)
|
||||
assertEquals(MetaVersion("RC2"), meta)
|
||||
assertEquals(123, build)
|
||||
}
|
||||
"1.7.0-Beta".parseCompilerVersion().apply {
|
||||
assertEquals(1, major)
|
||||
assertEquals(7, minor)
|
||||
assertEquals(0, maintenance)
|
||||
assertEquals(MetaVersion.BETA, meta)
|
||||
assertEquals(-1, build)
|
||||
}
|
||||
"1.7.0-Beta2".parseCompilerVersion().apply {
|
||||
assertEquals(1, major)
|
||||
assertEquals(7, minor)
|
||||
assertEquals(0, maintenance)
|
||||
assertEquals(MetaVersion("Beta2"), meta)
|
||||
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,6 +1,5 @@
|
||||
package org.jetbrains.kotlin.library
|
||||
|
||||
import org.jetbrains.kotlin.konan.CompilerVersion
|
||||
import org.jetbrains.kotlin.konan.file.File
|
||||
import org.jetbrains.kotlin.library.impl.createKotlinLibraryComponents
|
||||
import org.jetbrains.kotlin.library.impl.isPre_1_4_Library
|
||||
@@ -223,12 +222,6 @@ abstract class KotlinLibrarySearchPathResolver<L : KotlinLibrary>(
|
||||
}
|
||||
}
|
||||
|
||||
fun CompilerVersion.compatible(other: CompilerVersion) =
|
||||
this.major == other.major
|
||||
&& this.minor == other.minor
|
||||
&& this.maintenance == other.maintenance
|
||||
|
||||
|
||||
// This is a library resolver aware of attributes shared between platforms,
|
||||
// such as abi version.
|
||||
// JS and Native resolvers are inherited from this one.
|
||||
|
||||
Reference in New Issue
Block a user