[Gradle] Moved downloading konan dependencies from compiler to Gradle
^KT-65823 Fixed
This commit is contained in:
committed by
Space Team
parent
8ae6e98295
commit
f525d03e67
+6
-4
@@ -22,9 +22,6 @@ import org.jetbrains.kotlin.build.report.metrics.GradleBuildTime
|
||||
import org.jetbrains.kotlin.commonizer.SharedCommonizerTarget
|
||||
import org.jetbrains.kotlin.commonizer.konanTargets
|
||||
import org.jetbrains.kotlin.compilerRunner.*
|
||||
import org.jetbrains.kotlin.compilerRunner.GradleCliCommonizer
|
||||
import org.jetbrains.kotlin.compilerRunner.KotlinNativeCommonizerToolRunner
|
||||
import org.jetbrains.kotlin.compilerRunner.konanHome
|
||||
import org.jetbrains.kotlin.gradle.dsl.multiplatformExtensionOrNull
|
||||
import org.jetbrains.kotlin.gradle.plugin.PropertiesProvider.Companion.kotlinPropertiesProvider
|
||||
import org.jetbrains.kotlin.gradle.plugin.getKotlinPluginVersion
|
||||
@@ -104,7 +101,12 @@ internal abstract class NativeDistributionCommonizerTask
|
||||
|
||||
@get:Nested
|
||||
internal val kotlinNativeProvider: Provider<KotlinNativeProvider> = project.provider {
|
||||
KotlinNativeProvider(project, commonizerTargets.flatMap { target -> target.konanTargets }.toSet(), kotlinNativeBundleBuildService)
|
||||
KotlinNativeProvider(
|
||||
project,
|
||||
commonizerTargets.flatMap { target -> target.konanTargets }.toSet(),
|
||||
kotlinNativeBundleBuildService,
|
||||
enableDependenciesDownloading = false
|
||||
)
|
||||
}
|
||||
|
||||
@TaskAction
|
||||
|
||||
+31
@@ -17,10 +17,14 @@ import org.jetbrains.kotlin.compilerRunner.konanHome
|
||||
import org.jetbrains.kotlin.compilerRunner.kotlinNativeToolchainEnabled
|
||||
import org.jetbrains.kotlin.gradle.plugin.KOTLIN_NATIVE_BUNDLE_CONFIGURATION_NAME
|
||||
import org.jetbrains.kotlin.gradle.plugin.PropertiesProvider.Companion.kotlinPropertiesProvider
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.enabledOnCurrentHost
|
||||
import org.jetbrains.kotlin.gradle.utils.NativeCompilerDownloader
|
||||
import org.jetbrains.kotlin.gradle.utils.filesProvider
|
||||
import org.jetbrains.kotlin.gradle.utils.property
|
||||
import org.jetbrains.kotlin.konan.properties.KonanPropertiesLoader
|
||||
import org.jetbrains.kotlin.konan.target.Distribution
|
||||
import org.jetbrains.kotlin.konan.target.KonanTarget
|
||||
import org.jetbrains.kotlin.konan.target.loadConfigurables
|
||||
|
||||
/**
|
||||
* This is a nested provider for all native tasks
|
||||
@@ -29,6 +33,7 @@ internal class KotlinNativeProvider(
|
||||
project: Project,
|
||||
konanTargets: Set<KonanTarget>,
|
||||
kotlinNativeBundleBuildService: Provider<KotlinNativeBundleBuildService>,
|
||||
enableDependenciesDownloading: Boolean = true,
|
||||
) {
|
||||
constructor(
|
||||
project: Project,
|
||||
@@ -65,6 +70,32 @@ internal class KotlinNativeProvider(
|
||||
kotlinNativeVersion
|
||||
}
|
||||
|
||||
@get:Input
|
||||
val kotlinNativeDependencies: Provider<Set<String>> =
|
||||
kotlinNativeBundleVersion
|
||||
.zip(bundleDirectory) { _, bundleDir ->
|
||||
val requiredDependencies = mutableSetOf<String>()
|
||||
if (project.kotlinNativeToolchainEnabled && enableDependenciesDownloading) {
|
||||
val distribution = Distribution(bundleDir.asFile.absolutePath, konanDataDir = konanDataDir.orNull)
|
||||
konanTargets.forEach { konanTarget ->
|
||||
if (konanTarget.enabledOnCurrentHost) {
|
||||
val konanPropertiesLoader = loadConfigurables(
|
||||
konanTarget,
|
||||
distribution.properties,
|
||||
distribution.dependenciesDir,
|
||||
progressCallback = { url, currentBytes, totalBytes ->
|
||||
project.logger.info("Downloading dependency for Kotlin Native: $url (${currentBytes}/${totalBytes}). ")
|
||||
}
|
||||
) as KonanPropertiesLoader
|
||||
|
||||
requiredDependencies.addAll(konanPropertiesLoader.dependencies)
|
||||
konanPropertiesLoader.downloadDependencies()
|
||||
}
|
||||
}
|
||||
}
|
||||
requiredDependencies
|
||||
}
|
||||
|
||||
// Gradle tries to evaluate this val during configuration cache,
|
||||
// which lead to resolving configuration, even if k/n bundle is in konan home directory.
|
||||
@Transient
|
||||
|
||||
Reference in New Issue
Block a user