Plumbing KlibMetadataVersion and KlibIrVersion values to klib manifest
This commit is contained in:
committed by
alexander-gorshenev
parent
bf12f7eee0
commit
b0f077ff4b
@@ -8,6 +8,7 @@ package org.jetbrains.kotlin.cli.js
|
||||
import com.intellij.openapi.Disposable
|
||||
import com.intellij.openapi.util.io.FileUtil
|
||||
import com.intellij.openapi.util.text.StringUtil
|
||||
import org.jetbrains.kotlin.backend.common.serialization.metadata.KlibMetadataVersion
|
||||
import org.jetbrains.kotlin.cli.common.*
|
||||
import org.jetbrains.kotlin.cli.common.ExitCode.COMPILATION_ERROR
|
||||
import org.jetbrains.kotlin.cli.common.ExitCode.OK
|
||||
@@ -317,7 +318,7 @@ class K2JsIrCompiler : CLICompiler<K2JSCompilerArguments>() {
|
||||
|
||||
override fun createMetadataVersion(versionArray: IntArray): BinaryVersion {
|
||||
// TODO: Support metadata versions for klibs
|
||||
return JsMetadataVersion(*versionArray)
|
||||
return KlibMetadataVersion(*versionArray)
|
||||
}
|
||||
|
||||
override fun MutableList<String>.addPlatformOptions(arguments: K2JSCompilerArguments) {}
|
||||
|
||||
+27
@@ -0,0 +1,27 @@
|
||||
package org.jetbrains.kotlin.backend.common.serialization
|
||||
|
||||
import org.jetbrains.kotlin.library.KLIB_PROPERTY_IR_VERSION
|
||||
import org.jetbrains.kotlin.library.KotlinLibrary
|
||||
import org.jetbrains.kotlin.metadata.deserialization.BinaryVersion
|
||||
|
||||
class KlibIrVersion(vararg numbers: Int) : BinaryVersion(*numbers) {
|
||||
|
||||
override fun isCompatible(): Boolean = isCompatibleTo(INSTANCE)
|
||||
|
||||
|
||||
companion object {
|
||||
@JvmField
|
||||
val INSTANCE = KlibIrVersion(1, 0, 0)
|
||||
|
||||
@JvmField
|
||||
val INVALID_VERSION = KlibIrVersion(-1, -1, -1)
|
||||
}
|
||||
}
|
||||
|
||||
val KotlinLibrary.metadataVersion: KlibIrVersion
|
||||
get() {
|
||||
val versionString = manifestProperties.getProperty(KLIB_PROPERTY_IR_VERSION)
|
||||
val versionIntArray = BinaryVersion.parseVersionArray(versionString)
|
||||
?: error("Could not parse metadata version: $versionString")
|
||||
return KlibIrVersion(*versionIntArray)
|
||||
}
|
||||
+1
@@ -9,6 +9,7 @@ import org.jetbrains.kotlin.backend.common.serialization.DescriptorTable
|
||||
import org.jetbrains.kotlin.backend.common.serialization.isExpectMember
|
||||
import org.jetbrains.kotlin.backend.common.serialization.isSerializableExpectClass
|
||||
import org.jetbrains.kotlin.backend.common.serialization.metadata.KlibMetadataSerializer
|
||||
import org.jetbrains.kotlin.backend.common.serialization.metadata.KlibMetadataVersion
|
||||
import org.jetbrains.kotlin.config.LanguageVersionSettings
|
||||
import org.jetbrains.kotlin.descriptors.CallableDescriptor
|
||||
import org.jetbrains.kotlin.descriptors.ClassifierDescriptor
|
||||
|
||||
+3
-3
@@ -5,7 +5,7 @@
|
||||
|
||||
package org.jetbrains.kotlin.ir.backend.js
|
||||
|
||||
import org.jetbrains.kotlin.konan.KonanVersion
|
||||
import org.jetbrains.kotlin.konan.CompilerVersion
|
||||
import org.jetbrains.kotlin.konan.file.File
|
||||
import org.jetbrains.kotlin.library.KotlinAbiVersion
|
||||
import org.jetbrains.kotlin.library.KotlinLibrary
|
||||
@@ -20,7 +20,7 @@ class JsLibraryResolver(
|
||||
repositories: List<String>,
|
||||
directLibs: List<String>,
|
||||
knownAbiVersions: List<KotlinAbiVersion>?,
|
||||
knownCompilerVersions: List<KonanVersion>?,
|
||||
knownCompilerVersions: List<CompilerVersion>?,
|
||||
distributionKlib: String?,
|
||||
localKotlinDir: String?,
|
||||
skipCurrentDir: Boolean,
|
||||
@@ -49,7 +49,7 @@ fun jsResolveLibraries(libraries: List<String>, logger: Logger): KotlinLibraryRe
|
||||
repositories = emptyList(),
|
||||
directLibs = libraryAbsolutePaths,
|
||||
knownAbiVersions = listOf(KotlinAbiVersion.CURRENT),
|
||||
knownCompilerVersions = emptyList<KonanVersion>(),
|
||||
knownCompilerVersions = emptyList<CompilerVersion>(),
|
||||
distributionKlib = null,
|
||||
localKotlinDir = null,
|
||||
skipCurrentDir = false,
|
||||
|
||||
@@ -12,7 +12,9 @@ import org.jetbrains.kotlin.backend.common.LoggingContext
|
||||
import org.jetbrains.kotlin.backend.common.extensions.IrGenerationExtension
|
||||
import org.jetbrains.kotlin.backend.common.extensions.IrPluginContext
|
||||
import org.jetbrains.kotlin.backend.common.serialization.DescriptorTable
|
||||
import org.jetbrains.kotlin.backend.common.serialization.KlibIrVersion
|
||||
import org.jetbrains.kotlin.backend.common.serialization.metadata.DynamicTypeDeserializer
|
||||
import org.jetbrains.kotlin.backend.common.serialization.metadata.KlibMetadataVersion
|
||||
import org.jetbrains.kotlin.builtins.KotlinBuiltIns
|
||||
import org.jetbrains.kotlin.config.*
|
||||
import org.jetbrains.kotlin.descriptors.DeclarationDescriptor
|
||||
@@ -21,7 +23,6 @@ import org.jetbrains.kotlin.descriptors.impl.ModuleDescriptorImpl
|
||||
import org.jetbrains.kotlin.ir.backend.js.lower.serialization.ir.JsIrLinker
|
||||
import org.jetbrains.kotlin.ir.backend.js.lower.serialization.ir.JsIrModuleSerializer
|
||||
import org.jetbrains.kotlin.ir.backend.js.lower.serialization.ir.JsMangler
|
||||
import org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.JsKlibMetadataVersion
|
||||
import org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.KlibMetadataIncrementalSerializer
|
||||
import org.jetbrains.kotlin.ir.declarations.IrModuleFragment
|
||||
import org.jetbrains.kotlin.ir.descriptors.IrBuiltIns
|
||||
@@ -32,8 +33,6 @@ import org.jetbrains.kotlin.ir.util.generateTypicalIrProviderList
|
||||
import org.jetbrains.kotlin.ir.visitors.acceptVoid
|
||||
import org.jetbrains.kotlin.js.analyzer.JsAnalysisResult
|
||||
import org.jetbrains.kotlin.js.config.JSConfigurationKeys
|
||||
import org.jetbrains.kotlin.konan.KonanVersionImpl
|
||||
import org.jetbrains.kotlin.konan.MetaVersion
|
||||
import org.jetbrains.kotlin.konan.properties.propertyList
|
||||
import org.jetbrains.kotlin.konan.util.KlibMetadataFactories
|
||||
import org.jetbrains.kotlin.library.*
|
||||
@@ -76,7 +75,7 @@ val emptyLoggingContext = object : LoggingContext {
|
||||
}
|
||||
|
||||
private val CompilerConfiguration.metadataVersion
|
||||
get() = get(CommonConfigurationKeys.METADATA_VERSION) as? JsKlibMetadataVersion ?: JsKlibMetadataVersion.INSTANCE
|
||||
get() = get(CommonConfigurationKeys.METADATA_VERSION) as? KlibMetadataVersion ?: KlibMetadataVersion.INSTANCE
|
||||
|
||||
class KotlinFileSerializedData(val metadata: ByteArray, val irData: SerializedIrFile)
|
||||
|
||||
@@ -417,12 +416,13 @@ fun serializeModuleIntoKlib(
|
||||
|
||||
val fullSerializedIr = SerializedIrModule(compiledKotlinFiles.map { it.irData })
|
||||
|
||||
val abiVersion = KotlinAbiVersion.CURRENT
|
||||
// DO NOT PUSH. Commonize me.
|
||||
val compilerVersion = KonanVersionImpl(MetaVersion.DEV, 1, 3, 0, -1)
|
||||
val libraryVersion = null
|
||||
|
||||
val versions = KonanLibraryVersioning(abiVersion = abiVersion, libraryVersion = libraryVersion, compilerVersion = compilerVersion)
|
||||
val versions = KotlinLibraryVersioning(
|
||||
abiVersion = KotlinAbiVersion.CURRENT,
|
||||
libraryVersion = null,
|
||||
compilerVersion = KotlinCompilerVersion.VERSION,
|
||||
metadataVersion = KlibMetadataVersion.INSTANCE.toString(),
|
||||
irVersion = KlibIrVersion.INSTANCE.toString()
|
||||
)
|
||||
|
||||
buildKoltinLibrary(
|
||||
linkDependencies = dependencies,
|
||||
|
||||
-39
@@ -1,39 +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.ir.backend.js.lower.serialization.metadata
|
||||
|
||||
import org.jetbrains.kotlin.metadata.deserialization.BinaryVersion
|
||||
import java.io.DataInputStream
|
||||
import java.io.InputStream
|
||||
|
||||
class JsKlibMetadataVersion(vararg numbers: Int) : BinaryVersion(*numbers) {
|
||||
override fun isCompatible(): Boolean =
|
||||
this.isCompatibleTo(INSTANCE)
|
||||
|
||||
fun toInteger() = (patch shl 16) + (minOf(minor, 255) shl 8) + minOf(major, 255)
|
||||
|
||||
companion object {
|
||||
@JvmField
|
||||
val INSTANCE = JsKlibMetadataVersion(1, 2, 6)
|
||||
|
||||
@JvmField
|
||||
val INVALID_VERSION = JsKlibMetadataVersion()
|
||||
|
||||
fun fromInteger(version: Int): JsKlibMetadataVersion =
|
||||
JsKlibMetadataVersion(version and 255, (version shr 8) and 255, version shr 16)
|
||||
|
||||
fun readFrom(stream: InputStream): JsKlibMetadataVersion {
|
||||
val dataInput = DataInputStream(stream)
|
||||
val size = dataInput.readInt()
|
||||
|
||||
// We assume here that the version will always have 3 components. This is needed to prevent reading an unpredictable amount
|
||||
// of integers from old .kjsm files (pre-1.1) because they did not have the version in the beginning
|
||||
if (size != INSTANCE.toArray().size) return INVALID_VERSION
|
||||
|
||||
return JsKlibMetadataVersion(*(1..size).map { dataInput.readInt() }.toIntArray())
|
||||
}
|
||||
}
|
||||
}
|
||||
+6
-6
@@ -7,7 +7,7 @@ package org.jetbrains.kotlin.konan
|
||||
|
||||
import java.io.Serializable
|
||||
|
||||
interface KonanVersion : Serializable {
|
||||
interface CompilerVersion : Serializable {
|
||||
val meta: MetaVersion
|
||||
val major: Int
|
||||
val minor: Int
|
||||
@@ -20,12 +20,12 @@ interface KonanVersion : Serializable {
|
||||
// major.minor.patch-meta-build where patch, meta and build are optional.
|
||||
private val versionPattern = "(\\d+)\\.(\\d+)(?:\\.(\\d+))?(?:-(\\p{Alpha}\\p{Alnum}*))?(?:-(\\d+))?".toRegex()
|
||||
|
||||
fun fromString(version: String): KonanVersion {
|
||||
fun fromString(version: String): CompilerVersion {
|
||||
val (major, minor, maintenance, metaString, build) =
|
||||
versionPattern.matchEntire(version)?.destructured
|
||||
?: throw IllegalArgumentException("Cannot parse Kotlin/Native version: $version")
|
||||
|
||||
return KonanVersionImpl(
|
||||
return CompilerVersionImpl(
|
||||
MetaVersion.findAppropriate(metaString),
|
||||
major.toInt(),
|
||||
minor.toInt(),
|
||||
@@ -36,15 +36,15 @@ interface KonanVersion : Serializable {
|
||||
}
|
||||
}
|
||||
|
||||
fun String.parseKonanVersion() = KonanVersion.fromString(this)
|
||||
fun String.parseCompilerVersion() = CompilerVersion.fromString(this)
|
||||
|
||||
data class KonanVersionImpl(
|
||||
data class CompilerVersionImpl(
|
||||
override val meta: MetaVersion = MetaVersion.DEV,
|
||||
override val major: Int,
|
||||
override val minor: Int,
|
||||
override val maintenance: Int,
|
||||
override val build: Int = -1
|
||||
) : KonanVersion {
|
||||
) : CompilerVersion {
|
||||
|
||||
override fun toString(showMeta: Boolean, showBuild: Boolean) = buildString {
|
||||
append(major)
|
||||
+12
-2
@@ -5,17 +5,27 @@
|
||||
|
||||
package org.jetbrains.kotlin.backend.common.serialization.metadata
|
||||
|
||||
import org.jetbrains.kotlin.library.KLIB_PROPERTY_METADATA_VERSION
|
||||
import org.jetbrains.kotlin.library.KotlinLibrary
|
||||
import org.jetbrains.kotlin.metadata.deserialization.BinaryVersion
|
||||
|
||||
class KlibMetadataVersion(vararg numbers: Int) : BinaryVersion(*numbers) {
|
||||
|
||||
override fun isCompatible(): Boolean = this.major == 1 && this.minor == 0
|
||||
override fun isCompatible(): Boolean = isCompatibleTo(INSTANCE)
|
||||
|
||||
companion object {
|
||||
@JvmField
|
||||
val INSTANCE = KlibMetadataVersion(1, 0, 0)
|
||||
|
||||
@JvmField
|
||||
val INVALID_VERSION = KlibMetadataVersion()
|
||||
val INVALID_VERSION = KlibMetadataVersion(-1, -1, -1)
|
||||
}
|
||||
}
|
||||
|
||||
val KotlinLibrary.metadataVersion: KlibMetadataVersion
|
||||
get() {
|
||||
val versionString = manifestProperties.getProperty(KLIB_PROPERTY_METADATA_VERSION)
|
||||
val versionIntArray = BinaryVersion.parseVersionArray(versionString)
|
||||
?: error("Could not parse ir version: $versionString")
|
||||
return KlibMetadataVersion(*versionIntArray)
|
||||
}
|
||||
@@ -1,29 +0,0 @@
|
||||
package org.jetbrains.kotlin.library
|
||||
|
||||
import org.jetbrains.kotlin.konan.parseKonanVersion
|
||||
import org.jetbrains.kotlin.konan.properties.Properties
|
||||
import org.jetbrains.kotlin.konan.KonanVersion
|
||||
|
||||
data class KonanLibraryVersioning(
|
||||
val libraryVersion: String?,
|
||||
val compilerVersion: KonanVersion?,
|
||||
val abiVersion: KotlinAbiVersion?
|
||||
)
|
||||
|
||||
fun Properties.writeKonanLibraryVersioning(versions: KonanLibraryVersioning) {
|
||||
versions.abiVersion ?. let { this.setProperty(KLIB_PROPERTY_ABI_VERSION, it.toString()) }
|
||||
versions.libraryVersion ?. let { this.setProperty(KLIB_PROPERTY_LIBRARY_VERSION, it) }
|
||||
versions.compilerVersion ?. let { this.setProperty(KLIB_PROPERTY_COMPILER_VERSION, "${versions.compilerVersion.toString(true, true)}") }
|
||||
}
|
||||
|
||||
fun Properties.readKonanLibraryVersioning(): KonanLibraryVersioning {
|
||||
val abiVersion = this.getProperty(KLIB_PROPERTY_ABI_VERSION)?.parseKonanAbiVersion()
|
||||
val libraryVersion = this.getProperty(KLIB_PROPERTY_LIBRARY_VERSION)
|
||||
val compilerVersion = this.getProperty(KLIB_PROPERTY_COMPILER_VERSION)?.parseKonanVersion()
|
||||
|
||||
return KonanLibraryVersioning(
|
||||
abiVersion = abiVersion,
|
||||
libraryVersion = libraryVersion,
|
||||
compilerVersion = compilerVersion
|
||||
)
|
||||
}
|
||||
@@ -8,6 +8,8 @@ const val KLIB_PROPERTY_ABI_VERSION = "abi_version"
|
||||
const val KLIB_PROPERTY_COMPILER_VERSION = "compiler_version"
|
||||
const val KLIB_PROPERTY_DEPENDENCY_VERSION = "dependency_version"
|
||||
const val KLIB_PROPERTY_LIBRARY_VERSION = "library_version"
|
||||
const val KLIB_PROPERTY_METADATA_VERSION = "metadata_version"
|
||||
const val KLIB_PROPERTY_IR_VERSION = "ir_version"
|
||||
const val KLIB_PROPERTY_UNIQUE_NAME = "unique_name"
|
||||
const val KLIB_PROPERTY_DEPENDS = "depends"
|
||||
const val KLIB_PROPERTY_PACKAGE = "package"
|
||||
@@ -21,7 +23,7 @@ const val KLIB_PROPERTY_EXPORT_FORWARD_DECLARATIONS = "exportForwardDeclarations
|
||||
interface BaseKotlinLibrary {
|
||||
val libraryName: String
|
||||
val libraryFile: File
|
||||
val versions: KonanLibraryVersioning
|
||||
val versions: KotlinLibraryVersioning
|
||||
// Whether this library is default (provided by distribution)?
|
||||
val isDefault: Boolean
|
||||
val manifestProperties: Properties
|
||||
|
||||
@@ -0,0 +1,35 @@
|
||||
package org.jetbrains.kotlin.library
|
||||
|
||||
import org.jetbrains.kotlin.konan.properties.Properties
|
||||
|
||||
data class KotlinLibraryVersioning(
|
||||
val libraryVersion: String?,
|
||||
val compilerVersion: String?,
|
||||
val abiVersion: KotlinAbiVersion?,
|
||||
val metadataVersion: String?,
|
||||
val irVersion: String?
|
||||
)
|
||||
|
||||
fun Properties.writeKonanLibraryVersioning(versions: KotlinLibraryVersioning) {
|
||||
versions.abiVersion ?. let { this.setProperty(KLIB_PROPERTY_ABI_VERSION, it.toString()) }
|
||||
versions.libraryVersion ?. let { this.setProperty(KLIB_PROPERTY_LIBRARY_VERSION, it) }
|
||||
versions.compilerVersion ?. let { this.setProperty(KLIB_PROPERTY_COMPILER_VERSION, it) }
|
||||
versions.metadataVersion ?. let { this.setProperty(KLIB_PROPERTY_METADATA_VERSION, it) }
|
||||
versions.irVersion ?. let { this.setProperty(KLIB_PROPERTY_IR_VERSION, it) }
|
||||
}
|
||||
|
||||
fun Properties.readKonanLibraryVersioning(): KotlinLibraryVersioning {
|
||||
val abiVersion = this.getProperty(KLIB_PROPERTY_ABI_VERSION)?.parseKonanAbiVersion()
|
||||
val libraryVersion = this.getProperty(KLIB_PROPERTY_LIBRARY_VERSION)
|
||||
val compilerVersion = this.getProperty(KLIB_PROPERTY_COMPILER_VERSION)
|
||||
val metadataVersion = this.getProperty(KLIB_PROPERTY_METADATA_VERSION)
|
||||
val irVersion = this.getProperty(KLIB_PROPERTY_IR_VERSION)
|
||||
|
||||
return KotlinLibraryVersioning(
|
||||
abiVersion = abiVersion,
|
||||
libraryVersion = libraryVersion,
|
||||
compilerVersion = compilerVersion,
|
||||
metadataVersion = metadataVersion,
|
||||
irVersion = irVersion
|
||||
)
|
||||
}
|
||||
@@ -8,7 +8,7 @@ package org.jetbrains.kotlin.library
|
||||
import org.jetbrains.kotlin.konan.properties.Properties
|
||||
|
||||
interface BaseWriter {
|
||||
val versions: KonanLibraryVersioning
|
||||
val versions: KotlinLibraryVersioning
|
||||
fun addLinkDependencies(libraries: List<KotlinLibrary>)
|
||||
fun addManifestAddend(properties: Properties)
|
||||
fun commit()
|
||||
|
||||
@@ -1,9 +1,7 @@
|
||||
package org.jetbrains.kotlin.library
|
||||
|
||||
import org.jetbrains.kotlin.konan.KonanVersion
|
||||
import org.jetbrains.kotlin.konan.CompilerVersion
|
||||
import org.jetbrains.kotlin.konan.file.File
|
||||
import org.jetbrains.kotlin.konan.properties.hasProperty
|
||||
import org.jetbrains.kotlin.library.impl.createKotlinLibrary
|
||||
import org.jetbrains.kotlin.util.*
|
||||
|
||||
const val KOTLIN_STDLIB_NAME = "stdlib"
|
||||
@@ -19,7 +17,7 @@ interface SearchPathResolver<L: KotlinLibrary> : WithLogger {
|
||||
|
||||
interface SearchPathResolverWithAttributes<L: KotlinLibrary>: SearchPathResolver<L> {
|
||||
val knownAbiVersions: List<KotlinAbiVersion>?
|
||||
val knownCompilerVersions: List<KonanVersion>?
|
||||
val knownCompilerVersions: List<CompilerVersion>?
|
||||
}
|
||||
|
||||
// This is a simple library resolver that only cares for file names.
|
||||
@@ -159,7 +157,7 @@ abstract class KotlinLibrarySearchPathResolver<L: KotlinLibrary>(
|
||||
}
|
||||
}
|
||||
|
||||
fun KonanVersion.compatible(other: KonanVersion) =
|
||||
fun CompilerVersion.compatible(other: CompilerVersion) =
|
||||
this.major == other.major
|
||||
&& this.minor == other.minor
|
||||
&& this.maintenance == other.maintenance
|
||||
@@ -172,7 +170,7 @@ abstract class KotlinLibraryProperResolverWithAttributes<L: KotlinLibrary>(
|
||||
repositories: List<String>,
|
||||
directLibs: List<String>,
|
||||
override val knownAbiVersions: List<KotlinAbiVersion>?,
|
||||
override val knownCompilerVersions: List<KonanVersion>?,
|
||||
override val knownCompilerVersions: List<CompilerVersion>?,
|
||||
distributionKlib: String?,
|
||||
localKotlinDir: String?,
|
||||
skipCurrentDir: Boolean,
|
||||
@@ -188,23 +186,13 @@ abstract class KotlinLibraryProperResolverWithAttributes<L: KotlinLibrary>(
|
||||
val candidateAbiVersion = candidate.versions.abiVersion
|
||||
val candidateLibraryVersion = candidate.versions.libraryVersion
|
||||
|
||||
|
||||
val abiVersionMatch = candidateAbiVersion != null &&
|
||||
knownAbiVersions != null &&
|
||||
knownAbiVersions!!.contains(candidateAbiVersion)
|
||||
|
||||
val compilerVersionMatch = candidateCompilerVersion != null &&
|
||||
knownCompilerVersions != null &&
|
||||
knownCompilerVersions!!.any { it.compatible(candidateCompilerVersion) }
|
||||
|
||||
if (!abiVersionMatch && !compilerVersionMatch) {
|
||||
if (!abiVersionMatch) {
|
||||
logger.warning("skipping $candidatePath. The abi versions don't match. Expected '${knownAbiVersions}', found '${candidateAbiVersion}'")
|
||||
|
||||
if (knownCompilerVersions != null) {
|
||||
val expected = knownCompilerVersions?.map { it.toString(false, false) }
|
||||
val found = candidateCompilerVersion?.toString(true, true)
|
||||
logger.warning("The compiler versions don't match either. Expected '${expected}', found '${found}'")
|
||||
}
|
||||
|
||||
return false
|
||||
}
|
||||
|
||||
|
||||
@@ -34,7 +34,7 @@ open class BaseKotlinLibraryImpl(
|
||||
access.inPlace { it.manifestFile.loadProperties() }
|
||||
}
|
||||
|
||||
override val versions: KonanLibraryVersioning by lazy {
|
||||
override val versions: KotlinLibraryVersioning by lazy {
|
||||
manifestProperties.readKonanLibraryVersioning()
|
||||
}
|
||||
}
|
||||
|
||||
@@ -18,7 +18,7 @@ open class KotlinLibraryLayoutForWriter(
|
||||
open class BaseWriterImpl(
|
||||
val libraryLayout: KotlinLibraryLayoutForWriter,
|
||||
moduleName: String,
|
||||
override val versions: KonanLibraryVersioning,
|
||||
override val versions: KotlinLibraryVersioning,
|
||||
val nopack: Boolean = false
|
||||
) : BaseWriter {
|
||||
|
||||
@@ -74,7 +74,7 @@ open class BaseWriterImpl(
|
||||
class KoltinLibraryWriterImpl(
|
||||
libDir: File,
|
||||
moduleName: String,
|
||||
versions: KonanLibraryVersioning,
|
||||
versions: KotlinLibraryVersioning,
|
||||
nopack: Boolean = false,
|
||||
|
||||
val layout: KotlinLibraryLayoutForWriter = KotlinLibraryLayoutForWriter(libDir),
|
||||
@@ -90,7 +90,7 @@ fun buildKoltinLibrary(
|
||||
linkDependencies: List<KotlinLibrary>,
|
||||
metadata: SerializedMetadata,
|
||||
ir: SerializedIrModule,
|
||||
versions: KonanLibraryVersioning,
|
||||
versions: KotlinLibraryVersioning,
|
||||
output: String,
|
||||
moduleName: String,
|
||||
nopack: Boolean,
|
||||
|
||||
+2
-2
@@ -39,7 +39,7 @@ class KotlinNativeLoadingMetadataCache : BaseComponent {
|
||||
|
||||
private val packageFragmentCache = createConcurrentWeakValueMap<CacheKey, CacheValue<ProtoBuf.PackageFragment>>()
|
||||
private val moduleHeaderCache = createConcurrentWeakValueMap<CacheKey, CacheValue<KlibMetadataProtoBuf.Header>>()
|
||||
private val libraryVersioningCache = createConcurrentWeakValueMap<CacheKey, CacheValue<KonanLibraryVersioning>>()
|
||||
private val libraryVersioningCache = createConcurrentWeakValueMap<CacheKey, CacheValue<KotlinLibraryVersioning>>()
|
||||
|
||||
fun getCachedPackageFragment(packageFragmentFile: VirtualFile): ProtoBuf.PackageFragment? {
|
||||
check(packageFragmentFile.extension == KLIB_METADATA_FILE_EXTENSION) {
|
||||
@@ -93,7 +93,7 @@ class KotlinNativeLoadingMetadataCache : BaseComponent {
|
||||
}
|
||||
}
|
||||
|
||||
private fun computeLibraryVersioning(manifestFile: VirtualFile): KonanLibraryVersioning? = try {
|
||||
private fun computeLibraryVersioning(manifestFile: VirtualFile): KotlinLibraryVersioning? = try {
|
||||
Properties().apply { manifestFile.inputStream.use { load(it) } }.readKonanLibraryVersioning()
|
||||
} catch (_: IOException) {
|
||||
// ignore and cache null value
|
||||
|
||||
+2
-2
@@ -5,11 +5,11 @@
|
||||
|
||||
package org.jetbrains.kotlin.konan.library.lite
|
||||
|
||||
import org.jetbrains.kotlin.konan.KonanVersion
|
||||
import org.jetbrains.kotlin.konan.CompilerVersion
|
||||
import java.io.File
|
||||
|
||||
class LiteKonanDistribution(
|
||||
val distributionHome: File,
|
||||
val konanVersion: KonanVersion,
|
||||
val konanVersion: CompilerVersion,
|
||||
val konanVersionString: String
|
||||
)
|
||||
|
||||
+2
-2
@@ -5,7 +5,7 @@
|
||||
|
||||
package org.jetbrains.kotlin.konan.library.lite
|
||||
|
||||
import org.jetbrains.kotlin.konan.KonanVersion
|
||||
import org.jetbrains.kotlin.konan.CompilerVersion
|
||||
import org.jetbrains.kotlin.konan.library.KONAN_STDLIB_NAME
|
||||
import org.jetbrains.kotlin.konan.library.konanCommonLibraryPath
|
||||
import java.io.File
|
||||
@@ -17,7 +17,7 @@ object LiteKonanDistributionProvider {
|
||||
|
||||
return LiteKonanDistribution(
|
||||
konanHomeDir,
|
||||
KonanVersion.fromString(stdlib.compilerVersion),
|
||||
CompilerVersion.fromString(stdlib.compilerVersion),
|
||||
stdlib.compilerVersion
|
||||
)
|
||||
}
|
||||
|
||||
+3
-3
@@ -5,7 +5,7 @@
|
||||
|
||||
package org.jetbrains.kotlin.konan.library.lite
|
||||
|
||||
import org.jetbrains.kotlin.konan.KonanVersion
|
||||
import org.jetbrains.kotlin.konan.CompilerVersion
|
||||
import org.junit.Test
|
||||
import org.junit.Assert.*
|
||||
|
||||
@@ -24,7 +24,7 @@ class LiteKonanDistributionTests {
|
||||
private companion object {
|
||||
const val expectedVersionString = "1.2.3-release-5678"
|
||||
|
||||
val expectedVersion: KonanVersion
|
||||
get() = KonanVersion.fromString(expectedVersionString)
|
||||
val expectedVersion: CompilerVersion
|
||||
get() = CompilerVersion.fromString(expectedVersionString)
|
||||
}
|
||||
}
|
||||
|
||||
+3
-3
@@ -23,7 +23,7 @@ import org.jetbrains.kotlin.cli.common.messages.MessageRenderer
|
||||
import org.jetbrains.kotlin.gradle.plugin.PropertiesProvider
|
||||
import org.jetbrains.kotlin.gradle.plugin.PropertiesProvider.Companion.KOTLIN_NATIVE_HOME
|
||||
import org.jetbrains.kotlin.gradle.utils.NativeCompilerDownloader
|
||||
import org.jetbrains.kotlin.konan.KonanVersion
|
||||
import org.jetbrains.kotlin.konan.CompilerVersion
|
||||
import org.jetbrains.kotlin.konan.target.HostManager
|
||||
import org.jetbrains.kotlin.konan.target.KonanTarget
|
||||
import org.jetbrains.kotlin.konan.util.DependencyDirectories
|
||||
@@ -43,9 +43,9 @@ internal val Project.konanHome: String
|
||||
file(it).absolutePath
|
||||
} ?: NativeCompilerDownloader(project).compilerDirectory.absolutePath
|
||||
|
||||
internal val Project.konanVersion: KonanVersion
|
||||
internal val Project.konanVersion: CompilerVersion
|
||||
get() = PropertiesProvider(this).nativeVersion?.let {
|
||||
KonanVersion.fromString(it.toString())
|
||||
CompilerVersion.fromString(it.toString())
|
||||
} ?: NativeCompilerDownloader.DEFAULT_KONAN_VERSION
|
||||
|
||||
internal val Project.disableKonanDaemon: Boolean
|
||||
|
||||
+4
-7
@@ -6,18 +6,15 @@
|
||||
@file:Suppress("PackageDirectoryMismatch") // Old package for compatibility
|
||||
package org.jetbrains.kotlin.gradle.utils
|
||||
|
||||
import org.gradle.api.Action
|
||||
import org.gradle.api.Project
|
||||
import org.gradle.api.artifacts.repositories.ArtifactRepository
|
||||
import org.gradle.api.artifacts.repositories.IvyArtifactRepository
|
||||
import org.gradle.api.artifacts.repositories.IvyPatternRepositoryLayout
|
||||
import org.gradle.api.file.FileTree
|
||||
import org.gradle.api.logging.Logger
|
||||
import org.jetbrains.kotlin.compilerRunner.KonanCompilerRunner
|
||||
import org.jetbrains.kotlin.compilerRunner.konanVersion
|
||||
import org.jetbrains.kotlin.gradle.logging.kotlinInfo
|
||||
import org.jetbrains.kotlin.gradle.plugin.PropertiesProvider
|
||||
import org.jetbrains.kotlin.konan.KonanVersion
|
||||
import org.jetbrains.kotlin.konan.CompilerVersion
|
||||
import org.jetbrains.kotlin.konan.MetaVersion
|
||||
import org.jetbrains.kotlin.konan.target.HostManager
|
||||
import org.jetbrains.kotlin.konan.util.DependencyDirectories
|
||||
@@ -25,12 +22,12 @@ import java.io.File
|
||||
|
||||
class NativeCompilerDownloader(
|
||||
val project: Project,
|
||||
private val compilerVersion: KonanVersion = project.konanVersion
|
||||
private val compilerVersion: CompilerVersion = project.konanVersion
|
||||
) {
|
||||
|
||||
companion object {
|
||||
internal val DEFAULT_KONAN_VERSION: KonanVersion by lazy {
|
||||
KonanVersion.fromString(loadPropertyFromResources("project.properties", "kotlin.native.version"))
|
||||
internal val DEFAULT_KONAN_VERSION: CompilerVersion by lazy {
|
||||
CompilerVersion.fromString(loadPropertyFromResources("project.properties", "kotlin.native.version"))
|
||||
}
|
||||
|
||||
private const val BASE_DOWNLOAD_URL = "https://download.jetbrains.com/kotlin/native/builds"
|
||||
|
||||
+2
-3
@@ -18,8 +18,7 @@ import org.jetbrains.kotlin.gradle.internal.testing.TCServiceMessagesClientSetti
|
||||
import org.jetbrains.kotlin.gradle.internal.testing.TCServiceMessagesTestExecutionSpec
|
||||
import org.jetbrains.kotlin.gradle.targets.native.internal.parseKotlinNativeStackTraceAsJvm
|
||||
import org.jetbrains.kotlin.gradle.tasks.KotlinTest
|
||||
import org.jetbrains.kotlin.konan.KonanVersion
|
||||
import org.jetbrains.kotlin.konan.MetaVersion
|
||||
import org.jetbrains.kotlin.konan.CompilerVersion
|
||||
import java.io.File
|
||||
import java.util.concurrent.Callable
|
||||
|
||||
@@ -101,7 +100,7 @@ open class KotlinNativeTest : KotlinTest() {
|
||||
// KonanVersion doesn't provide an API to compare versions,
|
||||
// so we have to transform it to KotlinVersion first.
|
||||
// Note: this check doesn't take into account the meta version (release, eap, dev).
|
||||
private fun KonanVersion.isAtLeast(major: Int, minor: Int, patch: Int): Boolean =
|
||||
private fun CompilerVersion.isAtLeast(major: Int, minor: Int, patch: Int): Boolean =
|
||||
KotlinVersion(this.major, this.minor, this.maintenance).isAtLeast(major, minor, patch)
|
||||
|
||||
override fun createTestExecutionSpec(): TCServiceMessagesTestExecutionSpec {
|
||||
|
||||
Reference in New Issue
Block a user