[native-gradle-plugin] Respected changed cache format
This commit is contained in:
+2
-2
@@ -14,6 +14,7 @@ import org.jetbrains.kotlin.gradle.plugin.PropertiesProvider
|
|||||||
import org.jetbrains.kotlin.gradle.tasks.CacheBuilder
|
import org.jetbrains.kotlin.gradle.tasks.CacheBuilder
|
||||||
import org.jetbrains.kotlin.gradle.tasks.addArg
|
import org.jetbrains.kotlin.gradle.tasks.addArg
|
||||||
import org.jetbrains.kotlin.gradle.utils.lifecycleWithDuration
|
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.library.KONAN_PLATFORM_LIBS_NAME_PREFIX
|
||||||
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
|
||||||
@@ -73,9 +74,8 @@ internal class PlatformLibrariesGenerator(val project: Project, val konanTarget:
|
|||||||
val cacheDirectory = CacheBuilder.getRootCacheDirectory(
|
val cacheDirectory = CacheBuilder.getRootCacheDirectory(
|
||||||
File(project.konanHome), konanTarget, true, project.konanCacheKind
|
File(project.konanHome), konanTarget, true, project.konanCacheKind
|
||||||
)
|
)
|
||||||
val presentCacheFiles = cacheDirectory.listFiles().orEmpty().map { it.name }.toSet()
|
|
||||||
return presentDefs.toPlatformLibNames().all {
|
return presentDefs.toPlatformLibNames().all {
|
||||||
CacheBuilder.getCacheFileName(it, project.konanCacheKind, konanTarget) in presentCacheFiles
|
cacheDirectory.resolve(CacheBuilder.getCacheFileName(it, project.konanCacheKind)).listFilesOrEmpty().isNotEmpty()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+6
-5
@@ -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.targets.native.internal.isAllowCommonizer
|
||||||
import org.jetbrains.kotlin.gradle.utils.getValue
|
import org.jetbrains.kotlin.gradle.utils.getValue
|
||||||
import org.jetbrains.kotlin.gradle.utils.klibModuleName
|
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.library.KLIB_INTEROP_IR_PROVIDER_IDENTIFIER
|
||||||
import org.jetbrains.kotlin.konan.properties.saveToFile
|
import org.jetbrains.kotlin.konan.properties.saveToFile
|
||||||
import org.jetbrains.kotlin.konan.target.CompilerOutputKind
|
import org.jetbrains.kotlin.konan.target.CompilerOutputKind
|
||||||
@@ -727,7 +728,7 @@ internal class CacheBuilder(val project: Project, val binary: NativeBinary) {
|
|||||||
dfs(library)
|
dfs(library)
|
||||||
|
|
||||||
for (library in sortedLibraries) {
|
for (library in sortedLibraries) {
|
||||||
if (File(cacheDirectory, library.uniqueName.cachedName).exists())
|
if (File(cacheDirectory, library.uniqueName.cachedName).listFilesOrEmpty().isNotEmpty())
|
||||||
continue
|
continue
|
||||||
project.logger.info("Compiling ${library.uniqueName} to cache")
|
project.logger.info("Compiling ${library.uniqueName} to cache")
|
||||||
val args = mutableListOf(
|
val args = mutableListOf(
|
||||||
@@ -762,14 +763,14 @@ internal class CacheBuilder(val project: Project, val binary: NativeBinary) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private val String.cachedName
|
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>) {
|
private fun ensureCompilerProvidedLibPrecached(platformLibName: String, platformLibs: Map<String, File>, visitedLibs: MutableSet<String>) {
|
||||||
if (platformLibName in visitedLibs)
|
if (platformLibName in visitedLibs)
|
||||||
return
|
return
|
||||||
visitedLibs += platformLibName
|
visitedLibs += platformLibName
|
||||||
val platformLib = platformLibs[platformLibName] ?: error("$platformLibName is not found in platform libs")
|
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
|
return
|
||||||
val unresolvedDependencies = resolveSingleFileKlib(
|
val unresolvedDependencies = resolveSingleFileKlib(
|
||||||
KFile(platformLib.absolutePath),
|
KFile(platformLib.absolutePath),
|
||||||
@@ -835,9 +836,9 @@ internal class CacheBuilder(val project: Project, val binary: NativeBinary) {
|
|||||||
return konanHome.resolve("klib/cache/$optionsAwareCacheName")
|
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 {
|
cacheKind.outputKind?.let {
|
||||||
"${it.prefix(konanTarget)}${baseName}-cache${it.suffix(konanTarget)}"
|
"${baseName}-cache"
|
||||||
} ?: error("No output for kind $cacheKind")
|
} ?: error("No output for kind $cacheKind")
|
||||||
|
|
||||||
internal fun cacheWorksFor(target: KonanTarget) =
|
internal fun cacheWorksFor(target: KonanTarget) =
|
||||||
|
|||||||
+2
@@ -46,3 +46,5 @@ internal fun File.isParentOf(childCandidate: File, strict: Boolean = false): Boo
|
|||||||
|
|
||||||
internal fun File.canonicalPathWithoutExtension(): String =
|
internal fun File.canonicalPathWithoutExtension(): String =
|
||||||
canonicalPath.substringBeforeLast(".")
|
canonicalPath.substringBeforeLast(".")
|
||||||
|
|
||||||
|
internal fun File.listFilesOrEmpty() = (if (exists()) listFiles() else null).orEmpty()
|
||||||
Reference in New Issue
Block a user