Rewrite kotlin-native-shared gradle build to kts

This commit is contained in:
Nikolay Krasko
2020-04-22 18:31:50 +03:00
committed by Vasily Levchenko
parent 01fc70a767
commit 9f9609ac0f
3 changed files with 92 additions and 75 deletions
+35 -28
View File
@@ -13,56 +13,63 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
@file:Suppress("UnstableApiUsage")
import org.jetbrains.kotlin.VersionGenerator
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
import org.jetbrains.kotlin.gradle.plugin.KotlinSourceSet
buildscript {
ext.rootBuildDirectory = file('..')
apply from: "$rootBuildDirectory/gradle/loadRootProperties.gradle"
apply from: "$rootBuildDirectory/gradle/kotlinGradlePlugin.gradle"
plugins {
id("kotlin")
}
apply plugin: 'kotlin'
val rootBuildDirectory by extra(file(".."))
apply(from="../gradle/loadRootProperties.gradle")
group = 'org.jetbrains.kotlin'
val kotlinVersion: String by extra
val konanVersion: String by extra
val kotlinCompilerRepo: String by extra
val buildKotlinCompilerRepo: String by extra
group = "org.jetbrains.kotlin"
version = konanVersion
repositories {
mavenCentral()
maven { url buildKotlinCompilerRepo }
maven { url kotlinCompilerRepo }
maven("https://cache-redirector.jetbrains.com/maven-central")
maven(kotlinCompilerRepo)
maven(buildKotlinCompilerRepo)
}
// FIXME(ddol): KLIB-REFACTORING-CLEANUP: drop generation of KonanVersion!
task generateCompilerVersion(type: VersionGenerator){}
val generateCompilerVersion by tasks.registering(VersionGenerator::class) {}
sourceSets {
main.kotlin {
srcDir 'src/main/kotlin'
srcDir 'src/library/kotlin'
srcDir generateCompilerVersion.versionSourceDirectory
}
sourceSets["main"].withConvention(KotlinSourceSet::class) {
kotlin.srcDir("src/main/kotlin")
kotlin.srcDir("src/library/kotlin")
kotlin.srcDir(generateCompilerVersion.get().versionSourceDirectory)
}
compileKotlin {
dependsOn('generateCompilerVersion')
tasks.withType<KotlinCompile> {
dependsOn(generateCompilerVersion)
kotlinOptions.jvmTarget = "1.8"
}
clean {
tasks.clean {
doFirst {
if (generateCompilerVersion.versionSourceDirectory.exists())
generateCompilerVersion.versionSourceDirectory.delete()
val versionSourceDirectory = generateCompilerVersion.get().versionSourceDirectory
if (versionSourceDirectory.exists()) {
versionSourceDirectory.delete()
}
}
}
jar {
archiveName = "shared.jar"
tasks.jar {
archiveFileName.set("shared.jar")
}
dependencies {
compile "org.jetbrains.kotlin:kotlin-stdlib:$kotlinVersion"
compile "org.jetbrains.kotlin:kotlin-native-utils:$kotlinVersion"
compile "org.jetbrains.kotlin:kotlin-util-io:$kotlinVersion"
compile "org.jetbrains.kotlin:kotlin-util-klib:$kotlinVersion"
implementation("org.jetbrains.kotlin:kotlin-stdlib:$kotlinVersion")
implementation("org.jetbrains.kotlin:kotlin-reflect:$kotlinVersion")
api("org.jetbrains.kotlin:kotlin-native-utils:$kotlinVersion")
api("org.jetbrains.kotlin:kotlin-util-klib:$kotlinVersion")
}
@@ -3,10 +3,7 @@ package org.jetbrains.kotlin;
import groovy.lang.Closure;
import org.gradle.api.DefaultTask;
import org.gradle.api.Task;
import org.gradle.api.tasks.Input;
import org.gradle.api.tasks.Optional;
import org.gradle.api.tasks.OutputDirectory;
import org.gradle.api.tasks.OutputFile;
import org.gradle.api.tasks.*;
import java.io.File;
import java.io.FileNotFoundException;
@@ -56,52 +53,44 @@ public class VersionGenerator extends DefaultTask {
"^(\\d+)\\.(\\d+)(?:\\.(\\d+))?(?:-M(\\p{Digit}))?(?:-(\\p{Alpha}\\p{Alnum}*))?(?:-(\\d+))?$"
);
@SuppressWarnings("NullableProblems")
@Override
public Task configure(@SuppressWarnings("NullableProblems") Closure closure) {
Task result = super.configure(closure);
@TaskAction
public void generateVersion() {
Matcher matcher = versionPattern.matcher(getKonanVersion());
if (!matcher.matches()) {
throw new IllegalArgumentException("Cannot parse Kotlin/Native version: $konanVersion");
}
doFirst(task -> {
Matcher matcher = versionPattern.matcher(getKonanVersion());
if (!matcher.matches()) {
throw new IllegalArgumentException("Cannot parse Kotlin/Native version: $konanVersion");
}
int major = Integer.parseInt(matcher.group(1));
int minor = Integer.parseInt(matcher.group(2));
int major = Integer.parseInt(matcher.group(1));
int minor = Integer.parseInt(matcher.group(2));
String maintenanceStr = matcher.group(3);
int maintenance = maintenanceStr != null ? Integer.parseInt(maintenanceStr) : 0;
String maintenanceStr = matcher.group(3);
int maintenance = maintenanceStr != null ? Integer.parseInt(maintenanceStr) : 0;
String milestoneStr = matcher.group(4);
int milestone = milestoneStr != null ? Integer.parseInt(milestoneStr) : -1;
String milestoneStr = matcher.group(4);
int milestone = milestoneStr != null ? Integer.parseInt(milestoneStr) : -1;
String buildNumber = getBuildNumber();
getProject().getLogger().info("BUILD_NUMBER: " + getBuildNumber());
int build = -1;
if (buildNumber != null) {
String[] buildNumberSplit = buildNumber.split("-");
build = Integer.parseInt(buildNumberSplit[buildNumberSplit.length - 1]); // //7-dev-buildcount
}
String buildNumber = getBuildNumber();
getProject().getLogger().info("BUILD_NUMBER: " + getBuildNumber());
int build = -1;
if (buildNumber != null) {
String[] buildNumberSplit = buildNumber.split("-");
build = Integer.parseInt(buildNumberSplit[buildNumberSplit.length - 1]); // //7-dev-buildcount
}
try (PrintWriter printWriter = new PrintWriter(getVersionFile())) {
printWriter.println(
"package org.jetbrains.kotlin.konan\n" +
"\n" +
"internal val currentCompilerVersion: CompilerVersion =\n" +
" CompilerVersionImpl(\n" +
getMeta() + ", " + major + ", " + minor + ",\n" +
maintenance + ", " + milestone + ", "+ build + ")\n" +
"\n" +
"val CompilerVersion.Companion.CURRENT: CompilerVersion\n" +
" get() = currentCompilerVersion"
);
} catch (FileNotFoundException e) {
throw new IllegalStateException(e);
}
});
return result;
try (PrintWriter printWriter = new PrintWriter(getVersionFile())) {
printWriter.println(
"package org.jetbrains.kotlin.konan\n" +
"\n" +
"internal val currentCompilerVersion: CompilerVersion =\n" +
" CompilerVersionImpl(\n" +
getMeta() + ", " + major + ", " + minor + ",\n" +
maintenance + ", " + milestone + ", "+ build + ")\n" +
"\n" +
"val CompilerVersion.Companion.CURRENT: CompilerVersion\n" +
" get() = currentCompilerVersion"
);
} catch (FileNotFoundException e) {
throw new IllegalStateException(e);
}
}
}
+22 -1
View File
@@ -1,2 +1,23 @@
rootProject.name = "kotlin-native-shared"
pluginManagement {
val rootProperties = java.util.Properties().apply {
rootDir.resolve("../gradle.properties").reader().use(::load)
}
val kotlinCompilerRepo: String by rootProperties
val kotlinVersion: String by rootProperties
repositories {
maven(kotlinCompilerRepo)
maven("https://cache-redirector.jetbrains.com/maven-central")
}
resolutionStrategy {
eachPlugin {
if (requested.id.id == "kotlin") {
useModule("org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlinVersion")
}
}
}
}
rootProject.name = "kotlin-native-shared"