Move tools to resolveSingleFileKlib
This commit is contained in:
committed by
alexander-gorshenev
parent
ccf084b1a5
commit
f3bc533073
@@ -2,6 +2,7 @@ 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
|
||||
import org.jetbrains.kotlin.util.*
|
||||
|
||||
@@ -224,4 +225,26 @@ abstract class KotlinLibraryProperResolverWithAttributes<L: KotlinLibrary>(
|
||||
|
||||
return true
|
||||
}
|
||||
}
|
||||
|
||||
class SingleKlibComponentResolver(
|
||||
klibFile: String,
|
||||
knownAbiVersions: List<KotlinAbiVersion>?,
|
||||
logger: Logger
|
||||
) : KotlinLibraryProperResolverWithAttributes<KotlinLibrary>(
|
||||
emptyList(), listOf(klibFile), knownAbiVersions, emptyList(),
|
||||
null, null, true, logger, emptyList()
|
||||
) {
|
||||
override fun libraryComponentBuilder(file: File, isDefault: Boolean) = createKotlinLibraryComponents(file, isDefault)
|
||||
}
|
||||
|
||||
fun resolveSingleFileKlib(libraryFile: File,
|
||||
logger: Logger = object : Logger {
|
||||
override fun log(message: String) {}
|
||||
override fun error(message: String) = kotlin.error("e: $message")
|
||||
override fun warning(message: String) {}
|
||||
override fun fatal(message: String) = kotlin.error("e: $message")
|
||||
}
|
||||
): KotlinLibrary {
|
||||
return SingleKlibComponentResolver(libraryFile.absolutePath, emptyList(), logger).resolve(libraryFile.absolutePath)
|
||||
}
|
||||
+2
-2
@@ -22,7 +22,7 @@ import org.jetbrains.kotlin.library.KotlinLibrary
|
||||
import org.jetbrains.kotlin.library.SerializedMetadata
|
||||
import org.jetbrains.kotlin.library.impl.BaseWriterImpl
|
||||
import org.jetbrains.kotlin.library.impl.KoltinLibraryWriterImpl
|
||||
import org.jetbrains.kotlin.library.impl.createKotlinLibrary
|
||||
import org.jetbrains.kotlin.library.resolveSingleFileKlib
|
||||
import org.jetbrains.kotlin.name.Name
|
||||
import org.jetbrains.kotlin.serialization.konan.impl.KlibResolvedModuleDescriptorsFactoryImpl
|
||||
import org.jetbrains.kotlin.storage.LockBasedStorageManager
|
||||
@@ -143,7 +143,7 @@ class NativeDistributionCommonizer(
|
||||
if (!location.isDirectory)
|
||||
handleError("library not found: $location")
|
||||
|
||||
val library = createKotlinLibrary(KFile(location.path))
|
||||
val library = resolveSingleFileKlib(KFile(location.path))
|
||||
|
||||
if (library.versions.metadataVersion == null)
|
||||
handleError("library does not have metadata version specified in manifest: $location")
|
||||
|
||||
+3
-2
@@ -32,6 +32,7 @@ import org.jetbrains.kotlin.konan.target.CompilerOutputKind.*
|
||||
import org.jetbrains.kotlin.konan.target.KonanTarget
|
||||
import org.jetbrains.kotlin.library.KotlinLibrary
|
||||
import org.jetbrains.kotlin.library.impl.createKotlinLibrary
|
||||
import org.jetbrains.kotlin.library.resolveSingleFileKlib
|
||||
import org.jetbrains.kotlin.library.uniqueName
|
||||
import org.jetbrains.kotlin.library.unresolvedDependencies
|
||||
import java.io.File
|
||||
@@ -728,7 +729,7 @@ class CacheBuilder(val project: Project, val binary: NativeBinary) {
|
||||
cacheDirectory.mkdirs()
|
||||
|
||||
val artifactsLibraries = artifactsToAddToCache
|
||||
.map { createKotlinLibrary(org.jetbrains.kotlin.konan.file.File(it.file.absolutePath)) }
|
||||
.map { resolveSingleFileKlib(org.jetbrains.kotlin.konan.file.File(it.file.absolutePath)) }
|
||||
.associateBy { it.uniqueName }
|
||||
|
||||
// Top sort artifacts.
|
||||
@@ -797,7 +798,7 @@ class CacheBuilder(val project: Project, val binary: NativeBinary) {
|
||||
val platformLib = platformLibs[platformLibName] ?: error("$platformLibName is not found in platform libs")
|
||||
if (File(rootCacheDirectory, platformLibName.cachedName).exists())
|
||||
return
|
||||
for (dependency in createKotlinLibrary(org.jetbrains.kotlin.konan.file.File(platformLib.absolutePath)).unresolvedDependencies)
|
||||
for (dependency in resolveSingleFileKlib(org.jetbrains.kotlin.konan.file.File(platformLib.absolutePath)).unresolvedDependencies)
|
||||
ensureCompilerProvidedLibPrecached(dependency.path, platformLibs, visitedLibs)
|
||||
project.logger.info("Compiling $platformLibName (${visitedLibs.size}/${platformLibs.size}) to cache")
|
||||
val args = mutableListOf(
|
||||
|
||||
Reference in New Issue
Block a user