Revert unified versioning.
Revert "[build][version] generate KonanVersion using data from gradle.properties."07ae3144de. Revert "[gradle][test] disable version test"86ec80a6a7. Revert "[build][version][doc] update"94ba9d61a9.
This commit is contained in:
+6
-1
@@ -26,8 +26,13 @@ The Kotlin/Native plugin depends on `org.jetbrains.kotlin:kotlin-gradle-plugin`.
|
||||
plugins as buildscript dependencies, it's recommended to **declare them in the same `build.gradle`** to avoid issues with
|
||||
plugin classpath.
|
||||
|
||||
The plugin downloads the compiler during its first run. You may specify a version of the compiler using `konan.version`
|
||||
project property:
|
||||
|
||||
konan.version=0.3
|
||||
|
||||
If you already downloaded the compiler manually you may specify the path to its root directory using `konan.home`
|
||||
project property (e.g. in `gradle.properties`).
|
||||
project property (e.g. in `gradle.properties`). Note: the plugin ignores the `konan.version` property in this case.
|
||||
|
||||
konan.home=/home/user/kotlin-native-0.5
|
||||
|
||||
|
||||
@@ -31,7 +31,6 @@ import org.jetbrains.kotlin.config.CompilerConfiguration
|
||||
import org.jetbrains.kotlin.config.Services
|
||||
import org.jetbrains.kotlin.config.addKotlinSourceRoots
|
||||
import org.jetbrains.kotlin.config.kotlinSourceRoots
|
||||
import org.jetbrains.kotlin.konan.KonanVersion
|
||||
import org.jetbrains.kotlin.konan.file.File
|
||||
import org.jetbrains.kotlin.konan.target.CompilerOutputKind
|
||||
import org.jetbrains.kotlin.psi.KtFile
|
||||
|
||||
+9
-3
@@ -14,7 +14,7 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package org.jetbrains.kotlin.konan
|
||||
package org.jetbrains.kotlin.backend.konan
|
||||
|
||||
/**
|
||||
* https://en.wikipedia.org/wiki/Software_versioning
|
||||
@@ -22,9 +22,15 @@ package org.jetbrains.kotlin.konan
|
||||
*/
|
||||
|
||||
enum class MetaVersion {
|
||||
DEV,
|
||||
EAP,
|
||||
ALPHA,
|
||||
BETA,
|
||||
RC
|
||||
}
|
||||
}
|
||||
|
||||
class KonanVersion(val meta: MetaVersion?, val major: Int, val minor: Int, val maintenance: Int, val build:Int) {
|
||||
companion object {
|
||||
val CURRENT = KonanVersion(MetaVersion.EAP, 0, 6, 2, 0)
|
||||
}
|
||||
override fun toString() = if (meta != null) "$meta $major.$minor.$maintenance.$build" else "$major.$minor.$maintenance.$build"
|
||||
}
|
||||
+1
-1
@@ -20,7 +20,7 @@ import kotlinx.cinterop.allocArrayOf
|
||||
import kotlinx.cinterop.memScoped
|
||||
import llvm.*
|
||||
import org.jetbrains.kotlin.backend.konan.Context
|
||||
import org.jetbrains.kotlin.konan.KonanVersion
|
||||
import org.jetbrains.kotlin.backend.konan.KonanVersion
|
||||
import org.jetbrains.kotlin.backend.konan.irasdescriptors.FunctionDescriptor
|
||||
import org.jetbrains.kotlin.builtins.KotlinBuiltIns
|
||||
import org.jetbrains.kotlin.ir.SourceManager.FileEntry
|
||||
|
||||
@@ -27,7 +27,7 @@ buildscript {
|
||||
apply plugin: 'kotlin'
|
||||
|
||||
// We reuse the source code from the Project in buildSrc.
|
||||
sourceSets.main.kotlin.srcDirs = ["$projectDir/../../shared/src/main/kotlin"]
|
||||
sourceSets.main.kotlin.srcDirs = ["$projectDir/../../shared"]
|
||||
|
||||
dependencies {
|
||||
compile "org.jetbrains.kotlin:kotlin-stdlib:$buildKotlinVersion"
|
||||
|
||||
+1
-1
@@ -22,6 +22,6 @@ remoteRoot=konan_tests
|
||||
testDataVersion=1226829:id
|
||||
kotlinCompilerRepo=https://teamcity.jetbrains.com/guestAuth/app/rest/builds/buildType:(id:Kotlin_dev_CompilerAllPlugins),number:1.2.50-dev-515,tag:kotlin-native,pinned:true/artifacts/content/maven
|
||||
kotlinVersion=1.2.50-dev-515
|
||||
konanVersion=0.7
|
||||
konanVersion=0.6.2
|
||||
org.gradle.jvmargs='-Dfile.encoding=UTF-8'
|
||||
|
||||
|
||||
+1
-15
@@ -13,10 +13,9 @@
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
import org.jetbrains.kotlin.VersionGenerator
|
||||
|
||||
buildscript {
|
||||
ext.rootBuildDirectory = file('..')
|
||||
ext.rootBuildDirectory = file('../')
|
||||
|
||||
apply from: "$rootBuildDirectory/gradle/loadRootProperties.gradle"
|
||||
apply from: "$rootBuildDirectory/gradle/kotlinGradlePlugin.gradle"
|
||||
@@ -34,19 +33,6 @@ repositories {
|
||||
}
|
||||
}
|
||||
|
||||
task generateCompilerVersion(type: VersionGenerator){}
|
||||
|
||||
sourceSets {
|
||||
main.kotlin {
|
||||
srcDir 'src/main/kotlin'
|
||||
srcDir generateCompilerVersion.versionSourceDirectory
|
||||
}
|
||||
}
|
||||
|
||||
compileKotlin{
|
||||
dependsOn('generateCompilerVersion')
|
||||
}
|
||||
|
||||
jar {
|
||||
archiveName = "shared.jar"
|
||||
}
|
||||
|
||||
@@ -1,35 +0,0 @@
|
||||
/*
|
||||
* Copyright 2010-2017 JetBrains s.r.o.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
buildscript {
|
||||
println("rootDir: $rootDir")
|
||||
ext.rootBuildDirectory = "$rootDir/../.."
|
||||
apply from: "$rootBuildDirectory/gradle/loadRootProperties.gradle"
|
||||
apply from: "$rootBuildDirectory/gradle/kotlinGradlePlugin.gradle"
|
||||
|
||||
}
|
||||
|
||||
|
||||
apply plugin: 'kotlin'
|
||||
|
||||
repositories {
|
||||
mavenCentral()
|
||||
}
|
||||
|
||||
dependencies {
|
||||
compile gradleApi()
|
||||
compile localGroovy()
|
||||
compile "org.jetbrains.kotlin:kotlin-stdlib:$buildKotlinVersion"
|
||||
}
|
||||
@@ -1,55 +0,0 @@
|
||||
package org.jetbrains.kotlin
|
||||
|
||||
import groovy.lang.Closure
|
||||
import org.gradle.api.DefaultTask
|
||||
import org.gradle.api.Task
|
||||
import org.gradle.api.tasks.OutputDirectory
|
||||
import org.gradle.api.tasks.OutputFile
|
||||
import java.io.File
|
||||
|
||||
|
||||
open class VersionGenerator: DefaultTask() {
|
||||
@OutputDirectory
|
||||
val versionSourceDirectory = project.file("build/generated")
|
||||
@OutputFile
|
||||
val versionFile:File = project.file("${versionSourceDirectory.path}/org/jetbrains/kotlin/konan/KonanVersion.kt")
|
||||
|
||||
|
||||
override fun configure(closure: Closure<*>): Task {
|
||||
val result = super.configure(closure)
|
||||
doFirst {
|
||||
val content = buildString {
|
||||
operator fun String.unaryPlus() = this@buildString.append(this)
|
||||
val version = project.properties["konanVersion"].toString().split(".")
|
||||
val major = version[0].toInt()
|
||||
val minor = version[1].toInt()
|
||||
val maintenance = if (version.size > 2) version[2].toInt() else 0
|
||||
val build = System.getenv("env.dep.Kotlin_KotlinNative_Master_KotlinNativeCheckout.build.counter")?.let {
|
||||
it.split("-")[2].toInt() //7-dev-buildcount
|
||||
}?: -1
|
||||
val meta = project.properties["konanMetaVersion"]?.let { "MetaVersion.${it.toString().toUpperCase()}" } ?: "MetaVersion.DEV"
|
||||
|
||||
+ """
|
||||
|package org.jetbrains.kotlin.konan
|
||||
|data class KonanVersion(val meta: MetaVersion = MetaVersion.DEV,
|
||||
| val major: Int,
|
||||
| val minor: Int,
|
||||
| val maintenance: Int,
|
||||
| val build:Int) {
|
||||
| companion object {
|
||||
| val CURRENT = KonanVersion($meta, $major, $minor, $maintenance, $build)
|
||||
| }
|
||||
| private val versionString by lazy {
|
||||
| "${'$'}{meta.name} ${'$'}major.${'$'}minor.${'$'}maintenance-${'$'}build".trim()
|
||||
| }
|
||||
| override fun toString() = versionString
|
||||
|}
|
||||
""".trimMargin()
|
||||
}
|
||||
versionFile.printWriter().use {
|
||||
it.println(content)
|
||||
}
|
||||
}
|
||||
return result
|
||||
}
|
||||
}
|
||||
@@ -122,6 +122,8 @@ test {
|
||||
processResources {
|
||||
// We add konanVersion as a task input to avoid considering this task up-to-date when
|
||||
// konanVersion is actually changed and should be updated in the plugin jar.
|
||||
inputs.property("konanVersion", konanVersion)
|
||||
expand('konanVersion': konanVersion)
|
||||
from(file("$rootBuildDirectory/utilities/env_blacklist"))
|
||||
}
|
||||
|
||||
|
||||
+12
-4
@@ -37,7 +37,6 @@ import org.gradle.language.nativeplatform.internal.Names
|
||||
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.KonanVersion
|
||||
import org.jetbrains.kotlin.konan.target.HostManager
|
||||
import org.jetbrains.kotlin.konan.target.KonanTarget
|
||||
import org.jetbrains.kotlin.konan.target.customerDistribution
|
||||
@@ -111,6 +110,9 @@ internal val Project.konanExtension: KonanExtension
|
||||
internal val Project.konanCompilerDownloadTask
|
||||
get() = tasks.getByName(KonanPlugin.KONAN_DOWNLOAD_TASK_NAME)
|
||||
|
||||
internal val Project.konanVersion
|
||||
get() = getProperty(KonanPlugin.ProjectProperty.KONAN_VERSION, KonanPlugin.DEFAULT_KONAN_VERSION) as String
|
||||
|
||||
internal val Project.requestedTargets
|
||||
get() = findProperty(KonanPlugin.ProjectProperty.KONAN_BUILD_TARGETS)?.let {
|
||||
it.toString().trim().split("\\s+".toRegex())
|
||||
@@ -139,7 +141,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}-${this.konanVersion}"
|
||||
|
||||
internal fun Project.konanCompilerDownloadDir(): String =
|
||||
DependencyProcessor.localKonanDir.resolve(project.konanCompilerName()).absolutePath
|
||||
@@ -216,7 +218,7 @@ internal fun dumpProperties(task: Task) {
|
||||
println("target : $target")
|
||||
println("languageVersion : $languageVersion")
|
||||
println("apiVersion : $apiVersion")
|
||||
println("konanVersion : ${KonanVersion.CURRENT}")
|
||||
println("konanVersion : $konanVersion")
|
||||
println("konanHome : $konanHome")
|
||||
println()
|
||||
}
|
||||
@@ -237,7 +239,7 @@ internal fun dumpProperties(task: Task) {
|
||||
println("linkerOpts : $linkerOpts")
|
||||
println("headers : ${headers.dump()}")
|
||||
println("linkFiles : ${linkFiles.dump()}")
|
||||
println("konanVersion : ${KonanVersion.CURRENT}")
|
||||
println("konanVersion : $konanVersion")
|
||||
println("konanHome : $konanHome")
|
||||
println()
|
||||
}
|
||||
@@ -271,6 +273,7 @@ class KonanPlugin @Inject constructor(private val registry: ToolingModelBuilderR
|
||||
|
||||
enum class ProjectProperty(val propertyName: String) {
|
||||
KONAN_HOME ("konan.home"),
|
||||
KONAN_VERSION ("konan.version"),
|
||||
KONAN_BUILD_TARGETS ("konan.build.targets"),
|
||||
KONAN_JVM_ARGS ("konan.jvmArgs"),
|
||||
KONAN_USE_ENVIRONMENT_VARIABLES("konan.useEnvironmentVariables"),
|
||||
@@ -291,6 +294,11 @@ class KonanPlugin @Inject constructor(private val registry: ToolingModelBuilderR
|
||||
internal const val KONAN_MAIN_VARIANT = "konan_main_variant"
|
||||
|
||||
internal const val KONAN_EXTENSION_NAME = "konan"
|
||||
|
||||
internal val DEFAULT_KONAN_VERSION = Properties().apply {
|
||||
load(KonanPlugin::class.java.getResourceAsStream("/META-INF/gradle-plugins/konan.properties") ?:
|
||||
throw RuntimeException("Cannot find a properties file"))
|
||||
}.getProperty("default-konan-version") ?: throw RuntimeException("Cannot read the default compiler version")
|
||||
}
|
||||
|
||||
private fun Project.cleanKonan() = project.tasks.withType(KonanBuildingTask::class.java).forEach {
|
||||
|
||||
+2
-2
@@ -20,7 +20,6 @@ import org.gradle.api.Project
|
||||
import org.gradle.tooling.provider.model.ToolingModelBuilder
|
||||
import org.jetbrains.kotlin.gradle.plugin.model.KonanArtifact
|
||||
import org.jetbrains.kotlin.gradle.plugin.model.KonanModel
|
||||
import org.jetbrains.kotlin.konan.KonanVersion
|
||||
import org.jetbrains.kotlin.konan.util.visibleName
|
||||
|
||||
object KonanToolingModelBuilder : ToolingModelBuilder {
|
||||
@@ -30,11 +29,12 @@ object KonanToolingModelBuilder : ToolingModelBuilder {
|
||||
val artifacts = project.konanArtifactsContainer.flatten()
|
||||
.toList()
|
||||
.map { KonanArtifactImpl("${it.artifact.name}-${it.konanTarget.visibleName}", it.artifact.canonicalPath) }
|
||||
return KonanModelImpl(artifacts)
|
||||
return KonanModelImpl(project.konanVersion, artifacts)
|
||||
}
|
||||
}
|
||||
|
||||
private class KonanModelImpl(
|
||||
override val konanVersion: String,
|
||||
override val artifacts: List<KonanArtifact>
|
||||
) : KonanModel
|
||||
|
||||
|
||||
+1
@@ -23,6 +23,7 @@ import java.io.Serializable
|
||||
* This model is shared with the client processes such as an IDE.
|
||||
*/
|
||||
interface KonanModel : Serializable {
|
||||
val konanVersion: String
|
||||
val artifacts: List<KonanArtifact>
|
||||
}
|
||||
|
||||
|
||||
+2
@@ -39,6 +39,8 @@ abstract class KonanBuildingTask: KonanArtifactWithLibrariesTask(), KonanBuildin
|
||||
@Input
|
||||
val extraOpts = mutableListOf<String>()
|
||||
|
||||
val konanVersion
|
||||
@Input get() = project.konanVersion
|
||||
val konanHome
|
||||
@Input get() = project.konanHome
|
||||
|
||||
|
||||
+8
-7
@@ -21,8 +21,6 @@ import org.gradle.api.GradleScriptException
|
||||
import org.gradle.api.tasks.Internal
|
||||
import org.gradle.api.tasks.TaskAction
|
||||
import org.jetbrains.kotlin.gradle.plugin.*
|
||||
import org.jetbrains.kotlin.konan.KonanVersion
|
||||
import org.jetbrains.kotlin.konan.MetaVersion
|
||||
import org.jetbrains.kotlin.konan.util.DependencyProcessor
|
||||
import org.jetbrains.kotlin.konan.util.DependencySource
|
||||
import org.jetbrains.kotlin.konan.util.visibleName
|
||||
@@ -45,15 +43,18 @@ open class KonanCompilerDownloadTask : DefaultTask() {
|
||||
if (!project.hasProperty(KonanPlugin.ProjectProperty.DOWNLOAD_COMPILER)) {
|
||||
val konanHome = project.getProperty(KonanPlugin.ProjectProperty.KONAN_HOME)
|
||||
logger.info("Use a user-defined compiler path: $konanHome")
|
||||
if (project.hasProperty(KonanPlugin.ProjectProperty.KONAN_VERSION)) {
|
||||
val konanVersion = project.getProperty(KonanPlugin.ProjectProperty.KONAN_VERSION)
|
||||
logger.warn("${KonanPlugin.ProjectProperty.KONAN_VERSION.propertyName} " +
|
||||
"(=$konanVersion) property is ignored " +
|
||||
"because a user-defined compiler path is specified: $konanHome")
|
||||
}
|
||||
} else {
|
||||
try {
|
||||
val downloadUrlDirectory = buildString {
|
||||
append("$BASE_DOWNLOAD_URL/")
|
||||
val version = KonanVersion.CURRENT
|
||||
when (version.meta) {
|
||||
MetaVersion.DEV -> append("dev/")
|
||||
else -> append("releases/")
|
||||
}
|
||||
val version = project.konanVersion
|
||||
append(if (version.contains("dev")) "dev/" else "releases/")
|
||||
append("$version/")
|
||||
append(project.simpleOsName)
|
||||
}
|
||||
|
||||
+14
@@ -274,6 +274,20 @@ class IncrementalSpecification extends BaseKonanSpecification {
|
||||
recompilationAndInteropProcessingHappened(*results)
|
||||
}
|
||||
|
||||
def 'konan version change should cause recompilation and interop reprocessing'() {
|
||||
when:
|
||||
def project = KonanProject.createWithInterop(projectDirectory, ArtifactType.LIBRARY) { KonanProject it ->
|
||||
it.propertiesFile.append("konan.version=0.3\n")
|
||||
}
|
||||
def results = buildTwice(project) { KonanProject it ->
|
||||
def newText = it.propertiesFile.text.replace('konan.version=0.3', 'konan.version=0.4')
|
||||
it.propertiesFile.write(newText)
|
||||
}
|
||||
|
||||
then:
|
||||
recompilationAndInteropProcessingHappened(*results)
|
||||
}
|
||||
|
||||
def 'Common source change should cause recompilation'() {
|
||||
when:
|
||||
File commonSource
|
||||
|
||||
Reference in New Issue
Block a user