fixup! [K/N] Use fingerprint for non-default stdlib cache
diff --git a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/CacheSupport.kt b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/CacheSupport.kt
index 51f5f1a..168d378 100644
--- a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/CacheSupport.kt
+++ b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/CacheSupport.kt
@@ -125,6 +125,7 @@
allLibraries = allLibraries,
explicitCaches = if (ignoreCachedLibraries) emptyMap() else explicitCaches,
implicitCacheDirectories = if (ignoreCachedLibraries) emptyList() else implicitCacheDirectories,
+ systemCacheDirectory = systemCacheDirectory,
autoCacheDirectory = autoCacheDirectory,
autoCacheableFrom = if (ignoreCachedLibraries) emptyList() else autoCacheableFrom,
distribution = distribution,
diff --git a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/CachedLibraries.kt b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/CachedLibraries.kt
index 04ab54a..f694edb 100644
--- a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/CachedLibraries.kt
+++ b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/CachedLibraries.kt
@@ -28,10 +28,11 @@
allLibraries: List<KotlinLibrary>,
explicitCaches: Map<KotlinLibrary, String>,
implicitCacheDirectories: List<File>,
- autoCacheDirectory: File,
- autoCacheableFrom: List<File>,
- distribution: Distribution,
- runtimeNativeLibraries: List<String>,
+ private val systemCacheDirectory: File,
+ private val autoCacheDirectory: File,
+ private val autoCacheableFrom: List<File>,
+ private val distribution: Distribution,
+ private val runtimeNativeLibraries: List<String>,
) {
enum class Kind { DYNAMIC, STATIC, HEADER }
@@ -178,6 +179,17 @@
.mapNotNull { it?.trySelectCacheFor(this) }
.firstOrNull()
+ private fun KotlinLibrary.tryAutoCache(): Cache? {
+ val libraryPath = libraryFile.canonicalPath
+ val baseCacheDirectory = when {
+ isNativeStdlib || isDefault -> systemCacheDirectory
+ autoCacheableFrom.any { libraryPath.startsWith(it.canonicalPath) } -> autoCacheDirectory
+ else -> return null
+ }
+ val dir = computeLibraryCacheDirectory(baseCacheDirectory, this, uniqueNameToLibrary, uniqueNameToHash, distribution, runtimeNativeLibraries)
+ return trySelectCacheAt { cacheName -> dir.child(cacheName) }
+ }
+
private val allCaches: Map<KotlinLibrary, Cache> = allLibraries.mapNotNull { library ->
val explicitPath = explicitCaches[library]
@@ -185,13 +197,8 @@
File(explicitPath).trySelectCacheFor(library)
?: error("No cache found for library ${library.libraryName} at $explicitPath")
} else {
- val libraryPath = library.libraryFile.canonicalPath
library.trySelectCacheAt { cacheNameToImplicitDirMapping[it] }
- ?: autoCacheDirectory.takeIf { autoCacheableFrom.any { libraryPath.startsWith(it.canonicalPath) } }
- ?.let {
- val dir = computeLibraryCacheDirectory(it, library, uniqueNameToLibrary, uniqueNameToHash, distribution, runtimeNativeLibraries)
- library.trySelectCacheAt { cacheName -> dir.child(cacheName) }
- }
+ ?: library.tryAutoCache()
}
cache?.let {