[K/N][gradle] Add kotlin.native.distribution.mavenDownloadUrl property

Add a separate property to specify maven repository to download K/N
This commit is contained in:
Pavel Punegov
2022-09-28 17:27:53 +02:00
committed by Space Team
parent 82d28b6dbf
commit afeeba51ec
4 changed files with 16 additions and 9 deletions
@@ -49,7 +49,7 @@ class NativeDownloadIT : BaseGradleIT() {
with(transformNativeTestProjectWithPluginDsl("native-download-maven")) { with(transformNativeTestProjectWithPluginDsl("native-download-maven")) {
gradleProperties().appendText( gradleProperties().appendText(
""" """
kotlin.native.distribution.baseDownloadUrl=${mavenUrl()} kotlin.native.distribution.mavenDownloadUrl=${mavenUrl()}
kotlin.native.distribution.downloadFromMaven=true kotlin.native.distribution.downloadFromMaven=true
""".trimIndent() """.trimIndent()
) )
@@ -66,7 +66,7 @@ class NativeDownloadIT : BaseGradleIT() {
with(transformNativeTestProjectWithPluginDsl("native-download-maven")) { with(transformNativeTestProjectWithPluginDsl("native-download-maven")) {
gradleProperties().appendText( gradleProperties().appendText(
""" """
kotlin.native.distribution.baseDownloadUrl=${mavenUrl()} kotlin.native.distribution.mavenDownloadUrl=${mavenUrl()}
kotlin.native.distribution.downloadFromMaven=true kotlin.native.distribution.downloadFromMaven=true
""".trimIndent() """.trimIndent()
) )
@@ -6,7 +6,6 @@ plugins {
repositories { repositories {
mavenLocal() mavenLocal()
mavenCentral()
} }
kotlin { kotlin {
@@ -277,11 +277,19 @@ internal class PropertiesProvider private constructor(private val project: Proje
val nativeBaseDownloadUrl: String val nativeBaseDownloadUrl: String
get() = this.property("kotlin.native.distribution.baseDownloadUrl") ?: NativeCompilerDownloader.BASE_DOWNLOAD_URL get() = this.property("kotlin.native.distribution.baseDownloadUrl") ?: NativeCompilerDownloader.BASE_DOWNLOAD_URL
/**
* Allows setting Kotlin/Native maven url to download bundles from.
*
* This path will be added as a maven repository to the project.
*/
val nativeMavenDownloadUrl: String?
get() = this.property("kotlin.native.distribution.mavenDownloadUrl")
/** /**
* Allows downloading Kotlin/Native distribution with maven. * Allows downloading Kotlin/Native distribution with maven.
* *
* Makes downloader search for bundles in maven repositories. * Makes downloader search for bundles in maven repositories.
* Property `kotlin.native.distribution.baseDownloadUrl` allows to specify custom maven url. * Property `kotlin.native.distribution.mavenDownloadUrl` allows to specify custom maven url.
*/ */
val nativeDownloadFromMaven: Boolean val nativeDownloadFromMaven: Boolean
get() = this.booleanProperty("kotlin.native.distribution.downloadFromMaven") ?: false get() = this.booleanProperty("kotlin.native.distribution.downloadFromMaven") ?: false
@@ -123,7 +123,7 @@ class NativeCompilerDownloader(
private fun downloadAndExtract() { private fun downloadAndExtract() {
val repoUrl = if (kotlinProperties.nativeDownloadFromMaven) { val repoUrl = if (kotlinProperties.nativeDownloadFromMaven) {
kotlinProperties.nativeBaseDownloadUrl.takeIf { it != BASE_DOWNLOAD_URL } kotlinProperties.nativeMavenDownloadUrl
} else { } else {
buildString { buildString {
append("${kotlinProperties.nativeBaseDownloadUrl}/") append("${kotlinProperties.nativeBaseDownloadUrl}/")
@@ -132,7 +132,6 @@ class NativeCompilerDownloader(
append(simpleOsName) append(simpleOsName)
} }
} }
val dependencyUrl = if (repoUrl != null) "$repoUrl/$dependencyFileName" else "maven://$dependencyFileName"
val repo = if (repoUrl != null) { val repo = if (repoUrl != null) {
if (kotlinProperties.nativeDownloadFromMaven) { if (kotlinProperties.nativeDownloadFromMaven) {
@@ -166,12 +165,13 @@ class NativeCompilerDownloader(
logger.lifecycle("\nPlease wait while Kotlin/Native compiler $compilerVersion is being installed.") logger.lifecycle("\nPlease wait while Kotlin/Native compiler $compilerVersion is being installed.")
if (!kotlinProperties.nativeDownloadFromMaven) { if (!kotlinProperties.nativeDownloadFromMaven) {
val suffix = project.probeRemoteFileLength(dependencyUrl, probingTimeoutMs = 200) val dependencyUrl = "$repoUrl/$dependencyFileName"
val lengthSuffix = project.probeRemoteFileLength(dependencyUrl, probingTimeoutMs = 200)
?.let { " (${formatContentLength(it)})" } ?.let { " (${formatContentLength(it)})" }
.orEmpty() .orEmpty()
logger.lifecycle("Download $dependencyUrl$suffix") logger.lifecycle("Download $dependencyUrl$lengthSuffix")
} }
val archive = logger.lifecycleWithDuration("Download $dependencyUrl finished,") { val archive = logger.lifecycleWithDuration("Download $dependencyFileName finished,") {
configuration.files.single() configuration.files.single()
} }