From 9f9609ac0fd7584f9a1af4cdff3734bca52ed60a Mon Sep 17 00:00:00 2001 From: Nikolay Krasko Date: Wed, 22 Apr 2020 18:31:50 +0300 Subject: [PATCH] Rewrite kotlin-native-shared gradle build to kts --- shared/build.gradle.kts | 63 ++++++++------- .../jetbrains/kotlin/VersionGenerator.java | 81 ++++++++----------- shared/settings.gradle.kts | 23 +++++- 3 files changed, 92 insertions(+), 75 deletions(-) diff --git a/shared/build.gradle.kts b/shared/build.gradle.kts index 79649ba6ab4..aa66ceaf29f 100644 --- a/shared/build.gradle.kts +++ b/shared/build.gradle.kts @@ -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 { + 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") } diff --git a/shared/buildSrc/src/main/java/org/jetbrains/kotlin/VersionGenerator.java b/shared/buildSrc/src/main/java/org/jetbrains/kotlin/VersionGenerator.java index 29facdeac52..cf8eb57c1df 100644 --- a/shared/buildSrc/src/main/java/org/jetbrains/kotlin/VersionGenerator.java +++ b/shared/buildSrc/src/main/java/org/jetbrains/kotlin/VersionGenerator.java @@ -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); + } } } \ No newline at end of file diff --git a/shared/settings.gradle.kts b/shared/settings.gradle.kts index ca289e2fbff..b3698a0c487 100644 --- a/shared/settings.gradle.kts +++ b/shared/settings.gradle.kts @@ -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" \ No newline at end of file