Fix dependency downloading

This commit is contained in:
Ilya Matveev
2019-02-21 20:53:43 +03:00
committed by Ilya Matveev
parent 33976e0172
commit d393fc4857
+12 -62
View File
@@ -26,69 +26,23 @@ buildscript {
} }
} }
abstract class NativeDep extends DefaultTask { /**
* Downloads dependencies from the given URL into the given directory.
* The set of dependencies is determined by konanPropertiesLoader.
*/
class NativeDep extends DefaultTask {
static final String baseUrl = "https://cache-redirector.jetbrains.com/download.jetbrains.com/kotlin/native" static final String baseUrl = "https://cache-redirector.jetbrains.com/download.jetbrains.com/kotlin/native"
@Input KonanPropertiesLoader konanPropertiesLoader = null
abstract String getFileName()
protected String getUrl() { final File getBaseOutDir() {
return "$baseUrl/$fileName"
}
protected File getBaseOutDir() {
final File res = project.rootProject.ext.dependenciesDir final File res = project.rootProject.ext.dependenciesDir
res.mkdirs() res.mkdirs()
return res return res
} }
protected File download() {
File result = new File(baseOutDir, fileName)
if (!result.exists())
ant.get(src: url, dest: result, usetimestamp: true)
return result
}
}
class TgzNativeDep extends NativeDep {
String baseName
@Override
String getFileName() {
return "${baseName}.tar.gz"
}
@OutputDirectory
File getOutputDir() {
return new File(baseOutDir, baseName)
}
@TaskAction @TaskAction
public void downloadAndExtract() { void downloadAndExtract() {
File archived = this.download()
try {
// Builtin Gradle unpacking tools seem to unable to handle symlinks;
// Use external "tar" executable as workaround:
project.exec {
executable "tar"
workingDir baseOutDir
args "xf", archived
}
} catch (Throwable e) {
e.printStackTrace()
project.delete(outputDir)
throw e
}
}
}
class HelperNativeDep extends TgzNativeDep {
KonanPropertiesLoader konanPropertiesLoader = null
@TaskAction
public void downloadAndExtract() {
def downloader = new DependencyProcessor(baseOutDir, konanPropertiesLoader, baseUrl, false) def downloader = new DependencyProcessor(baseOutDir, konanPropertiesLoader, baseUrl, false)
downloader.showInfo = false downloader.showInfo = false
downloader.run() downloader.run()
@@ -128,13 +82,9 @@ def platformManager = rootProject.ext.platformManager
platformManager.enabled.each { target -> platformManager.enabled.each { target ->
def loader = platformManager.loader(target) def loader = platformManager.loader(target)
loader.dependencies.each { dependency ->
if (tasks.findByName(dependency) == null) { task "${target}Dependencies"(type: NativeDep) {
task "${dependency}"(type: HelperNativeDep) { konanPropertiesLoader = loader
baseName = dependency
it.konanPropertiesLoader = loader
}
}
} }
// Also resolves all dependencies: // Also resolves all dependencies:
@@ -142,7 +92,7 @@ platformManager.enabled.each { target ->
project.rootProject.ext.dependenciesDir, project.rootProject.ext.dependenciesDir,
loader.properties, loader.properties,
loader.dependencies, loader.dependencies,
HelperNativeDep.baseUrl, NativeDep.baseUrl,
false false
) )