[native-gradle-plugin] Respected changed cache format

This commit is contained in:
Igor Chevdar
2020-06-09 16:28:36 +05:00
parent 79af726872
commit d8f5b50cd8
3 changed files with 11 additions and 8 deletions
@@ -14,6 +14,7 @@ import org.jetbrains.kotlin.gradle.plugin.PropertiesProvider
import org.jetbrains.kotlin.gradle.tasks.CacheBuilder
import org.jetbrains.kotlin.gradle.tasks.addArg
import org.jetbrains.kotlin.gradle.utils.lifecycleWithDuration
import org.jetbrains.kotlin.gradle.utils.listFilesOrEmpty
import org.jetbrains.kotlin.konan.library.KONAN_PLATFORM_LIBS_NAME_PREFIX
import org.jetbrains.kotlin.konan.target.HostManager
import org.jetbrains.kotlin.konan.target.KonanTarget
@@ -73,9 +74,8 @@ internal class PlatformLibrariesGenerator(val project: Project, val konanTarget:
val cacheDirectory = CacheBuilder.getRootCacheDirectory(
File(project.konanHome), konanTarget, true, project.konanCacheKind
)
val presentCacheFiles = cacheDirectory.listFiles().orEmpty().map { it.name }.toSet()
return presentDefs.toPlatformLibNames().all {
CacheBuilder.getCacheFileName(it, project.konanCacheKind, konanTarget) in presentCacheFiles
cacheDirectory.resolve(CacheBuilder.getCacheFileName(it, project.konanCacheKind)).listFilesOrEmpty().isNotEmpty()
}
}
@@ -32,6 +32,7 @@ import org.jetbrains.kotlin.gradle.plugin.sources.DefaultLanguageSettingsBuilder
import org.jetbrains.kotlin.gradle.targets.native.internal.isAllowCommonizer
import org.jetbrains.kotlin.gradle.utils.getValue
import org.jetbrains.kotlin.gradle.utils.klibModuleName
import org.jetbrains.kotlin.gradle.utils.listFilesOrEmpty
import org.jetbrains.kotlin.konan.library.KLIB_INTEROP_IR_PROVIDER_IDENTIFIER
import org.jetbrains.kotlin.konan.properties.saveToFile
import org.jetbrains.kotlin.konan.target.CompilerOutputKind
@@ -727,7 +728,7 @@ internal class CacheBuilder(val project: Project, val binary: NativeBinary) {
dfs(library)
for (library in sortedLibraries) {
if (File(cacheDirectory, library.uniqueName.cachedName).exists())
if (File(cacheDirectory, library.uniqueName.cachedName).listFilesOrEmpty().isNotEmpty())
continue
project.logger.info("Compiling ${library.uniqueName} to cache")
val args = mutableListOf(
@@ -762,14 +763,14 @@ internal class CacheBuilder(val project: Project, val binary: NativeBinary) {
}
private val String.cachedName
get() = getCacheFileName(this, konanCacheKind, compilation.konanTarget)
get() = getCacheFileName(this, konanCacheKind)
private fun ensureCompilerProvidedLibPrecached(platformLibName: String, platformLibs: Map<String, File>, visitedLibs: MutableSet<String>) {
if (platformLibName in visitedLibs)
return
visitedLibs += platformLibName
val platformLib = platformLibs[platformLibName] ?: error("$platformLibName is not found in platform libs")
if (File(rootCacheDirectory, platformLibName.cachedName).exists())
if (File(rootCacheDirectory, platformLibName.cachedName).listFilesOrEmpty().isNotEmpty())
return
val unresolvedDependencies = resolveSingleFileKlib(
KFile(platformLib.absolutePath),
@@ -835,9 +836,9 @@ internal class CacheBuilder(val project: Project, val binary: NativeBinary) {
return konanHome.resolve("klib/cache/$optionsAwareCacheName")
}
internal fun getCacheFileName(baseName: String, cacheKind: NativeCacheKind, konanTarget: KonanTarget): String =
internal fun getCacheFileName(baseName: String, cacheKind: NativeCacheKind): String =
cacheKind.outputKind?.let {
"${it.prefix(konanTarget)}${baseName}-cache${it.suffix(konanTarget)}"
"${baseName}-cache"
} ?: error("No output for kind $cacheKind")
internal fun cacheWorksFor(target: KonanTarget) =
@@ -45,4 +45,6 @@ internal fun File.isParentOf(childCandidate: File, strict: Boolean = false): Boo
}
internal fun File.canonicalPathWithoutExtension(): String =
canonicalPath.substringBeforeLast(".")
canonicalPath.substringBeforeLast(".")
internal fun File.listFilesOrEmpty() = (if (exists()) listFiles() else null).orEmpty()