diff --git a/native/commonizer-api/build.gradle.kts b/native/commonizer-api/build.gradle.kts index 314a2b16402..ff9599ad708 100644 --- a/native/commonizer-api/build.gradle.kts +++ b/native/commonizer-api/build.gradle.kts @@ -1,5 +1,18 @@ import org.jetbrains.kotlin.gradle.utils.NativeCompilerDownloader +buildscript { + val cacheRedirectorEnabled = findProperty("cacheRedirectorEnabled")?.toString()?.toBoolean() ?: false + dependencies { + classpath("org.jetbrains.kotlin:kotlin-build-gradle-plugin:0.0.25") + } + repositories { + if (cacheRedirectorEnabled) + maven("https://cache-redirector.jetbrains.com/maven.pkg.jetbrains.space/kotlin/p/kotlin/kotlin-dependencies") + else + maven("https://maven.pkg.jetbrains.space/kotlin/p/kotlin/kotlin-dependencies") + } +} + plugins { kotlin("jvm") id("jps-compatible") @@ -26,17 +39,54 @@ sourceSets { "test" { projectDefault() } } +/** + * TODO: This version hack on migrating period K/N into repository Kotlin, in new build infrostructure zero maintance claus isn't dropped, + * so for old builds we need to keep this version to string representation till total switch on new infrostructure. + */ +val konanVersion = object: org.jetbrains.kotlin.konan.CompilerVersion by NativeCompilerDownloader.DEFAULT_KONAN_VERSION { + override fun toString(showMeta: Boolean, showBuild: Boolean) = buildString { + if (major > 1 + || minor > 5 + || maintenance > 20 + ) + return NativeCompilerDownloader.DEFAULT_KONAN_VERSION.toString(showMeta, showBuild) + append(major) + append('.') + append(minor) + if (maintenance != 0) { + append('.') + append(maintenance) + } + if (milestone != -1) { + append("-M") + append(milestone) + } + if (showMeta) { + append('-') + append(meta.metaString) + } + if (showBuild && build != -1) { + append('-') + append(build) + } + } + + override fun toString() = toString(meta != org.jetbrains.kotlin.konan.MetaVersion.RELEASE, + meta != org.jetbrains.kotlin.konan.MetaVersion.RELEASE) +} + tasks.register("downloadNativeCompiler") { doFirst { - NativeCompilerDownloader(project).downloadIfNeeded() + NativeCompilerDownloader(project, konanVersion).downloadIfNeeded() } } + projectTest(parallel = false) { dependsOn(":dist") dependsOn("downloadNativeCompiler") workingDir = projectDir - environment("KONAN_HOME", NativeCompilerDownloader(project).compilerDirectory.absolutePath) + environment("KONAN_HOME", NativeCompilerDownloader(project, konanVersion).compilerDirectory.absolutePath) } runtimeJar()