[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
|
package org.jetbrains.kotlin.dependencies
|
||||||
|
|
||||||
import org.gradle.api.DefaultTask
|
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.provider.Property
|
||||||
import org.gradle.api.tasks.Internal
|
import org.gradle.api.tasks.Internal
|
||||||
import org.gradle.api.tasks.TaskAction
|
import org.gradle.api.tasks.TaskAction
|
||||||
import org.gradle.api.tasks.UntrackedTask
|
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
|
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")
|
@UntrackedTask(because = "Output is large and work avoidance is performed in DependencyProcessor anyway")
|
||||||
abstract class NativeDependenciesDownloader : DefaultTask() {
|
abstract class NativeDependenciesDownloader : DefaultTask() {
|
||||||
/**
|
/**
|
||||||
* [DependencyProcessor] that will perform downloading
|
* Target for which to download dependency.
|
||||||
*/
|
*/
|
||||||
@get:Internal
|
@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
|
@TaskAction
|
||||||
fun downloadAndExtract() {
|
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(),
|
owner.dependenciesDirectory.apply { finalizeValue() }.asFile.get(),
|
||||||
loader,
|
loader,
|
||||||
owner.repositoryURL.apply { finalizeValue() }.get(),
|
owner.repositoryURL.apply { finalizeValue() }.get(),
|
||||||
keepUnstable = false) { url, currentBytes, totalBytes ->
|
keepUnstable = false) { _, _, _ ->
|
||||||
// TODO: Consider using logger.
|
error("This is used as dependency resolver only, downloading cannot be performed")
|
||||||
print("\nDownloading dependency for $_target: $url (${currentBytes}/${totalBytes}). ")
|
|
||||||
}.apply {
|
|
||||||
showInfo = project.logger.isEnabled(LogLevel.INFO)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -116,7 +113,9 @@ abstract class NativeDependenciesDownloaderExtension @Inject constructor(private
|
|||||||
val task = project.tasks.register<NativeDependenciesDownloader>("nativeDependencies${_target.name.capitalized}") {
|
val task = project.tasks.register<NativeDependenciesDownloader>("nativeDependencies${_target.name.capitalized}") {
|
||||||
description = "Download dependencies for $_target"
|
description = "Download dependencies for $_target"
|
||||||
group = "native dependencies"
|
group = "native dependencies"
|
||||||
dependencyProcessor.set(this@Target.dependencyProcessor)
|
target.set(this@Target.target)
|
||||||
|
dependenciesDirectory.set(owner.dependenciesDirectory)
|
||||||
|
repositoryURL.set(owner.repositoryURL)
|
||||||
}
|
}
|
||||||
|
|
||||||
init {
|
init {
|
||||||
|
|||||||
Reference in New Issue
Block a user