[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>
|
||||
@Input get() = settings.extraOpts
|
||||
|
||||
val konanVersion: String
|
||||
@Input get() = project.konanVersion.toString(true, true)
|
||||
|
||||
// Task action.
|
||||
@TaskAction
|
||||
|
||||
+3
@@ -84,6 +84,9 @@ open class KotlinNativeCompile @Inject constructor(internal val binary: Abstract
|
||||
val outputFile: File
|
||||
get() = outputLocationProvider.get().asFile
|
||||
|
||||
val konanVersion: String
|
||||
@Input get() = project.konanVersion.toString(true, true)
|
||||
|
||||
private val outputPathProvider: Provider<String> = project.provider {
|
||||
with(binary) {
|
||||
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.tasks.*
|
||||
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.KonanTarget
|
||||
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
|
||||
}
|
||||
|
||||
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.konanBinBaseDir get() = konanBuildRoot.resolve("bin")
|
||||
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 =
|
||||
"kotlin-native-${project.simpleOsName}-${KonanVersion.CURRENT}"
|
||||
"kotlin-native-${project.simpleOsName}-${project.konanVersion}"
|
||||
|
||||
internal fun Project.konanCompilerDownloadDir(): String =
|
||||
DependencyProcessor.localKonanDir.resolve(project.konanCompilerName()).absolutePath
|
||||
@@ -266,6 +272,7 @@ class KonanPlugin @Inject constructor(private val registry: ToolingModelBuilderR
|
||||
|
||||
enum class ProjectProperty(val propertyName: String) {
|
||||
KONAN_HOME ("konan.home"),
|
||||
KONAN_VERSION ("org.jetbrains.kotlin.native.version"),
|
||||
KONAN_BUILD_TARGETS ("konan.build.targets"),
|
||||
KONAN_JVM_ARGS ("konan.jvmArgs"),
|
||||
KONAN_USE_ENVIRONMENT_VARIABLES("konan.useEnvironmentVariables"),
|
||||
|
||||
+3
@@ -44,6 +44,9 @@ abstract class KonanBuildingTask: KonanArtifactWithLibrariesTask(), KonanBuildin
|
||||
val konanHome
|
||||
@Input get() = project.konanHome
|
||||
|
||||
val konanVersion
|
||||
@Input get() = project.konanVersion.toString(true, true)
|
||||
|
||||
protected abstract fun buildArgs(): List<String>
|
||||
|
||||
@TaskAction
|
||||
|
||||
+1
-1
@@ -47,7 +47,7 @@ open class KonanCompilerDownloadTask : DefaultTask() {
|
||||
try {
|
||||
val downloadUrlDirectory = buildString {
|
||||
append("$BASE_DOWNLOAD_URL/")
|
||||
val version = KonanVersion.CURRENT
|
||||
val version = project.konanVersion
|
||||
when (version.meta) {
|
||||
MetaVersion.DEV -> append("dev/")
|
||||
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.konanExtension
|
||||
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.target.CompilerOutputKind
|
||||
import java.io.File
|
||||
@@ -36,7 +37,7 @@ object KonanToolingModelBuilder : ToolingModelBuilder {
|
||||
return KonanModelImpl(
|
||||
artifacts,
|
||||
project.file(project.konanHome),
|
||||
KonanVersion.CURRENT,
|
||||
project.konanVersion,
|
||||
// TODO: Provide defaults for these versions.
|
||||
project.konanExtension.languageVersion,
|
||||
project.konanExtension.apiVersion
|
||||
|
||||
@@ -1005,4 +1005,21 @@ class ExperimentalPluginTests {
|
||||
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