From b19ad2505cfca62bfc1d572e4b0c6e74014df896 Mon Sep 17 00:00:00 2001 From: Dmitry Savvinov Date: Tue, 16 Jan 2024 14:51:08 +0100 Subject: [PATCH] [native] Remove code support for experimental KonanTargets ZEPHYR was the first and the last experimental KonanTarget. As ZEPHYR is now entirely removed from the codebase, the respective code can be dropped ^KT-64517 --- .../internal/PlatformLibrariesGenerator.kt | 5 +- .../blackbox/support/NativeTestSupport.kt | 2 +- .../support/settings/SettingsContainers.kt | 2 +- .../kotlin/konan/target/Distribution.kt | 14 ----- .../kotlin/konan/target/HostManager.kt | 54 ++----------------- .../jetbrains/kotlin/konan/target/Platform.kt | 18 +++++-- .../kotlin/konan/target/SubTargetProvider.kt | 14 ----- 7 files changed, 22 insertions(+), 87 deletions(-) delete mode 100644 native/utils/src/org/jetbrains/kotlin/konan/target/SubTargetProvider.kt diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/internal/PlatformLibrariesGenerator.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/internal/PlatformLibrariesGenerator.kt index 4376e945ff0..8c5eb7841a6 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/internal/PlatformLibrariesGenerator.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/internal/PlatformLibrariesGenerator.kt @@ -11,7 +11,6 @@ import org.jetbrains.kotlin.compilerRunner.getKonanCacheKind import org.jetbrains.kotlin.compilerRunner.konanDataDir import org.jetbrains.kotlin.compilerRunner.konanHome import org.jetbrains.kotlin.gradle.dsl.NativeCacheKind -import org.jetbrains.kotlin.gradle.plugin.PropertiesProvider import org.jetbrains.kotlin.gradle.targets.native.KonanPropertiesBuildService import org.jetbrains.kotlin.gradle.tasks.CacheBuilder import org.jetbrains.kotlin.gradle.tasks.addArg @@ -127,7 +126,7 @@ internal class PlatformLibrariesGenerator(val project: Project, val konanTarget: } fun generatePlatformLibsIfNeeded(): Unit = with(project) { - if (!HostManager(distribution).isEnabled(konanTarget)) { + if (!HostManager().isEnabled(konanTarget)) { // We cannot generate libs on a machine that doesn't support the requested target. return } @@ -221,4 +220,4 @@ internal class PlatformLibrariesGenerator(val project: Project, val konanTarget: companion object { private const val GENERATED_LIBS_PROPERTY_NAME = "org.jetbrains.kotlin.native.platform.libs.info" } -} \ No newline at end of file +} diff --git a/native/native.tests/tests/org/jetbrains/kotlin/konan/test/blackbox/support/NativeTestSupport.kt b/native/native.tests/tests/org/jetbrains/kotlin/konan/test/blackbox/support/NativeTestSupport.kt index 56ed12ae9bc..37f13a58165 100644 --- a/native/native.tests/tests/org/jetbrains/kotlin/konan/test/blackbox/support/NativeTestSupport.kt +++ b/native/native.tests/tests/org/jetbrains/kotlin/konan/test/blackbox/support/NativeTestSupport.kt @@ -177,7 +177,7 @@ internal object NativeTestSupport { val nativeHome = getOrCreateTestProcessSettings().get() val distribution = Distribution(nativeHome.dir.path) - val hostManager = HostManager(distribution, experimental = false) + val hostManager = HostManager() val nativeTargets = computeNativeTargets(enforcedProperties, hostManager) val cacheMode = computeCacheMode(enforcedProperties, distribution, nativeTargets, optimizationMode) diff --git a/native/native.tests/tests/org/jetbrains/kotlin/konan/test/blackbox/support/settings/SettingsContainers.kt b/native/native.tests/tests/org/jetbrains/kotlin/konan/test/blackbox/support/settings/SettingsContainers.kt index 5bafed9b3d4..8b2e6fb764d 100644 --- a/native/native.tests/tests/org/jetbrains/kotlin/konan/test/blackbox/support/settings/SettingsContainers.kt +++ b/native/native.tests/tests/org/jetbrains/kotlin/konan/test/blackbox/support/settings/SettingsContainers.kt @@ -71,5 +71,5 @@ internal val Settings.configurables: Configurables // Development variant of LLVM is used to have utilities like FileCheck propertyOverrides = mapOf("llvmHome.${HostManager.hostName}" to "\$llvm.${HostManager.hostName}.dev") ) - return PlatformManager(distribution, true).platform(get().testTarget).configurables + return PlatformManager(distribution).platform(get().testTarget).configurables } diff --git a/native/utils/src/org/jetbrains/kotlin/konan/target/Distribution.kt b/native/utils/src/org/jetbrains/kotlin/konan/target/Distribution.kt index bac674b1b73..83f9656fbd8 100644 --- a/native/utils/src/org/jetbrains/kotlin/konan/target/Distribution.kt +++ b/native/utils/src/org/jetbrains/kotlin/konan/target/Distribution.kt @@ -31,9 +31,6 @@ class Distribution private constructor(private val serialized: Serialized) : jav val konanSubdir = "$konanHome/konan" val mainPropertyFileName = "$konanSubdir/konan.properties" - val experimentalEnabled by lazy { - File("$konanSubdir/experimentalTargetsEnabled").exists - } private fun propertyFilesFromConfigDir(configDir: String, genericName: String): List { val directory = File(configDir, "platforms/$genericName") @@ -65,12 +62,6 @@ class Distribution private constructor(private val serialized: Serialized) : jav loadPropertiesSafely(File(mainPropertyFileName)) - HostManager.knownTargetTemplates.forEach { targetTemplate -> - additionalPropertyFiles(targetTemplate).forEach { - loadPropertiesSafely(it) - } - } - if (onlyDefaultProfiles) { result.keepOnlyDefaultProfiles() } @@ -109,11 +100,6 @@ class Distribution private constructor(private val serialized: Serialized) : jav .getDependenciesRoot(konanDataDir) .absolutePath - val subTargetProvider = object: SubTargetProvider { - override fun availableSubTarget(genericName: String) = - additionalPropertyFiles(genericName).map { it.name } - } - companion object { /** * Try to guess compiler version using [konanHome]. diff --git a/native/utils/src/org/jetbrains/kotlin/konan/target/HostManager.kt b/native/utils/src/org/jetbrains/kotlin/konan/target/HostManager.kt index 0a55b6703e8..3bcc3772820 100644 --- a/native/utils/src/org/jetbrains/kotlin/konan/target/HostManager.kt +++ b/native/utils/src/org/jetbrains/kotlin/konan/target/HostManager.kt @@ -8,23 +8,10 @@ package org.jetbrains.kotlin.konan.target import org.jetbrains.kotlin.konan.target.KonanTarget.* import java.lang.Exception -// TODO: Consider redesigning experimental targets support (e.g. by getting rid of such separation at all). -open class HostManager( - subTargetProvider: SubTargetProvider = SubTargetProvider.NoSubTargets, - private val experimental: Boolean = false -) { - - constructor( - distribution: Distribution, - experimental: Boolean = false - ) : this(distribution.subTargetProvider, experimental || distribution.experimentalEnabled) - +open class HostManager() { fun targetManager(userRequest: String? = null): TargetManager = TargetManagerImpl(userRequest, this) - private val zephyrSubtargets = subTargetProvider.availableSubTarget("zephyr").map { ZEPHYR(it) } - private val configurableSubtargets = zephyrSubtargets - - val targetValues: List by lazy { KonanTarget.predefinedTargets.values + configurableSubtargets } + val targetValues: List by lazy { KonanTarget.predefinedTargets.values.toList() } val targets = targetValues.associateBy { it.visibleName } @@ -50,27 +37,21 @@ open class HostManager( LINUX_X64, LINUX_ARM32_HFP, LINUX_ARM64, - LINUX_MIPS32, - LINUX_MIPSEL32, - MINGW_X86, MINGW_X64, ANDROID_X86, ANDROID_X64, ANDROID_ARM32, ANDROID_ARM64, - WASM32 ) private val appleTargets = setOf( MACOS_X64, MACOS_ARM64, - IOS_ARM32, IOS_ARM64, IOS_X64, IOS_SIMULATOR_ARM64, WATCHOS_ARM32, WATCHOS_ARM64, - WATCHOS_X86, WATCHOS_X64, WATCHOS_SIMULATOR_ARM64, WATCHOS_DEVICE_ARM64, @@ -79,40 +60,15 @@ open class HostManager( TVOS_SIMULATOR_ARM64, ) - private val enabledRegularByHost: Map> = mapOf( + val enabledByHost: Map> = mapOf( LINUX_X64 to commonTargets, MINGW_X64 to commonTargets, MACOS_X64 to commonTargets + appleTargets, MACOS_ARM64 to commonTargets + appleTargets ) - private val enabledExperimentalByHost: Map> = mapOf( - LINUX_X64 to zephyrSubtargets.toSet(), - MACOS_X64 to zephyrSubtargets.toSet(), - MINGW_X64 to zephyrSubtargets.toSet(), - MACOS_ARM64 to emptySet() - ) - - val enabledByHost: Map> by lazy { - val result = enabledRegularByHost.toMutableMap() - if (experimental) { - enabledExperimentalByHost.forEach { (k, v) -> - result.merge(k, v) { old, new -> old + new } - } - } - result.toMap() - } - - private val enabledRegular: List by lazy { - enabledRegularByHost[host]?.toList() ?: throw TargetSupportException("Unknown host platform: $host") - } - - private val enabledExperimental: List by lazy { - enabledExperimentalByHost[host]?.toList() ?: throw TargetSupportException("Unknown host platform: $host") - } - val enabled: List - get() = if (experimental) enabledRegular + enabledExperimental else enabledRegular + get() = enabledByHost[host]?.toList() ?: throw TargetSupportException("Unknown host platform: $host") fun isEnabled(target: KonanTarget) = enabled.contains(target) @@ -207,8 +163,6 @@ open class HostManager( val hostName: String get() = host.name - val knownTargetTemplates = listOf("zephyr") - private val targetAliasResolutions = mapOf( "linux" to "linux_x64", "macbook" to "macos_x64", diff --git a/native/utils/src/org/jetbrains/kotlin/konan/target/Platform.kt b/native/utils/src/org/jetbrains/kotlin/konan/target/Platform.kt index 96852be67d1..682215e345f 100644 --- a/native/utils/src/org/jetbrains/kotlin/konan/target/Platform.kt +++ b/native/utils/src/org/jetbrains/kotlin/konan/target/Platform.kt @@ -32,10 +32,20 @@ class Platform(val configurables: Configurables) : Configurables by configurable } class PlatformManager private constructor(private val serialized: Serialized) : - HostManager(serialized.distribution, serialized.experimental), java.io.Serializable { + HostManager(), java.io.Serializable { - constructor(konanHome: String, experimental: Boolean = false, konanDataDir: String? = null) : this(Distribution(konanHome, konanDataDir = konanDataDir), experimental) - constructor(distribution: Distribution, experimental: Boolean = false) : this(Serialized(distribution, experimental)) + // TODO(KT-66500): remove after the bootstrap + @Suppress("UNUSED_PARAMETER") + @Deprecated("Kept temporary, should be removed after the bootstrap") + constructor(konanHome: String, experimental: Boolean = false, konanDataDir: String? = null) : this(Distribution(konanHome, konanDataDir = konanDataDir)) + + // TODO(KT-66500): remove after the bootstrap + @Suppress("UNUSED_PARAMETER") + @Deprecated("Kept temporary, should be removed after the bootstrap") + constructor(distribution: Distribution, experimental: Boolean = false) : this(Serialized(distribution)) + + constructor(konanHome: String, konanDataDir: String? = null) : this(Distribution(konanHome, konanDataDir = konanDataDir)) + constructor(distribution: Distribution) : this(Serialized(distribution)) private val distribution by serialized::distribution @@ -56,9 +66,9 @@ class PlatformManager private constructor(private val serialized: Serialized) : private data class Serialized( val distribution: Distribution, - val experimental: Boolean, ) : java.io.Serializable { companion object { + // TODO(discuss on review): bump UID? Do something else? How this Serialized is used? private const val serialVersionUID: Long = 0L } diff --git a/native/utils/src/org/jetbrains/kotlin/konan/target/SubTargetProvider.kt b/native/utils/src/org/jetbrains/kotlin/konan/target/SubTargetProvider.kt deleted file mode 100644 index 62a1df4af9a..00000000000 --- a/native/utils/src/org/jetbrains/kotlin/konan/target/SubTargetProvider.kt +++ /dev/null @@ -1,14 +0,0 @@ -/* - * Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors. - * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. - */ - -package org.jetbrains.kotlin.konan.target - -interface SubTargetProvider { - fun availableSubTarget(genericName: String): List - - object NoSubTargets : SubTargetProvider { - override fun availableSubTarget(genericName: String): List = emptyList() - } -} \ No newline at end of file