[K/N] Make NativeDependenciesDownloader compatible with CC ^KTI-1553
This commit is contained in:
committed by
Space Team
parent
e4acb396ba
commit
b1f59e5f0d
+35
-3
@@ -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<DependencyProcessor>
|
||||
abstract val target: Property<KonanTarget>
|
||||
|
||||
/**
|
||||
* Root directory where to place all dependencies.
|
||||
*/
|
||||
@get:Internal
|
||||
abstract val dependenciesDirectory: DirectoryProperty
|
||||
|
||||
/**
|
||||
* Dependency repository.
|
||||
*/
|
||||
@get:Internal
|
||||
abstract val repositoryURL: Property<String>
|
||||
|
||||
private val platformManager = project.extensions.getByType<PlatformManager>()
|
||||
|
||||
@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()
|
||||
}
|
||||
}
|
||||
+5
-6
@@ -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<NativeDependenciesDownloader>("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 {
|
||||
|
||||
Reference in New Issue
Block a user