From db253cb29726f91b6cb1dd2a0de02091f725f92e Mon Sep 17 00:00:00 2001 From: Ilya Matveev Date: Tue, 13 Feb 2018 15:09:22 +0700 Subject: [PATCH] [gradle-plugin] Use HostManager instead of PlatformManager Gradle plugin uses PlatformManager to initialize tasks when the compiler is not downloaded yet. In this case PlatformManager cannot read konan.properties file. This patch replaces PlatformManager with HostManager --- .../org/jetbrains/kotlin/konan/target/KonanTarget.kt | 2 +- .../org/jetbrains/kotlin/konan/target/Platform.kt | 6 +++--- .../kotlin/gradle/plugin/KonanBuildingConfig.kt | 10 +++++----- .../jetbrains/kotlin/gradle/plugin/KonanPlugin.kt | 12 ++++++------ 4 files changed, 15 insertions(+), 15 deletions(-) diff --git a/shared/src/main/kotlin/org/jetbrains/kotlin/konan/target/KonanTarget.kt b/shared/src/main/kotlin/org/jetbrains/kotlin/konan/target/KonanTarget.kt index 1ffd6d985b1..eba31ef992d 100644 --- a/shared/src/main/kotlin/org/jetbrains/kotlin/konan/target/KonanTarget.kt +++ b/shared/src/main/kotlin/org/jetbrains/kotlin/konan/target/KonanTarget.kt @@ -112,7 +112,7 @@ private class TargetManagerImpl(val userRequest: String?, val hostManager: HostM override val targetSuffix get() = target.detailedName } -open class HostManager internal constructor(protected val distribution: Distribution = Distribution()) { +open class HostManager(protected val distribution: Distribution = Distribution()) { fun targetManager(userRequest: String? = null): TargetManager = TargetManagerImpl(userRequest, this) diff --git a/shared/src/main/kotlin/org/jetbrains/kotlin/konan/target/Platform.kt b/shared/src/main/kotlin/org/jetbrains/kotlin/konan/target/Platform.kt index 98d1eb7f9b6..fe6bb48c20d 100644 --- a/shared/src/main/kotlin/org/jetbrains/kotlin/konan/target/Platform.kt +++ b/shared/src/main/kotlin/org/jetbrains/kotlin/konan/target/Platform.kt @@ -39,9 +39,9 @@ class PlatformManager(distribution: Distribution = Distribution()) : HostManager it.key to Platform(it.value) }.toMap() - fun platform(target: KonanTarget) = platforms[target]!! - val hostPlatform = platforms[host]!! + fun platform(target: KonanTarget) = platforms.getValue(target) + val hostPlatform = platforms.getValue(host) - fun loader(target: KonanTarget) = loaders[target]!! + fun loader(target: KonanTarget) = loaders.getValue(target) } diff --git a/tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KonanBuildingConfig.kt b/tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KonanBuildingConfig.kt index 7dd1c1f7e1d..ea54d552285 100644 --- a/tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KonanBuildingConfig.kt +++ b/tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KonanBuildingConfig.kt @@ -46,11 +46,11 @@ abstract class KonanBuildingConfig(private val name_: Stri internal val aggregateBuildTask: Task private val konanTargets: Iterable - get() = project.platformManager.toKonanTargets(targets).distinct() + get() = project.hostManager.toKonanTargets(targets).distinct() init { for (target in konanTargets) { - if (!project.platformManager.isEnabled(target)) { + if (!project.hostManager.isEnabled(target)) { project.logger.warn("The target is not enabled on the current host: ${target.visibleName}") continue } @@ -119,7 +119,7 @@ abstract class KonanBuildingConfig(private val name_: Stri internal operator fun get(target: KonanTarget) = targetToTask[target] fun getByTarget(target: String) = findByTarget(target) ?: throw NoSuchElementException("No such target for artifact $name: ${target}") - fun findByTarget(target: String) = this[project.platformManager.targetByName(target)] + fun findByTarget(target: String) = this[project.hostManager.targetByName(target)] fun getArtifactByTarget(target: String) = getByTarget(target).artifact fun findArtifactByTarget(target: String) = findByTarget(target)?.artifact @@ -144,9 +144,9 @@ abstract class KonanBuildingConfig(private val name_: Stri fun dependsOn(vararg dependencies: Any?) = forEach { it.dependsOn(*dependencies) } fun target(targetString: String, configureAction: T.() -> Unit) { - val target = project.platformManager.targetByName(targetString) + val target = project.hostManager.targetByName(targetString) - if (!project.platformManager.isEnabled(target)) { + if (!project.hostManager.isEnabled(target)) { project.logger.warn("Target '$targetString' of artifact '$name' is not supported on the current host") return } diff --git a/tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KonanPlugin.kt b/tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KonanPlugin.kt index 84e6d4d446b..33e6a52ee5f 100644 --- a/tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KonanPlugin.kt +++ b/tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KonanPlugin.kt @@ -23,8 +23,8 @@ import org.gradle.api.plugins.BasePlugin import org.gradle.tooling.provider.model.ToolingModelBuilderRegistry import org.jetbrains.kotlin.gradle.plugin.KonanPlugin.Companion.COMPILE_ALL_TASK_NAME import org.jetbrains.kotlin.gradle.plugin.tasks.* +import org.jetbrains.kotlin.konan.target.HostManager import org.jetbrains.kotlin.konan.target.KonanTarget -import org.jetbrains.kotlin.konan.target.PlatformManager import org.jetbrains.kotlin.konan.target.customerDistribution import java.io.File import java.util.* @@ -74,13 +74,13 @@ internal val Project.konanArtifactsContainer: NamedDomainObjectContainer> -internal val Project.platformManager: PlatformManager - get() = findProperty("platformManager") as PlatformManager? ?: - PlatformManager(customerDistribution(konanHome)) +internal val Project.hostManager: HostManager + get() = findProperty("hostManager") as HostManager? ?: + HostManager(customerDistribution(konanHome)) internal val Project.konanTargets: List - get() = platformManager.toKonanTargets(konanExtension.targets) - .filter{ platformManager.isEnabled(it) } + get() = hostManager.toKonanTargets(konanExtension.targets) + .filter{ hostManager.isEnabled(it) } .distinct() @Suppress("UNCHECKED_CAST")