Dropped outdated klib version compatibility mechanisms

This commit is contained in:
Alexander Gorshenev
2020-11-05 22:31:45 +03:00
parent 8b2b36d61f
commit 891a4c4621
3 changed files with 6 additions and 31 deletions
@@ -19,8 +19,6 @@ import org.jetbrains.kotlin.util.Logger
class JsLibraryResolver( class JsLibraryResolver(
repositories: List<String>, repositories: List<String>,
directLibs: List<String>, directLibs: List<String>,
knownAbiVersions: List<KotlinAbiVersion>?,
knownCompilerVersions: List<CompilerVersion>?,
distributionKlib: String?, distributionKlib: String?,
localKotlinDir: String?, localKotlinDir: String?,
skipCurrentDir: Boolean, skipCurrentDir: Boolean,
@@ -28,8 +26,6 @@ class JsLibraryResolver(
) : KotlinLibraryProperResolverWithAttributes<KotlinLibrary>( ) : KotlinLibraryProperResolverWithAttributes<KotlinLibrary>(
repositories, repositories,
directLibs, directLibs,
knownAbiVersions,
knownCompilerVersions,
distributionKlib, distributionKlib,
localKotlinDir, localKotlinDir,
skipCurrentDir, skipCurrentDir,
@@ -48,8 +44,6 @@ fun jsResolveLibraries(libraries: List<String>, logger: Logger): KotlinLibraryRe
val libraryResolver = JsLibraryResolver( val libraryResolver = JsLibraryResolver(
repositories = emptyList(), repositories = emptyList(),
directLibs = libraryAbsolutePaths, directLibs = libraryAbsolutePaths,
knownAbiVersions = listOf(KotlinAbiVersion.CURRENT),
knownCompilerVersions = emptyList<CompilerVersion>(),
distributionKlib = null, distributionKlib = null,
localKotlinDir = null, localKotlinDir = null,
skipCurrentDir = false, skipCurrentDir = false,
@@ -21,8 +21,6 @@ val jvmLibrariesProvidedByDefault = setOf("stdlib", "kotlin")
class JvmLibraryResolver( class JvmLibraryResolver(
repositories: List<String>, repositories: List<String>,
directLibs: List<String>, directLibs: List<String>,
knownAbiVersions: List<KotlinAbiVersion>?,
knownCompilerVersions: List<CompilerVersion>?,
distributionKlib: String?, distributionKlib: String?,
localKotlinDir: String?, localKotlinDir: String?,
skipCurrentDir: Boolean, skipCurrentDir: Boolean,
@@ -30,8 +28,6 @@ class JvmLibraryResolver(
) : KotlinLibraryProperResolverWithAttributes<KotlinLibrary>( ) : KotlinLibraryProperResolverWithAttributes<KotlinLibrary>(
repositories, repositories,
directLibs, directLibs,
knownAbiVersions,
knownCompilerVersions,
distributionKlib, distributionKlib,
localKotlinDir, localKotlinDir,
skipCurrentDir, skipCurrentDir,
@@ -54,8 +50,6 @@ fun jvmResolveLibraries(libraries: List<String>, logger: Logger): KotlinLibraryR
val libraryResolver = JvmLibraryResolver( val libraryResolver = JvmLibraryResolver(
repositories = emptyList(), repositories = emptyList(),
directLibs = libraryAbsolutePaths, directLibs = libraryAbsolutePaths,
knownAbiVersions = listOf(KotlinAbiVersion.CURRENT),
knownCompilerVersions = emptyList<CompilerVersion>(),
distributionKlib = null, distributionKlib = null,
localKotlinDir = null, localKotlinDir = null,
skipCurrentDir = false, skipCurrentDir = false,
@@ -20,11 +20,6 @@ interface SearchPathResolver<L : KotlinLibrary> : WithLogger {
fun isProvidedByDefault(unresolved: UnresolvedLibrary): Boolean = false fun isProvidedByDefault(unresolved: UnresolvedLibrary): Boolean = false
} }
interface SearchPathResolverWithAttributes<L : KotlinLibrary> : SearchPathResolver<L> {
val knownAbiVersions: List<KotlinAbiVersion>?
val knownCompilerVersions: List<CompilerVersion>?
}
// This is a simple library resolver that only cares for file names. // This is a simple library resolver that only cares for file names.
abstract class KotlinLibrarySearchPathResolver<L : KotlinLibrary>( abstract class KotlinLibrarySearchPathResolver<L : KotlinLibrary>(
repositories: List<String>, repositories: List<String>,
@@ -215,15 +210,13 @@ fun CompilerVersion.compatible(other: CompilerVersion) =
abstract class KotlinLibraryProperResolverWithAttributes<L : KotlinLibrary>( abstract class KotlinLibraryProperResolverWithAttributes<L : KotlinLibrary>(
repositories: List<String>, repositories: List<String>,
directLibs: List<String>, directLibs: List<String>,
override val knownAbiVersions: List<KotlinAbiVersion>?,
override val knownCompilerVersions: List<CompilerVersion>?,
distributionKlib: String?, distributionKlib: String?,
localKotlinDir: String?, localKotlinDir: String?,
skipCurrentDir: Boolean, skipCurrentDir: Boolean,
override val logger: Logger, override val logger: Logger,
private val knownIrProviders: List<String> private val knownIrProviders: List<String>
) : KotlinLibrarySearchPathResolver<L>(repositories, directLibs, distributionKlib, localKotlinDir, skipCurrentDir, logger), ) : KotlinLibrarySearchPathResolver<L>(repositories, directLibs, distributionKlib, localKotlinDir, skipCurrentDir, logger),
SearchPathResolverWithAttributes<L> { SearchPathResolver<L> {
override fun libraryMatch(candidate: L, unresolved: UnresolvedLibrary): Boolean { override fun libraryMatch(candidate: L, unresolved: UnresolvedLibrary): Boolean {
val candidatePath = candidate.libraryFile.absolutePath val candidatePath = candidate.libraryFile.absolutePath
@@ -231,13 +224,8 @@ abstract class KotlinLibraryProperResolverWithAttributes<L : KotlinLibrary>(
val candidateAbiVersion = candidate.versions.abiVersion val candidateAbiVersion = candidate.versions.abiVersion
val candidateLibraryVersion = candidate.versions.libraryVersion val candidateLibraryVersion = candidate.versions.libraryVersion
if (candidateAbiVersion?.isCompatible() != true) {
val abiVersionMatch = candidateAbiVersion != null && logger.warning("skipping $candidatePath. Incompatible abi version. Expected '${KotlinAbiVersion.CURRENT}', found '${candidateAbiVersion}'. The library produced by ${candidateCompilerVersion} compiler")
knownAbiVersions != null &&
knownAbiVersions!!.contains(candidateAbiVersion)
if (!abiVersionMatch) {
logger.warning("skipping $candidatePath. The abi versions don't match. Expected '${knownAbiVersions}', found '${candidateAbiVersion}'. The library produced by ${candidateCompilerVersion} compiler")
return false return false
} }
@@ -262,11 +250,10 @@ abstract class KotlinLibraryProperResolverWithAttributes<L : KotlinLibrary>(
class SingleKlibComponentResolver( class SingleKlibComponentResolver(
klibFile: String, klibFile: String,
knownAbiVersions: List<KotlinAbiVersion>?,
logger: Logger, logger: Logger,
knownIrProviders: List<String> knownIrProviders: List<String>
) : KotlinLibraryProperResolverWithAttributes<KotlinLibrary>( ) : KotlinLibraryProperResolverWithAttributes<KotlinLibrary>(
emptyList(), listOf(klibFile), knownAbiVersions, emptyList(), emptyList(), listOf(klibFile),
null, null, false, logger, knownIrProviders null, null, false, logger, knownIrProviders
) { ) {
override fun libraryComponentBuilder(file: File, isDefault: Boolean) = createKotlinLibraryComponents(file, isDefault) override fun libraryComponentBuilder(file: File, isDefault: Boolean) = createKotlinLibraryComponents(file, isDefault)
@@ -287,7 +274,7 @@ class SingleKlibComponentResolver(
object CompilerSingleFileKlibResolveStrategy : SingleFileKlibResolveStrategy { object CompilerSingleFileKlibResolveStrategy : SingleFileKlibResolveStrategy {
override fun resolve(libraryFile: File, logger: Logger) = override fun resolve(libraryFile: File, logger: Logger) =
SingleKlibComponentResolver( SingleKlibComponentResolver(
libraryFile.absolutePath, listOf(KotlinAbiVersion.CURRENT), logger, emptyList() libraryFile.absolutePath, logger, emptyList()
).resolve(libraryFile.absolutePath) ).resolve(libraryFile.absolutePath)
} }
@@ -303,6 +290,6 @@ class CompilerSingleFileKlibResolveAllowingIrProvidersStrategy(
) : SingleFileKlibResolveStrategy { ) : SingleFileKlibResolveStrategy {
override fun resolve(libraryFile: File, logger: Logger) = override fun resolve(libraryFile: File, logger: Logger) =
SingleKlibComponentResolver( SingleKlibComponentResolver(
libraryFile.absolutePath, listOf(KotlinAbiVersion.CURRENT), logger, knownIrProviders libraryFile.absolutePath, logger, knownIrProviders
).resolve(libraryFile.absolutePath) ).resolve(libraryFile.absolutePath)
} }