Fix: Load properties in konan Distribution in safe way

Issue #KT-36333
This commit is contained in:
Dmitriy Dolovov
2020-02-04 14:51:38 +07:00
parent f69eef811b
commit 4dbf60eb2c
@@ -6,6 +6,7 @@
package org.jetbrains.kotlin.konan.target package org.jetbrains.kotlin.konan.target
import org.jetbrains.kotlin.konan.file.File import org.jetbrains.kotlin.konan.file.File
import org.jetbrains.kotlin.konan.properties.Properties
import org.jetbrains.kotlin.konan.properties.keepOnlyDefaultProfiles import org.jetbrains.kotlin.konan.properties.keepOnlyDefaultProfiles
import org.jetbrains.kotlin.konan.properties.loadProperties import org.jetbrains.kotlin.konan.properties.loadProperties
import org.jetbrains.kotlin.konan.util.DependencyDirectories import org.jetbrains.kotlin.konan.util.DependencyDirectories
@@ -51,17 +52,25 @@ class Distribution(
preconfiguredPropertyFiles(genericName) + userPropertyFiles(genericName) preconfiguredPropertyFiles(genericName) + userPropertyFiles(genericName)
val properties by lazy { val properties by lazy {
val loaded = File(mainPropertyFileName).loadProperties() val result = Properties()
HostManager.knownTargetTemplates.forEach {
additionalPropertyFiles(it).forEach { fun loadPropertiesSafely(source: File) {
val additional = it.loadProperties() if (source.isFile) result.putAll(source.loadProperties())
loaded.putAll(additional) }
loadPropertiesSafely(File(mainPropertyFileName))
HostManager.knownTargetTemplates.forEach { targetTemplate ->
additionalPropertyFiles(targetTemplate).forEach {
loadPropertiesSafely(it)
} }
} }
if (onlyDefaultProfiles) { if (onlyDefaultProfiles) {
loaded.keepOnlyDefaultProfiles() result.keepOnlyDefaultProfiles()
} }
loaded
result
} }
val compilerVersion by lazy { properties["compilerVersion"]?.toString() } val compilerVersion by lazy { properties["compilerVersion"]?.toString() }