From cfb8e7582955680fa87f1d46efcdd5f155241377 Mon Sep 17 00:00:00 2001 From: Ilya Matveev Date: Mon, 27 May 2019 12:36:36 +0300 Subject: [PATCH] Revert "Use kotlin-native-shared in the Gradle plugin" This reverts commit c9ed64830314a6e07a906f0319da9e9a27648461. --- build.gradle.kts | 1 - buildSrc/src/main/kotlin/dependencies.kt | 4 --- .../kotlin-gradle-plugin-api/build.gradle.kts | 1 + .../build.gradle.kts | 2 +- .../kotlin-gradle-plugin/build.gradle.kts | 5 +--- .../compilerRunner/KotlinNativeToolRunner.kt | 24 ++++++++++----- .../plugin/mpp/KotlinMultiplatformPlugin.kt | 3 +- .../targets/native/KotlinNativeTarget.kt | 2 +- .../native/KotlinNativeTargetConfigurator.kt | 8 ++--- .../native/KotlinNativeTargetPreset.kt | 30 +++++++++++-------- .../native/NativeCompilerDownloader.kt | 6 ++-- .../native/cocoapods/KotlinCocoapodsPlugin.kt | 3 +- 12 files changed, 48 insertions(+), 41 deletions(-) diff --git a/build.gradle.kts b/build.gradle.kts index 680a525e8c5..6e0b506a641 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -185,7 +185,6 @@ extra["versions.org.springframework"] = "4.2.0.RELEASE" extra["versions.jflex"] = "1.7.0" extra["versions.markdown"] = "0.1.25" extra["versions.trove4j"] = "1.0.20181211" -extra["versions.kotlin-native-shared"] = "1.0-dev-96" // NOTE: please, also change KTOR_NAME in pathUtil.kt and all versions in corresponding jar names in daemon tests. extra["versions.ktor-network"] = "1.0.1" diff --git a/buildSrc/src/main/kotlin/dependencies.kt b/buildSrc/src/main/kotlin/dependencies.kt index 139733abc1d..50ee3688300 100644 --- a/buildSrc/src/main/kotlin/dependencies.kt +++ b/buildSrc/src/main/kotlin/dependencies.kt @@ -99,11 +99,7 @@ val Project.protobufRepo: String fun Project.protobufLite(): String = "org.jetbrains.kotlin:protobuf-lite:$protobufVersion" fun Project.protobufFull(): String = "org.jetbrains.kotlin:protobuf-relocated:$protobufVersion" -val Project.kotlinNativeRepo: String - get() = "https://jetbrains.bintray.com/kotlin-native-dependencies" - val Project.kotlinNativeVersion: String get() = property("versions.kotlin-native") as String -val Project.kotlinNativeSharedVersion: String get() = property("versions.kotlin-native-shared") as String fun File.matchMaybeVersionedArtifact(baseName: String) = name.matches(baseName.toMaybeVersionedJarRegex()) diff --git a/libraries/tools/kotlin-gradle-plugin-api/build.gradle.kts b/libraries/tools/kotlin-gradle-plugin-api/build.gradle.kts index c6bba6b061b..98021054c4b 100644 --- a/libraries/tools/kotlin-gradle-plugin-api/build.gradle.kts +++ b/libraries/tools/kotlin-gradle-plugin-api/build.gradle.kts @@ -13,6 +13,7 @@ standardPublicJars() dependencies { compile(kotlinStdlib()) + compile(project(":kotlin-native:kotlin-native-utils")) compileOnly(gradleApi()) compileOnly("com.android.tools.build:gradle:0.4.2") diff --git a/libraries/tools/kotlin-gradle-plugin-dsl-codegen/build.gradle.kts b/libraries/tools/kotlin-gradle-plugin-dsl-codegen/build.gradle.kts index 9460825d01a..a28f4d93551 100644 --- a/libraries/tools/kotlin-gradle-plugin-dsl-codegen/build.gradle.kts +++ b/libraries/tools/kotlin-gradle-plugin-dsl-codegen/build.gradle.kts @@ -11,7 +11,7 @@ repositories { dependencies { compile(gradleApi()) compile(project(":kotlin-gradle-plugin-api")) - compile(commonDep("org.jetbrains.kotlin:kotlin-native-shared")) { isTransitive = false } + compile(project(":kotlin-native:kotlin-native-utils")) } val generateMppTargetContainerWithPresets by generator( diff --git a/libraries/tools/kotlin-gradle-plugin/build.gradle.kts b/libraries/tools/kotlin-gradle-plugin/build.gradle.kts index f6a422075b3..52b07c58b1a 100644 --- a/libraries/tools/kotlin-gradle-plugin/build.gradle.kts +++ b/libraries/tools/kotlin-gradle-plugin/build.gradle.kts @@ -38,6 +38,7 @@ dependencies { compileOnly(project(":daemon-common")) compile(kotlinStdlib()) + compile(project(":kotlin-native:kotlin-native-utils")) compileOnly(project(":kotlin-reflect-api")) compileOnly(project(":kotlin-android-extensions")) compileOnly(project(":kotlin-build-common")) @@ -69,10 +70,6 @@ dependencies { jarContents(compileOnly(intellijDep()) { includeJars("asm-all", "serviceMessages", "gson", rootProject = rootProject) }) - - jarContents(compileOnly(commonDep("org.jetbrains.kotlin:kotlin-native-shared")) { - isTransitive = false - }) // com.android.tools.build:gradle has ~50 unneeded transitive dependencies compileOnly("com.android.tools.build:gradle:3.0.0") { isTransitive = false } diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/compilerRunner/KotlinNativeToolRunner.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/compilerRunner/KotlinNativeToolRunner.kt index 00e932dc9fc..7cd6c5b22e9 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/compilerRunner/KotlinNativeToolRunner.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/compilerRunner/KotlinNativeToolRunner.kt @@ -20,11 +20,11 @@ import org.gradle.api.Named import org.gradle.api.Project import org.gradle.api.file.FileCollection import org.jetbrains.kotlin.cli.common.messages.MessageRenderer -import org.jetbrains.kotlin.gradle.plugin.mpp.hostManager import org.jetbrains.kotlin.gradle.utils.NativeCompilerDownloader import org.jetbrains.kotlin.konan.KonanVersion -import org.jetbrains.kotlin.konan.target.* -import org.jetbrains.kotlin.konan.util.DependencyProcessor +import org.jetbrains.kotlin.konan.target.HostManager +import org.jetbrains.kotlin.konan.target.KonanTarget +import org.jetbrains.kotlin.konan.util.DependencyDirectories import java.util.* /** Copied from Kotlin/Native repository. */ @@ -159,10 +159,20 @@ internal abstract class KonanCliRunner( internal class KonanInteropRunner(project: Project, additionalJvmArgs: List = emptyList()) : KonanCliRunner("cinterop", "Kotlin/Native cinterop tool", project, additionalJvmArgs) { init { - if (HostManager.hostIsMingw) { - val distribution = Distribution(konanHomeOverride = project.konanHome) - val llvmHome = PlatformManager(distribution).hostPlatform.absoluteLlvmHome - environment.put("PATH", "$llvmHome/bin;${System.getenv("PATH")}") + if (HostManager.host == KonanTarget.MINGW_X64) { + // TODO: Read it from KonanDistribution when it is accessible. + val konanProperties = Properties().apply { + project.file("${project.konanHome}/konan/konan.properties").inputStream().use(::load) + } + val toolchainDir = konanProperties.getProperty("targetToolchain.mingw_x64") + if (toolchainDir != null) { + environment.put( + "PATH", + DependencyDirectories.defaultDependenciesRoot + .resolve("$toolchainDir/bin") + .absolutePath + ";${System.getenv("PATH")}" + ) + } } } } diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/KotlinMultiplatformPlugin.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/KotlinMultiplatformPlugin.kt index 028522bf044..b139a42fa47 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/KotlinMultiplatformPlugin.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/KotlinMultiplatformPlugin.kt @@ -31,6 +31,7 @@ import org.jetbrains.kotlin.gradle.scripting.internal.ScriptingGradleSubplugin import org.jetbrains.kotlin.gradle.utils.SingleWarningPerBuild import org.jetbrains.kotlin.gradle.utils.checkGradleCompatibility import org.jetbrains.kotlin.gradle.utils.lowerCamelCaseName +import org.jetbrains.kotlin.konan.target.HostManager import org.jetbrains.kotlin.konan.target.presetName class KotlinMultiplatformPlugin( @@ -137,7 +138,7 @@ class KotlinMultiplatformPlugin( add(KotlinJsTargetPreset(project, kotlinPluginVersion)) add(KotlinAndroidTargetPreset(project, kotlinPluginVersion)) add(KotlinJvmWithJavaTargetPreset(project, kotlinPluginVersion)) - project.hostManager.targets.forEach { _, target -> + HostManager().targets.forEach { _, target -> add(KotlinNativeTargetPreset(target.presetName, project, target, kotlinPluginVersion)) } } diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/native/KotlinNativeTarget.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/native/KotlinNativeTarget.kt index a7dddf22842..179531d357f 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/native/KotlinNativeTarget.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/native/KotlinNativeTarget.kt @@ -44,7 +44,7 @@ class KotlinNativeTarget( get() = disambiguateName("binaries") override val publishable: Boolean - get() = enabledOnCurrentHost + get() = konanTarget.enabledOnCurrentHost // User-visible constants val DEBUG = NativeBuildType.DEBUG diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/native/KotlinNativeTargetConfigurator.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/native/KotlinNativeTargetConfigurator.kt index c37d82bf280..e9282a3520e 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/native/KotlinNativeTargetConfigurator.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/native/KotlinNativeTargetConfigurator.kt @@ -58,7 +58,7 @@ open class KotlinNativeTargetConfigurator( producingTask: Task, copy: Boolean = false ) { - if (!compilation.target.enabledOnCurrentHost) { + if (!compilation.target.konanTarget.enabledOnCurrentHost) { return } @@ -117,7 +117,7 @@ open class KotlinNativeTargetConfigurator( this.binary = binary group = BasePlugin.BUILD_GROUP description = "Links ${binary.outputKind.description} '${binary.name}' for a target '${target.name}'." - enabled = target.enabledOnCurrentHost + enabled = target.konanTarget.enabledOnCurrentHost destinationDir = binary.outputDirectory addCompilerPlugins() @@ -153,7 +153,7 @@ open class KotlinNativeTargetConfigurator( group = BasePlugin.BUILD_GROUP description = "Compiles a klibrary from the '${compilation.name}' " + "compilation for target '${compilation.platformType.name}'." - enabled = compilation.target.enabledOnCurrentHost + enabled = compilation.target.konanTarget.enabledOnCurrentHost destinationDir = klibOutputDirectory(compilation) addCompilerPlugins() @@ -184,7 +184,7 @@ open class KotlinNativeTargetConfigurator( description = "Generates Kotlin/Native interop library '${interop.name}' " + "for compilation '${compilation.name}'" + "of target '${konanTarget.name}'." - enabled = compilation.target.enabledOnCurrentHost + enabled = compilation.target.konanTarget.enabledOnCurrentHost val interopOutput = project.files(outputFileProvider).builtBy(this) with(compilation) { diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/native/KotlinNativeTargetPreset.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/native/KotlinNativeTargetPreset.kt index 88dab6e2f22..f1dd4715899 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/native/KotlinNativeTargetPreset.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/native/KotlinNativeTargetPreset.kt @@ -8,16 +8,24 @@ package org.jetbrains.kotlin.gradle.plugin.mpp import org.gradle.api.Project import org.gradle.api.artifacts.Dependency +import org.gradle.api.internal.file.FileResolver +import org.gradle.api.plugins.JavaPlugin +import org.gradle.internal.reflect.Instantiator import org.jetbrains.kotlin.compilerRunner.KotlinNativeProjectProperty import org.jetbrains.kotlin.compilerRunner.hasProperty import org.jetbrains.kotlin.compilerRunner.konanHome -import org.jetbrains.kotlin.gradle.plugin.KotlinCompilation -import org.jetbrains.kotlin.gradle.plugin.KotlinNativeTargetConfigurator -import org.jetbrains.kotlin.gradle.plugin.KotlinTargetPreset +import org.jetbrains.kotlin.gradle.dsl.KotlinCompile +import org.jetbrains.kotlin.gradle.dsl.KotlinJvmOptions +import org.jetbrains.kotlin.gradle.dsl.kotlinExtension +import org.jetbrains.kotlin.gradle.plugin.* +import org.jetbrains.kotlin.gradle.plugin.sources.applyLanguageSettingsToKotlinTask +import org.jetbrains.kotlin.gradle.tasks.KotlinTasksProvider import org.jetbrains.kotlin.gradle.utils.NativeCompilerDownloader -import org.jetbrains.kotlin.konan.target.Distribution +import org.jetbrains.kotlin.konan.KonanVersion import org.jetbrains.kotlin.konan.target.HostManager import org.jetbrains.kotlin.konan.target.KonanTarget +import java.io.File +import java.util.* class KotlinNativeTargetPreset( private val name: String, @@ -85,9 +93,9 @@ class KotlinNativeTargetPreset( } } - if (!result.enabledOnCurrentHost) { - with(project.hostManager) { - val supportedHosts = this.enabledByHost.filterValues { konanTarget in it }.keys + if (!konanTarget.enabledOnCurrentHost) { + with(HostManager()) { + val supportedHosts = enabledTargetsByHost.filterValues { konanTarget in it }.keys val supportedHostsString = if (supportedHosts.size == 1) "a ${supportedHosts.single()} host" else @@ -107,15 +115,11 @@ class KotlinNativeTargetPreset( } } -internal val Project.hostManager: HostManager - get() = HostManager(Distribution(konanHomeOverride = konanHome)) - internal val KonanTarget.isCurrentHost: Boolean get() = this == HostManager.host -internal val KotlinNativeTarget.enabledOnCurrentHost - get() = project.hostManager.isEnabled(konanTarget) +internal val KonanTarget.enabledOnCurrentHost + get() = HostManager().isEnabled(this) internal val KotlinNativeCompilation.isMainCompilation: Boolean get() = name == KotlinCompilation.MAIN_COMPILATION_NAME - diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/native/NativeCompilerDownloader.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/native/NativeCompilerDownloader.kt index a1bc4d5b791..9652cba26ac 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/native/NativeCompilerDownloader.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/native/NativeCompilerDownloader.kt @@ -17,7 +17,7 @@ import org.jetbrains.kotlin.gradle.logging.kotlinInfo import org.jetbrains.kotlin.konan.KonanVersion import org.jetbrains.kotlin.konan.MetaVersion import org.jetbrains.kotlin.konan.target.HostManager -import org.jetbrains.kotlin.konan.util.DependencyProcessor +import org.jetbrains.kotlin.konan.util.DependencyDirectories import java.io.File class NativeCompilerDownloader( @@ -34,7 +34,7 @@ class NativeCompilerDownloader( } val compilerDirectory: File - get() = DependencyProcessor.localKonanDir.resolve(dependencyNameWithVersion) + get() = DependencyDirectories.localKonanDir.resolve(dependencyNameWithVersion) private val logger: Logger get() = project.logger @@ -119,7 +119,7 @@ class NativeCompilerDownloader( logger.lifecycleWithDuration("Unpack Kotlin/Native compiler to $compilerDirectory finished,") { project.copy { it.from(archiveFileTree(archive)) - it.into(DependencyProcessor.localKonanDir) + it.into(DependencyDirectories.localKonanDir) } } diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/native/cocoapods/KotlinCocoapodsPlugin.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/native/cocoapods/KotlinCocoapodsPlugin.kt index 5220ebe2e6a..d2cb59bc452 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/native/cocoapods/KotlinCocoapodsPlugin.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/native/cocoapods/KotlinCocoapodsPlugin.kt @@ -15,7 +15,6 @@ import org.jetbrains.kotlin.gradle.dsl.multiplatformExtension import org.jetbrains.kotlin.gradle.plugin.KotlinCompilation import org.jetbrains.kotlin.gradle.plugin.addExtension import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinNativeTarget -import org.jetbrains.kotlin.gradle.plugin.mpp.hostManager import org.jetbrains.kotlin.gradle.plugin.whenEvaluated import org.jetbrains.kotlin.gradle.tasks.* import org.jetbrains.kotlin.gradle.utils.asValidTaskName @@ -147,7 +146,7 @@ open class KotlinCocoapodsPlugin: Plugin { } } else { // A requested target doesn't require building a fat framework. - createSyncForRegularFramework(project, kotlinExtension, requestedBuildType, project.hostManager.targetByName(requestedTargetName)) + createSyncForRegularFramework(project, kotlinExtension, requestedBuildType, HostManager().targetByName(requestedTargetName)) } }