[gradle-plugin] Provide project property for compiler version overriding
This commit is contained in:
committed by
Ilya Matveev
parent
56f572f07f
commit
474b401dd1
+2
@@ -82,6 +82,8 @@ open class CInteropTask @Inject constructor(val settings: CInteropSettingsImpl):
|
|||||||
val extraOpts: List<String>
|
val extraOpts: List<String>
|
||||||
@Input get() = settings.extraOpts
|
@Input get() = settings.extraOpts
|
||||||
|
|
||||||
|
val konanVersion: String
|
||||||
|
@Input get() = project.konanVersion.toString(true, true)
|
||||||
|
|
||||||
// Task action.
|
// Task action.
|
||||||
@TaskAction
|
@TaskAction
|
||||||
|
|||||||
+3
@@ -84,6 +84,9 @@ open class KotlinNativeCompile @Inject constructor(internal val binary: Abstract
|
|||||||
val outputFile: File
|
val outputFile: File
|
||||||
get() = outputLocationProvider.get().asFile
|
get() = outputLocationProvider.get().asFile
|
||||||
|
|
||||||
|
val konanVersion: String
|
||||||
|
@Input get() = project.konanVersion.toString(true, true)
|
||||||
|
|
||||||
private val outputPathProvider: Provider<String> = project.provider {
|
private val outputPathProvider: Provider<String> = project.provider {
|
||||||
with(binary) {
|
with(binary) {
|
||||||
val root = outputRootName
|
val root = outputRootName
|
||||||
|
|||||||
+8
-1
@@ -35,6 +35,7 @@ import org.jetbrains.kotlin.gradle.plugin.konan.KonanPlugin.Companion.COMPILE_AL
|
|||||||
import org.jetbrains.kotlin.gradle.plugin.model.KonanToolingModelBuilder
|
import org.jetbrains.kotlin.gradle.plugin.model.KonanToolingModelBuilder
|
||||||
import org.jetbrains.kotlin.gradle.plugin.tasks.*
|
import org.jetbrains.kotlin.gradle.plugin.tasks.*
|
||||||
import org.jetbrains.kotlin.konan.KonanVersion
|
import org.jetbrains.kotlin.konan.KonanVersion
|
||||||
|
import org.jetbrains.kotlin.konan.parseKonanVersion
|
||||||
import org.jetbrains.kotlin.konan.target.HostManager
|
import org.jetbrains.kotlin.konan.target.HostManager
|
||||||
import org.jetbrains.kotlin.konan.target.KonanTarget
|
import org.jetbrains.kotlin.konan.target.KonanTarget
|
||||||
import org.jetbrains.kotlin.konan.target.customerDistribution
|
import org.jetbrains.kotlin.konan.target.customerDistribution
|
||||||
@@ -70,6 +71,11 @@ internal val Project.konanHome: String
|
|||||||
return project.file(getProperty(KonanPlugin.ProjectProperty.KONAN_HOME)).canonicalPath
|
return project.file(getProperty(KonanPlugin.ProjectProperty.KONAN_HOME)).canonicalPath
|
||||||
}
|
}
|
||||||
|
|
||||||
|
internal val Project.konanVersion: KonanVersion
|
||||||
|
get() = project.findProperty(KonanPlugin.ProjectProperty.KONAN_VERSION)
|
||||||
|
?.toString()?.parseKonanVersion()
|
||||||
|
?: KonanVersion.CURRENT
|
||||||
|
|
||||||
internal val Project.konanBuildRoot get() = buildDir.resolve("konan")
|
internal val Project.konanBuildRoot get() = buildDir.resolve("konan")
|
||||||
internal val Project.konanBinBaseDir get() = konanBuildRoot.resolve("bin")
|
internal val Project.konanBinBaseDir get() = konanBuildRoot.resolve("bin")
|
||||||
internal val Project.konanLibsBaseDir get() = konanBuildRoot.resolve("libs")
|
internal val Project.konanLibsBaseDir get() = konanBuildRoot.resolve("libs")
|
||||||
@@ -134,7 +140,7 @@ private fun Project.getOrCreateTask(name: String): Task = with(tasks) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
internal fun Project.konanCompilerName(): String =
|
internal fun Project.konanCompilerName(): String =
|
||||||
"kotlin-native-${project.simpleOsName}-${KonanVersion.CURRENT}"
|
"kotlin-native-${project.simpleOsName}-${project.konanVersion}"
|
||||||
|
|
||||||
internal fun Project.konanCompilerDownloadDir(): String =
|
internal fun Project.konanCompilerDownloadDir(): String =
|
||||||
DependencyProcessor.localKonanDir.resolve(project.konanCompilerName()).absolutePath
|
DependencyProcessor.localKonanDir.resolve(project.konanCompilerName()).absolutePath
|
||||||
@@ -266,6 +272,7 @@ class KonanPlugin @Inject constructor(private val registry: ToolingModelBuilderR
|
|||||||
|
|
||||||
enum class ProjectProperty(val propertyName: String) {
|
enum class ProjectProperty(val propertyName: String) {
|
||||||
KONAN_HOME ("konan.home"),
|
KONAN_HOME ("konan.home"),
|
||||||
|
KONAN_VERSION ("org.jetbrains.kotlin.native.version"),
|
||||||
KONAN_BUILD_TARGETS ("konan.build.targets"),
|
KONAN_BUILD_TARGETS ("konan.build.targets"),
|
||||||
KONAN_JVM_ARGS ("konan.jvmArgs"),
|
KONAN_JVM_ARGS ("konan.jvmArgs"),
|
||||||
KONAN_USE_ENVIRONMENT_VARIABLES("konan.useEnvironmentVariables"),
|
KONAN_USE_ENVIRONMENT_VARIABLES("konan.useEnvironmentVariables"),
|
||||||
|
|||||||
+3
@@ -44,6 +44,9 @@ abstract class KonanBuildingTask: KonanArtifactWithLibrariesTask(), KonanBuildin
|
|||||||
val konanHome
|
val konanHome
|
||||||
@Input get() = project.konanHome
|
@Input get() = project.konanHome
|
||||||
|
|
||||||
|
val konanVersion
|
||||||
|
@Input get() = project.konanVersion.toString(true, true)
|
||||||
|
|
||||||
protected abstract fun buildArgs(): List<String>
|
protected abstract fun buildArgs(): List<String>
|
||||||
|
|
||||||
@TaskAction
|
@TaskAction
|
||||||
|
|||||||
+1
-1
@@ -47,7 +47,7 @@ open class KonanCompilerDownloadTask : DefaultTask() {
|
|||||||
try {
|
try {
|
||||||
val downloadUrlDirectory = buildString {
|
val downloadUrlDirectory = buildString {
|
||||||
append("$BASE_DOWNLOAD_URL/")
|
append("$BASE_DOWNLOAD_URL/")
|
||||||
val version = KonanVersion.CURRENT
|
val version = project.konanVersion
|
||||||
when (version.meta) {
|
when (version.meta) {
|
||||||
MetaVersion.DEV -> append("dev/")
|
MetaVersion.DEV -> append("dev/")
|
||||||
else -> append("releases/")
|
else -> append("releases/")
|
||||||
|
|||||||
+2
-1
@@ -22,6 +22,7 @@ import org.jetbrains.kotlin.gradle.plugin.experimental.internal.AbstractKotlinNa
|
|||||||
import org.jetbrains.kotlin.gradle.plugin.konan.konanArtifactsContainer
|
import org.jetbrains.kotlin.gradle.plugin.konan.konanArtifactsContainer
|
||||||
import org.jetbrains.kotlin.gradle.plugin.konan.konanExtension
|
import org.jetbrains.kotlin.gradle.plugin.konan.konanExtension
|
||||||
import org.jetbrains.kotlin.gradle.plugin.konan.konanHome
|
import org.jetbrains.kotlin.gradle.plugin.konan.konanHome
|
||||||
|
import org.jetbrains.kotlin.gradle.plugin.konan.konanVersion
|
||||||
import org.jetbrains.kotlin.konan.KonanVersion
|
import org.jetbrains.kotlin.konan.KonanVersion
|
||||||
import org.jetbrains.kotlin.konan.target.CompilerOutputKind
|
import org.jetbrains.kotlin.konan.target.CompilerOutputKind
|
||||||
import java.io.File
|
import java.io.File
|
||||||
@@ -36,7 +37,7 @@ object KonanToolingModelBuilder : ToolingModelBuilder {
|
|||||||
return KonanModelImpl(
|
return KonanModelImpl(
|
||||||
artifacts,
|
artifacts,
|
||||||
project.file(project.konanHome),
|
project.file(project.konanHome),
|
||||||
KonanVersion.CURRENT,
|
project.konanVersion,
|
||||||
// TODO: Provide defaults for these versions.
|
// TODO: Provide defaults for these versions.
|
||||||
project.konanExtension.languageVersion,
|
project.konanExtension.languageVersion,
|
||||||
project.konanExtension.apiVersion
|
project.konanExtension.apiVersion
|
||||||
|
|||||||
@@ -1005,4 +1005,21 @@ class ExperimentalPluginTests {
|
|||||||
assertFileExists(it)
|
assertFileExists(it)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun `Plugin should allow overriding Kotlin-Native version`() {
|
||||||
|
val project = KonanProject.createEmpty(projectDirectory).apply {
|
||||||
|
buildFile.writeText("plugins { id 'kotlin-native' }")
|
||||||
|
propertiesFile.writeText("")
|
||||||
|
}
|
||||||
|
|
||||||
|
val result = project.createRunner().withArguments(
|
||||||
|
"checkKonanCompiler",
|
||||||
|
"-Porg.jetbrains.kotlin.native.version=0.9.3",
|
||||||
|
"-i"
|
||||||
|
).build()
|
||||||
|
assertTrue(result.output.contains(
|
||||||
|
"Downloading Kotlin/Native compiler from.*kotlin-native-${HostManager.simpleOsName()}-0.9.3".toRegex())
|
||||||
|
)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user