Introduce environment variable to .konan parent dir
This commit is contained in:
+1
-1
@@ -37,7 +37,7 @@ fun defaultResolver(repositories: List<String>, target: KonanTarget, distributio
|
|||||||
repositories,
|
repositories,
|
||||||
target,
|
target,
|
||||||
distribution.klib,
|
distribution.klib,
|
||||||
distribution.localKonanDir
|
distribution.localKonanDir.absolutePath
|
||||||
)
|
)
|
||||||
|
|
||||||
fun SearchPathResolver.resolveImmediateLibraries(libraryNames: List<String>,
|
fun SearchPathResolver.resolveImmediateLibraries(libraryNames: List<String>,
|
||||||
|
|||||||
Vendored
+3
-1
@@ -171,5 +171,7 @@ task update(type: Copy) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
task rmDotKonan(type: Delete) {
|
task rmDotKonan(type: Delete) {
|
||||||
delete "${System.getProperty("user.home")}/.konan"
|
def dir = System.getenv("KONAN_DATA_DIR") ?: "${System.getProperty("user.home")}/.konan"
|
||||||
|
delete dir
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -30,6 +30,7 @@ import org.jetbrains.kotlin.descriptors.impl.ModuleDescriptorImpl
|
|||||||
import org.jetbrains.kotlin.konan.file.File
|
import org.jetbrains.kotlin.konan.file.File
|
||||||
import org.jetbrains.kotlin.konan.target.Distribution
|
import org.jetbrains.kotlin.konan.target.Distribution
|
||||||
import org.jetbrains.kotlin.konan.target.PlatformManager
|
import org.jetbrains.kotlin.konan.target.PlatformManager
|
||||||
|
import org.jetbrains.kotlin.konan.util.DependencyProcessor
|
||||||
import org.jetbrains.kotlin.metadata.KonanLinkData
|
import org.jetbrains.kotlin.metadata.KonanLinkData
|
||||||
import java.lang.System.out
|
import java.lang.System.out
|
||||||
import kotlin.system.exitProcess
|
import kotlin.system.exitProcess
|
||||||
@@ -84,8 +85,7 @@ fun error(text: String) {
|
|||||||
exitProcess(1)
|
exitProcess(1)
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO: Get rid of the hardcoded path.
|
val defaultRepository = File(DependencyProcessor.localKonanDir.resolve("klib").absolutePath)
|
||||||
val defaultRepository = File(File.userHome, ".konan/klib")
|
|
||||||
|
|
||||||
open class ModuleDeserializer(val library: ByteArray) {
|
open class ModuleDeserializer(val library: ByteArray) {
|
||||||
protected val moduleHeader: KonanLinkData.LinkDataLibrary
|
protected val moduleHeader: KonanLinkData.LinkDataLibrary
|
||||||
|
|||||||
@@ -26,7 +26,7 @@ class Distribution(
|
|||||||
private val konanHomeOverride: String? = null,
|
private val konanHomeOverride: String? = null,
|
||||||
private val runtimeFileOverride: String? = null) {
|
private val runtimeFileOverride: String? = null) {
|
||||||
|
|
||||||
val localKonanDir = "${File.userHome}/.konan"
|
val localKonanDir = DependencyProcessor.localKonanDir
|
||||||
|
|
||||||
private fun findKonanHome(): String {
|
private fun findKonanHome(): String {
|
||||||
if (konanHomeOverride != null) return konanHomeOverride
|
if (konanHomeOverride != null) return konanHomeOverride
|
||||||
@@ -52,7 +52,7 @@ class Distribution(
|
|||||||
propertyFilesFromConfigDir(konanSubdir, genericName)
|
propertyFilesFromConfigDir(konanSubdir, genericName)
|
||||||
|
|
||||||
private fun userPropertyFiles(genericName: String) =
|
private fun userPropertyFiles(genericName: String) =
|
||||||
propertyFilesFromConfigDir(localKonanDir, genericName)
|
propertyFilesFromConfigDir(localKonanDir.absolutePath, genericName)
|
||||||
|
|
||||||
fun additionalPropertyFiles(genericName: String) =
|
fun additionalPropertyFiles(genericName: String) =
|
||||||
preconfiguredPropertyFiles(genericName) + userPropertyFiles(genericName)
|
preconfiguredPropertyFiles(genericName) + userPropertyFiles(genericName)
|
||||||
|
|||||||
@@ -45,9 +45,6 @@ private val Properties.downloadingAttemptIntervalMs : Long
|
|||||||
get() = getProperty("downloadingAttemptPauseMs")?.toLong()
|
get() = getProperty("downloadingAttemptPauseMs")?.toLong()
|
||||||
?: DependencyDownloader.DEFAULT_ATTEMPT_INTERVAL_MS
|
?: DependencyDownloader.DEFAULT_ATTEMPT_INTERVAL_MS
|
||||||
|
|
||||||
private val Properties.homeDependencyCache : String
|
|
||||||
get() = getProperty("homeDependencyCache") ?: DependencyProcessor.DEFAULT_HOME_DEPENDENCY_CACHE
|
|
||||||
|
|
||||||
private fun Properties.findCandidates(dependencies: List<String>): Map<String, List<DependencySource>> {
|
private fun Properties.findCandidates(dependencies: List<String>): Map<String, List<DependencySource>> {
|
||||||
val dependencyProfiles = this.propertyList("dependencyProfiles")
|
val dependencyProfiles = this.propertyList("dependencyProfiles")
|
||||||
return dependencies.map { dependency ->
|
return dependencies.map { dependency ->
|
||||||
@@ -73,7 +70,6 @@ private val KonanPropertiesLoader.dependenciesUrl : String get() = pr
|
|||||||
private val KonanPropertiesLoader.airplaneMode : Boolean get() = properties.airplaneMode
|
private val KonanPropertiesLoader.airplaneMode : Boolean get() = properties.airplaneMode
|
||||||
private val KonanPropertiesLoader.downloadingAttempts : Int get() = properties.downloadingAttempts
|
private val KonanPropertiesLoader.downloadingAttempts : Int get() = properties.downloadingAttempts
|
||||||
private val KonanPropertiesLoader.downloadingAttemptIntervalMs : Long get() = properties.downloadingAttemptIntervalMs
|
private val KonanPropertiesLoader.downloadingAttemptIntervalMs : Long get() = properties.downloadingAttemptIntervalMs
|
||||||
private val KonanPropertiesLoader.homeDependencyCache : String get() = properties.homeDependencyCache
|
|
||||||
|
|
||||||
sealed class DependencySource {
|
sealed class DependencySource {
|
||||||
data class Local(val path: File) : DependencySource()
|
data class Local(val path: File) : DependencySource()
|
||||||
@@ -91,7 +87,7 @@ sealed class DependencySource {
|
|||||||
class DependencyProcessor(dependenciesRoot: File,
|
class DependencyProcessor(dependenciesRoot: File,
|
||||||
val dependenciesUrl: String,
|
val dependenciesUrl: String,
|
||||||
dependencyToCandidates: Map<String, List<DependencySource>>,
|
dependencyToCandidates: Map<String, List<DependencySource>>,
|
||||||
homeDependencyCache: String = DEFAULT_HOME_DEPENDENCY_CACHE,
|
homeDependencyCache: File = defaultDependencyCacheDir,
|
||||||
val airplaneMode: Boolean = false,
|
val airplaneMode: Boolean = false,
|
||||||
maxAttempts: Int = DependencyDownloader.DEFAULT_MAX_ATTEMPTS,
|
maxAttempts: Int = DependencyDownloader.DEFAULT_MAX_ATTEMPTS,
|
||||||
attemptIntervalMs: Long = DependencyDownloader.DEFAULT_ATTEMPT_INTERVAL_MS,
|
attemptIntervalMs: Long = DependencyDownloader.DEFAULT_ATTEMPT_INTERVAL_MS,
|
||||||
@@ -99,9 +95,7 @@ class DependencyProcessor(dependenciesRoot: File,
|
|||||||
val keepUnstable: Boolean = true) {
|
val keepUnstable: Boolean = true) {
|
||||||
|
|
||||||
val dependenciesDirectory = dependenciesRoot.apply { mkdirs() }
|
val dependenciesDirectory = dependenciesRoot.apply { mkdirs() }
|
||||||
val cacheDirectory = System.getProperty("user.home")?.let {
|
val cacheDirectory = homeDependencyCache.apply { mkdirs() }
|
||||||
Paths.get(it).resolve(homeDependencyCache).toFile().apply { mkdirs() }
|
|
||||||
} ?: dependenciesRoot
|
|
||||||
|
|
||||||
val lockFile = File(cacheDirectory, ".lock").apply { if (!exists()) createNewFile() }
|
val lockFile = File(cacheDirectory, ".lock").apply { if (!exists()) createNewFile() }
|
||||||
|
|
||||||
@@ -212,11 +206,16 @@ class DependencyProcessor(dependenciesRoot: File,
|
|||||||
companion object {
|
companion object {
|
||||||
private val lock = ReentrantLock()
|
private val lock = ReentrantLock()
|
||||||
|
|
||||||
const val DEFAULT_HOME_DEPENDENCY_CACHE = ".konan/cache"
|
val localKonanDir: File by lazy {
|
||||||
|
File(System.getenv("KONAN_DATA_DIR") ?: (System.getProperty("user.home") + File.separator + ".konan"))
|
||||||
|
}
|
||||||
|
|
||||||
@JvmStatic
|
@JvmStatic
|
||||||
val defaultDependenciesRoot
|
val defaultDependenciesRoot: File
|
||||||
get() = Paths.get(System.getProperty("user.home")).resolve(".konan/dependencies").toFile()
|
get() = localKonanDir.resolve("dependencies")
|
||||||
|
|
||||||
|
val defaultDependencyCacheDir: File
|
||||||
|
get() = localKonanDir.resolve("cache")
|
||||||
}
|
}
|
||||||
|
|
||||||
private val resolvedDependencies = dependencyToCandidates.map { (dependency, candidates) ->
|
private val resolvedDependencies = dependencyToCandidates.map { (dependency, candidates) ->
|
||||||
|
|||||||
+2
-1
@@ -26,6 +26,7 @@ import org.jetbrains.kotlin.gradle.plugin.tasks.*
|
|||||||
import org.jetbrains.kotlin.konan.target.HostManager
|
import org.jetbrains.kotlin.konan.target.HostManager
|
||||||
import org.jetbrains.kotlin.konan.target.KonanTarget
|
import org.jetbrains.kotlin.konan.target.KonanTarget
|
||||||
import org.jetbrains.kotlin.konan.target.customerDistribution
|
import org.jetbrains.kotlin.konan.target.customerDistribution
|
||||||
|
import org.jetbrains.kotlin.konan.util.*
|
||||||
import java.io.File
|
import java.io.File
|
||||||
import java.util.*
|
import java.util.*
|
||||||
import javax.inject.Inject
|
import javax.inject.Inject
|
||||||
@@ -129,7 +130,7 @@ internal fun Project.konanCompilerName(): String =
|
|||||||
"kotlin-native-${project.simpleOsName}-${this.konanVersion}"
|
"kotlin-native-${project.simpleOsName}-${this.konanVersion}"
|
||||||
|
|
||||||
internal fun Project.konanCompilerDownloadDir(): String =
|
internal fun Project.konanCompilerDownloadDir(): String =
|
||||||
KonanCompilerDownloadTask.KONAN_PARENT_DIR + "/" + project.konanCompilerName()
|
DependencyProcessor.localKonanDir.resolve(project.konanCompilerName()).absolutePath
|
||||||
|
|
||||||
// region Useful extensions and functions ---------------------------------------
|
// region Useful extensions and functions ---------------------------------------
|
||||||
|
|
||||||
|
|||||||
+3
-4
@@ -31,8 +31,6 @@ open class KonanCompilerDownloadTask : DefaultTask() {
|
|||||||
|
|
||||||
internal companion object {
|
internal companion object {
|
||||||
internal const val BASE_DOWNLOAD_URL = "https://download.jetbrains.com/kotlin/native/builds"
|
internal const val BASE_DOWNLOAD_URL = "https://download.jetbrains.com/kotlin/native/builds"
|
||||||
|
|
||||||
internal val KONAN_PARENT_DIR = "${System.getProperty("user.home")}/.konan"
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -61,9 +59,10 @@ open class KonanCompilerDownloadTask : DefaultTask() {
|
|||||||
append(project.simpleOsName)
|
append(project.simpleOsName)
|
||||||
}
|
}
|
||||||
val konanCompiler = project.konanCompilerName()
|
val konanCompiler = project.konanCompilerName()
|
||||||
logger.info("Downloading Kotlin/Native compiler from $downloadUrlDirectory/$konanCompiler into $KONAN_PARENT_DIR")
|
val parentDir = DependencyProcessor.localKonanDir
|
||||||
|
logger.info("Downloading Kotlin/Native compiler from $downloadUrlDirectory/$konanCompiler into $parentDir")
|
||||||
DependencyProcessor(
|
DependencyProcessor(
|
||||||
File(KONAN_PARENT_DIR),
|
parentDir,
|
||||||
downloadUrlDirectory,
|
downloadUrlDirectory,
|
||||||
mapOf(konanCompiler to listOf(DependencySource.Remote.Public))
|
mapOf(konanCompiler to listOf(DependencySource.Remote.Public))
|
||||||
).run()
|
).run()
|
||||||
|
|||||||
Reference in New Issue
Block a user