From 044cced42bdb4171978cd893c3613e032d8ba833 Mon Sep 17 00:00:00 2001 From: Ilya Matveev Date: Fri, 24 Nov 2017 16:54:14 +0700 Subject: [PATCH] dependencies: Redownload unstable dependencies --- dependencies/build.gradle | 4 +++ .../kotlin/konan/util/DependencyProcessor.kt | 34 ++++++++++++++----- 2 files changed, 29 insertions(+), 9 deletions(-) diff --git a/dependencies/build.gradle b/dependencies/build.gradle index 91528b7b5e2..d94ea96d39c 100644 --- a/dependencies/build.gradle +++ b/dependencies/build.gradle @@ -268,3 +268,7 @@ TargetManager.enabled.each { target -> task update(type: Copy) { dependsOn tasks.withType(NativeDep) } + +task rmDotKonan(type: Delete) { + delete "${System.getProperty("user.home")}/.konan" +} diff --git a/shared/src/main/kotlin/org/jetbrains/kotlin/konan/util/DependencyProcessor.kt b/shared/src/main/kotlin/org/jetbrains/kotlin/konan/util/DependencyProcessor.kt index 7988bb7ad3e..f9ef1a6c0bd 100644 --- a/shared/src/main/kotlin/org/jetbrains/kotlin/konan/util/DependencyProcessor.kt +++ b/shared/src/main/kotlin/org/jetbrains/kotlin/konan/util/DependencyProcessor.kt @@ -109,7 +109,14 @@ class DependencyProcessor(dependenciesRoot: File, fun contains(dependency: String) = dependencies.contains(dependency) fun add(dependency: String) = dependencies.add(dependency) - fun addWithSave(dependency: String) { + fun remove(dependency: String) = dependencies.remove(dependency) + + fun removeAndSave(dependency: String) { + remove(dependency) + save() + } + + fun addAndSave(dependency: String) { add(dependency) save() } @@ -129,21 +136,30 @@ class DependencyProcessor(dependenciesRoot: File, val depDir = File(dependenciesDirectory, dependency) val depName = depDir.name + val fileName = "$depName.$archiveExtension" + val archive = cacheDirectory.resolve(fileName) + val url = URL("$dependenciesUrl/$fileName") + val extractedDependencies = DependencyFile(dependenciesDirectory, ".extracted") if (extractedDependencies.contains(depName) && - depDir.exists() && - depDir.isDirectory && - depDir.list().isNotEmpty()) { - return + depDir.exists() && + depDir.isDirectory && + depDir.list().isNotEmpty()) { + + if (depDir.list().contains(".unstable")) { + // The downloaded version of the dependency is unstable -> redownload it. + depDir.deleteRecursively() + archive.delete() + extractedDependencies.removeAndSave(dependency) + } else { + return + } } if (showInfo && !isInfoShown) { println("Downloading native dependencies (LLVM, sysroot etc). This is a one-time action performed only on the first run of the compiler.") isInfoShown = true } - val fileName = "$depName.$archiveExtension" - val archive = cacheDirectory.resolve(fileName) - val url = URL("$dependenciesUrl/$fileName") if (!archive.exists()) { if (airplaneMode) { @@ -156,7 +172,7 @@ class DependencyProcessor(dependenciesRoot: File, } println("Extracting dependency: $archive into $dependenciesDirectory") extractor.extract(archive, dependenciesDirectory) - extractedDependencies.addWithSave(depName) + extractedDependencies.addAndSave(depName) } companion object {