diff --git a/kotlin-native/build-tools/src/main/kotlin/org/jetbrains/kotlin/dependencies/NativeDependenciesDownloader.kt b/kotlin-native/build-tools/src/main/kotlin/org/jetbrains/kotlin/dependencies/NativeDependenciesDownloader.kt index 3d09abc9a7d..6418749bcb0 100644 --- a/kotlin-native/build-tools/src/main/kotlin/org/jetbrains/kotlin/dependencies/NativeDependenciesDownloader.kt +++ b/kotlin-native/build-tools/src/main/kotlin/org/jetbrains/kotlin/dependencies/NativeDependenciesDownloader.kt @@ -6,10 +6,16 @@ package org.jetbrains.kotlin.dependencies import org.gradle.api.DefaultTask +import org.gradle.api.file.DirectoryProperty +import org.gradle.api.logging.LogLevel import org.gradle.api.provider.Property import org.gradle.api.tasks.Internal import org.gradle.api.tasks.TaskAction import org.gradle.api.tasks.UntrackedTask +import org.gradle.kotlin.dsl.getByType +import org.jetbrains.kotlin.konan.properties.KonanPropertiesLoader +import org.jetbrains.kotlin.konan.target.KonanTarget +import org.jetbrains.kotlin.konan.target.PlatformManager import org.jetbrains.kotlin.konan.util.DependencyProcessor /** @@ -20,13 +26,39 @@ import org.jetbrains.kotlin.konan.util.DependencyProcessor @UntrackedTask(because = "Output is large and work avoidance is performed in DependencyProcessor anyway") abstract class NativeDependenciesDownloader : DefaultTask() { /** - * [DependencyProcessor] that will perform downloading + * Target for which to download dependency. */ @get:Internal - abstract val dependencyProcessor: Property + abstract val target: Property + + /** + * Root directory where to place all dependencies. + */ + @get:Internal + abstract val dependenciesDirectory: DirectoryProperty + + /** + * Dependency repository. + */ + @get:Internal + abstract val repositoryURL: Property + + private val platformManager = project.extensions.getByType() @TaskAction fun downloadAndExtract() { - dependencyProcessor.get().run() + val loader = platformManager.loader(target.get()) + check(loader is KonanPropertiesLoader) + val dependencyProcessor = + DependencyProcessor( + dependenciesDirectory.asFile.get(), + loader, + repositoryURL.get(), + keepUnstable = false) { url, currentBytes, totalBytes -> + // TODO: Consider using logger. + print("\nDownloading dependency for ${target.get()}: $url (${currentBytes}/${totalBytes}). ") + } + dependencyProcessor.showInfo = logger.isEnabled(LogLevel.INFO) + dependencyProcessor.run() } } \ No newline at end of file diff --git a/kotlin-native/build-tools/src/main/kotlin/org/jetbrains/kotlin/dependencies/NativeDependenciesDownloaderPlugin.kt b/kotlin-native/build-tools/src/main/kotlin/org/jetbrains/kotlin/dependencies/NativeDependenciesDownloaderPlugin.kt index ffd473335b7..03079a2ee11 100644 --- a/kotlin-native/build-tools/src/main/kotlin/org/jetbrains/kotlin/dependencies/NativeDependenciesDownloaderPlugin.kt +++ b/kotlin-native/build-tools/src/main/kotlin/org/jetbrains/kotlin/dependencies/NativeDependenciesDownloaderPlugin.kt @@ -103,11 +103,8 @@ abstract class NativeDependenciesDownloaderExtension @Inject constructor(private owner.dependenciesDirectory.apply { finalizeValue() }.asFile.get(), loader, owner.repositoryURL.apply { finalizeValue() }.get(), - keepUnstable = false) { url, currentBytes, totalBytes -> - // TODO: Consider using logger. - print("\nDownloading dependency for $_target: $url (${currentBytes}/${totalBytes}). ") - }.apply { - showInfo = project.logger.isEnabled(LogLevel.INFO) + keepUnstable = false) { _, _, _ -> + error("This is used as dependency resolver only, downloading cannot be performed") } } @@ -116,7 +113,9 @@ abstract class NativeDependenciesDownloaderExtension @Inject constructor(private val task = project.tasks.register("nativeDependencies${_target.name.capitalized}") { description = "Download dependencies for $_target" group = "native dependencies" - dependencyProcessor.set(this@Target.dependencyProcessor) + target.set(this@Target.target) + dependenciesDirectory.set(owner.dependenciesDirectory) + repositoryURL.set(owner.repositoryURL) } init {