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 * See the License for the specific language governing permissions and
* limitations under the License. * limitations under the License.
*/ */
@file:Suppress("UnstableApiUsage")
import org.jetbrains.kotlin.VersionGenerator import org.jetbrains.kotlin.VersionGenerator
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
import org.jetbrains.kotlin.gradle.plugin.KotlinSourceSet
buildscript { plugins {
ext.rootBuildDirectory = file('..') id("kotlin")
apply from: "$rootBuildDirectory/gradle/loadRootProperties.gradle"
apply from: "$rootBuildDirectory/gradle/kotlinGradlePlugin.gradle"
} }
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 version = konanVersion
repositories { repositories {
mavenCentral() maven("https://cache-redirector.jetbrains.com/maven-central")
maven { url buildKotlinCompilerRepo } maven(kotlinCompilerRepo)
maven { url kotlinCompilerRepo } maven(buildKotlinCompilerRepo)
} }
// FIXME(ddol): KLIB-REFACTORING-CLEANUP: drop generation of KonanVersion! // FIXME(ddol): KLIB-REFACTORING-CLEANUP: drop generation of KonanVersion!
task generateCompilerVersion(type: VersionGenerator){} val generateCompilerVersion by tasks.registering(VersionGenerator::class) {}
sourceSets { sourceSets["main"].withConvention(KotlinSourceSet::class) {
main.kotlin { kotlin.srcDir("src/main/kotlin")
srcDir 'src/main/kotlin' kotlin.srcDir("src/library/kotlin")
srcDir 'src/library/kotlin' kotlin.srcDir(generateCompilerVersion.get().versionSourceDirectory)
srcDir generateCompilerVersion.versionSourceDirectory
}
} }
compileKotlin { tasks.withType<KotlinCompile> {
dependsOn('generateCompilerVersion') dependsOn(generateCompilerVersion)
kotlinOptions.jvmTarget = "1.8" kotlinOptions.jvmTarget = "1.8"
} }
clean { tasks.clean {
doFirst { doFirst {
if (generateCompilerVersion.versionSourceDirectory.exists()) val versionSourceDirectory = generateCompilerVersion.get().versionSourceDirectory
generateCompilerVersion.versionSourceDirectory.delete() if (versionSourceDirectory.exists()) {
versionSourceDirectory.delete()
}
} }
} }
jar { tasks.jar {
archiveName = "shared.jar" archiveFileName.set("shared.jar")
} }
dependencies { dependencies {
compile "org.jetbrains.kotlin:kotlin-stdlib:$kotlinVersion" implementation("org.jetbrains.kotlin:kotlin-stdlib:$kotlinVersion")
compile "org.jetbrains.kotlin:kotlin-native-utils:$kotlinVersion" implementation("org.jetbrains.kotlin:kotlin-reflect:$kotlinVersion")
compile "org.jetbrains.kotlin:kotlin-util-io:$kotlinVersion" api("org.jetbrains.kotlin:kotlin-native-utils:$kotlinVersion")
compile "org.jetbrains.kotlin:kotlin-util-klib:$kotlinVersion" api("org.jetbrains.kotlin:kotlin-util-klib:$kotlinVersion")
} }
@@ -3,10 +3,7 @@ package org.jetbrains.kotlin;
import groovy.lang.Closure; import groovy.lang.Closure;
import org.gradle.api.DefaultTask; import org.gradle.api.DefaultTask;
import org.gradle.api.Task; import org.gradle.api.Task;
import org.gradle.api.tasks.Input; import org.gradle.api.tasks.*;
import org.gradle.api.tasks.Optional;
import org.gradle.api.tasks.OutputDirectory;
import org.gradle.api.tasks.OutputFile;
import java.io.File; import java.io.File;
import java.io.FileNotFoundException; import java.io.FileNotFoundException;
@@ -56,52 +53,44 @@ public class VersionGenerator extends DefaultTask {
"^(\\d+)\\.(\\d+)(?:\\.(\\d+))?(?:-M(\\p{Digit}))?(?:-(\\p{Alpha}\\p{Alnum}*))?(?:-(\\d+))?$" "^(\\d+)\\.(\\d+)(?:\\.(\\d+))?(?:-M(\\p{Digit}))?(?:-(\\p{Alpha}\\p{Alnum}*))?(?:-(\\d+))?$"
); );
@SuppressWarnings("NullableProblems") @TaskAction
@Override public void generateVersion() {
public Task configure(@SuppressWarnings("NullableProblems") Closure closure) { Matcher matcher = versionPattern.matcher(getKonanVersion());
Task result = super.configure(closure); if (!matcher.matches()) {
throw new IllegalArgumentException("Cannot parse Kotlin/Native version: $konanVersion");
}
doFirst(task -> { int major = Integer.parseInt(matcher.group(1));
Matcher matcher = versionPattern.matcher(getKonanVersion()); int minor = Integer.parseInt(matcher.group(2));
if (!matcher.matches()) {
throw new IllegalArgumentException("Cannot parse Kotlin/Native version: $konanVersion");
}
int major = Integer.parseInt(matcher.group(1)); String maintenanceStr = matcher.group(3);
int minor = Integer.parseInt(matcher.group(2)); int maintenance = maintenanceStr != null ? Integer.parseInt(maintenanceStr) : 0;
String maintenanceStr = matcher.group(3); String milestoneStr = matcher.group(4);
int maintenance = maintenanceStr != null ? Integer.parseInt(maintenanceStr) : 0; int milestone = milestoneStr != null ? Integer.parseInt(milestoneStr) : -1;
String milestoneStr = matcher.group(4); String buildNumber = getBuildNumber();
int milestone = milestoneStr != null ? Integer.parseInt(milestoneStr) : -1; 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(); try (PrintWriter printWriter = new PrintWriter(getVersionFile())) {
getProject().getLogger().info("BUILD_NUMBER: " + getBuildNumber()); printWriter.println(
int build = -1; "package org.jetbrains.kotlin.konan\n" +
if (buildNumber != null) { "\n" +
String[] buildNumberSplit = buildNumber.split("-"); "internal val currentCompilerVersion: CompilerVersion =\n" +
build = Integer.parseInt(buildNumberSplit[buildNumberSplit.length - 1]); // //7-dev-buildcount " CompilerVersionImpl(\n" +
} getMeta() + ", " + major + ", " + minor + ",\n" +
maintenance + ", " + milestone + ", "+ build + ")\n" +
"\n" +
try (PrintWriter printWriter = new PrintWriter(getVersionFile())) { "val CompilerVersion.Companion.CURRENT: CompilerVersion\n" +
printWriter.println( " get() = currentCompilerVersion"
"package org.jetbrains.kotlin.konan\n" + );
"\n" + } catch (FileNotFoundException e) {
"internal val currentCompilerVersion: CompilerVersion =\n" + throw new IllegalStateException(e);
" 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;
} }
} }
+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"