Extended logger capabilities
This commit is contained in:
committed by
alexander-gorshenev
parent
97b345c88d
commit
41237c05bb
+14
-4
@@ -6,11 +6,10 @@
|
|||||||
package org.jetbrains.kotlin.backend.konan
|
package org.jetbrains.kotlin.backend.konan
|
||||||
|
|
||||||
import com.intellij.openapi.project.Project
|
import com.intellij.openapi.project.Project
|
||||||
import org.jetbrains.kotlin.backend.common.phaser.PhaseConfig
|
|
||||||
import org.jetbrains.kotlin.cli.common.CLIConfigurationKeys
|
import org.jetbrains.kotlin.cli.common.CLIConfigurationKeys
|
||||||
import org.jetbrains.kotlin.cli.common.config.kotlinSourceRoots
|
import org.jetbrains.kotlin.cli.common.config.kotlinSourceRoots
|
||||||
import org.jetbrains.kotlin.cli.common.messages.CompilerMessageSeverity
|
import org.jetbrains.kotlin.cli.common.messages.CompilerMessageSeverity
|
||||||
import org.jetbrains.kotlin.cli.common.messages.CompilerMessageSeverity.STRONG_WARNING
|
import org.jetbrains.kotlin.cli.common.messages.CompilerMessageSeverity.*
|
||||||
import org.jetbrains.kotlin.config.CommonConfigurationKeys
|
import org.jetbrains.kotlin.config.CommonConfigurationKeys
|
||||||
import org.jetbrains.kotlin.config.CompilerConfiguration
|
import org.jetbrains.kotlin.config.CompilerConfiguration
|
||||||
import org.jetbrains.kotlin.descriptors.ModuleDescriptor
|
import org.jetbrains.kotlin.descriptors.ModuleDescriptor
|
||||||
@@ -23,6 +22,8 @@ import org.jetbrains.kotlin.konan.properties.loadProperties
|
|||||||
import org.jetbrains.kotlin.konan.target.*
|
import org.jetbrains.kotlin.konan.target.*
|
||||||
import org.jetbrains.kotlin.konan.library.resolver.TopologicalLibraryOrder
|
import org.jetbrains.kotlin.konan.library.resolver.TopologicalLibraryOrder
|
||||||
import org.jetbrains.kotlin.konan.library.toUnresolvedLibraries
|
import org.jetbrains.kotlin.konan.library.toUnresolvedLibraries
|
||||||
|
import org.jetbrains.kotlin.konan.util.Logger
|
||||||
|
import kotlin.system.exitProcess
|
||||||
|
|
||||||
class KonanConfig(val project: Project, val configuration: CompilerConfiguration) {
|
class KonanConfig(val project: Project, val configuration: CompilerConfiguration) {
|
||||||
|
|
||||||
@@ -80,7 +81,16 @@ class KonanConfig(val project: Project, val configuration: CompilerConfiguration
|
|||||||
private val unresolvedLibraries = libraryNames.toUnresolvedLibraries
|
private val unresolvedLibraries = libraryNames.toUnresolvedLibraries
|
||||||
|
|
||||||
private val repositories = configuration.getList(KonanConfigKeys.REPOSITORIES)
|
private val repositories = configuration.getList(KonanConfigKeys.REPOSITORIES)
|
||||||
private fun resolverLogger(msg: String) = configuration.report(STRONG_WARNING, msg)
|
private val resolverLogger =
|
||||||
|
object : Logger {
|
||||||
|
override fun warning(message: String)= configuration.report(STRONG_WARNING, message)
|
||||||
|
override fun error(message: String) = configuration.report(ERROR, message)
|
||||||
|
override fun log(message: String) = configuration.report(LOGGING, message)
|
||||||
|
override fun fatal(message: String): Nothing {
|
||||||
|
configuration.report(ERROR, message)
|
||||||
|
exitProcess(1)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private val compatibleCompilerVersions: List<KonanVersion> =
|
private val compatibleCompilerVersions: List<KonanVersion> =
|
||||||
configuration.getList(KonanConfigKeys.COMPATIBLE_COMPILER_VERSIONS).map { it.parseKonanVersion() }
|
configuration.getList(KonanConfigKeys.COMPATIBLE_COMPILER_VERSIONS).map { it.parseKonanVersion() }
|
||||||
@@ -91,7 +101,7 @@ class KonanConfig(val project: Project, val configuration: CompilerConfiguration
|
|||||||
target,
|
target,
|
||||||
distribution,
|
distribution,
|
||||||
compatibleCompilerVersions + KonanVersion.CURRENT,
|
compatibleCompilerVersions + KonanVersion.CURRENT,
|
||||||
::resolverLogger
|
resolverLogger
|
||||||
).libraryResolver()
|
).libraryResolver()
|
||||||
|
|
||||||
internal val resolvedLibraries by lazy {
|
internal val resolvedLibraries by lazy {
|
||||||
|
|||||||
@@ -2,7 +2,6 @@ package org.jetbrains.kotlin.konan.library
|
|||||||
|
|
||||||
import org.jetbrains.kotlin.konan.library.resolver.KonanLibraryResolver
|
import org.jetbrains.kotlin.konan.library.resolver.KonanLibraryResolver
|
||||||
import org.jetbrains.kotlin.konan.library.resolver.impl.KonanLibraryResolverImpl
|
import org.jetbrains.kotlin.konan.library.resolver.impl.KonanLibraryResolverImpl
|
||||||
import org.jetbrains.kotlin.konan.KonanAbiVersion
|
|
||||||
|
|
||||||
fun SearchPathResolverWithTarget.libraryResolver(): KonanLibraryResolver =
|
fun SearchPathResolverWithTarget.libraryResolver(): KonanLibraryResolver =
|
||||||
KonanLibraryResolverImpl(this)
|
KonanLibraryResolverImpl(this)
|
||||||
|
|||||||
+1
-1
@@ -66,7 +66,7 @@ internal class KonanLibraryResolverImpl(
|
|||||||
}
|
}
|
||||||
|
|
||||||
private fun warnOnLibraryDuplicates(duplicatedPaths: Iterable<String>) {
|
private fun warnOnLibraryDuplicates(duplicatedPaths: Iterable<String>) {
|
||||||
duplicatedPaths.forEach { logger("library included more than once: $it") }
|
duplicatedPaths.forEach { logger.warning("library included more than once: $it") }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -21,6 +21,7 @@ import org.jetbrains.kotlin.konan.util.DependencyProcessor
|
|||||||
import org.jetbrains.kotlin.konan.KonanAbiVersion
|
import org.jetbrains.kotlin.konan.KonanAbiVersion
|
||||||
import org.jetbrains.kotlin.konan.library.unpackZippedKonanLibraryTo
|
import org.jetbrains.kotlin.konan.library.unpackZippedKonanLibraryTo
|
||||||
import org.jetbrains.kotlin.konan.utils.KonanFactories.DefaultDeserializedDescriptorFactory
|
import org.jetbrains.kotlin.konan.utils.KonanFactories.DefaultDeserializedDescriptorFactory
|
||||||
|
import org.jetbrains.kotlin.konan.util.Logger
|
||||||
import org.jetbrains.kotlin.metadata.konan.KonanProtoBuf
|
import org.jetbrains.kotlin.metadata.konan.KonanProtoBuf
|
||||||
import org.jetbrains.kotlin.serialization.konan.parseModuleHeader
|
import org.jetbrains.kotlin.serialization.konan.parseModuleHeader
|
||||||
import org.jetbrains.kotlin.storage.LockBasedStorageManager
|
import org.jetbrains.kotlin.storage.LockBasedStorageManager
|
||||||
@@ -72,9 +73,15 @@ fun warn(text: String) {
|
|||||||
println("warning: $text")
|
println("warning: $text")
|
||||||
}
|
}
|
||||||
|
|
||||||
fun error(text: String) {
|
fun error(text: String): Nothing {
|
||||||
println("error: $text")
|
kotlin.error("error: $text")
|
||||||
exitProcess(1)
|
}
|
||||||
|
|
||||||
|
object KlibToolLogger : Logger {
|
||||||
|
override fun warning(message: String) = org.jetbrains.kotlin.cli.klib.warn(message)
|
||||||
|
override fun error(message: String) = org.jetbrains.kotlin.cli.klib.warn(message)
|
||||||
|
override fun fatal(message: String) = org.jetbrains.kotlin.cli.klib.error(message)
|
||||||
|
override fun log(message: String) = println(message)
|
||||||
}
|
}
|
||||||
|
|
||||||
val defaultRepository = File(DependencyProcessor.localKonanDir.resolve("klib").absolutePath)
|
val defaultRepository = File(DependencyProcessor.localKonanDir.resolve("klib").absolutePath)
|
||||||
@@ -153,7 +160,8 @@ class Library(val name: String, val requestedRepository: String?, val target: St
|
|||||||
val resolver = resolverByName(
|
val resolver = resolverByName(
|
||||||
emptyList(),
|
emptyList(),
|
||||||
distributionKlib = Distribution().klib,
|
distributionKlib = Distribution().klib,
|
||||||
skipCurrentDir = true)
|
skipCurrentDir = true,
|
||||||
|
logger = KlibToolLogger)
|
||||||
resolver.defaultLinks(false, true)
|
resolver.defaultLinks(false, true)
|
||||||
.mapTo(defaultModules) {
|
.mapTo(defaultModules) {
|
||||||
DefaultDeserializedDescriptorFactory.createDescriptor(
|
DefaultDeserializedDescriptorFactory.createDescriptor(
|
||||||
@@ -173,12 +181,12 @@ val currentLanguageVersion = LanguageVersion.LATEST_STABLE
|
|||||||
val currentApiVersion = ApiVersion.LATEST_STABLE
|
val currentApiVersion = ApiVersion.LATEST_STABLE
|
||||||
|
|
||||||
fun libraryInRepo(repository: File, name: String) =
|
fun libraryInRepo(repository: File, name: String) =
|
||||||
resolverByName(listOf(repository.absolutePath), skipCurrentDir = true).resolve(name)
|
resolverByName(listOf(repository.absolutePath), skipCurrentDir = true, logger = KlibToolLogger).resolve(name)
|
||||||
|
|
||||||
fun libraryInCurrentDir(name: String) = resolverByName(emptyList()).resolve(name)
|
fun libraryInCurrentDir(name: String) = resolverByName(emptyList(), logger = KlibToolLogger).resolve(name)
|
||||||
|
|
||||||
fun libraryInRepoOrCurrentDir(repository: File, name: String) =
|
fun libraryInRepoOrCurrentDir(repository: File, name: String) =
|
||||||
resolverByName(listOf(repository.absolutePath)).resolve(name)
|
resolverByName(listOf(repository.absolutePath), logger = KlibToolLogger).resolve(name)
|
||||||
|
|
||||||
fun main(args: Array<String>) {
|
fun main(args: Array<String>) {
|
||||||
val command = Command(args)
|
val command = Command(args)
|
||||||
|
|||||||
Reference in New Issue
Block a user