[Gradle] Make evaluation of rootCacheDirectory lazy in Native task

It was broken due to 91779c298e5a819345a09c5bc9cca1b7c4a18797
And this change makes it behave as it was before
adding support for Configuration Cache.
This commit is contained in:
Anton Lakotka
2022-06-08 10:00:03 +02:00
committed by Space
parent edd1d72609
commit ebe7544464
@@ -875,13 +875,15 @@ internal class CacheBuilder(
val runnerSettings: KotlinNativeCompilerRunner.Settings, val runnerSettings: KotlinNativeCompilerRunner.Settings,
val konanCacheKind: NativeCacheKind, val konanCacheKind: NativeCacheKind,
val libraries: FileCollection, val libraries: FileCollection,
val rootCacheDirectory: File, rootCacheDirectoryProvider: () -> File,
val gradleUserHomeDir: File, val gradleUserHomeDir: File,
val binary: NativeBinary, val binary: NativeBinary,
val konanTarget: KonanTarget, val konanTarget: KonanTarget,
val kotlinOptions: KotlinCommonToolOptions, val kotlinOptions: KotlinCommonToolOptions,
val externalDependenciesArgs: List<String> val externalDependenciesArgs: List<String>
) { ) {
val rootCacheDirectory by lazy(rootCacheDirectoryProvider)
companion object { companion object {
operator fun invoke( operator fun invoke(
project: Project, project: Project,
@@ -895,7 +897,7 @@ internal class CacheBuilder(
runnerSettings = KotlinNativeCompilerRunner.Settings(project), runnerSettings = KotlinNativeCompilerRunner.Settings(project),
konanCacheKind = konanCacheKind, konanCacheKind = konanCacheKind,
libraries = binary.compilation.compileDependencyFiles.filterOutPublishableInteropLibs(project), libraries = binary.compilation.compileDependencyFiles.filterOutPublishableInteropLibs(project),
rootCacheDirectory = getRootCacheDirectory(File(project.konanHome), konanTarget, binary.debuggable, konanCacheKind), rootCacheDirectoryProvider = { getRootCacheDirectory(File(project.konanHome), konanTarget, binary.debuggable, konanCacheKind) },
gradleUserHomeDir = project.gradle.gradleUserHomeDir, gradleUserHomeDir = project.gradle.gradleUserHomeDir,
binary, konanTarget, kotlinOptions, externalDependenciesArgs binary, konanTarget, kotlinOptions, externalDependenciesArgs
) )
@@ -1105,7 +1107,7 @@ internal class CacheBuilder(
companion object { companion object {
internal fun getRootCacheDirectory(konanHome: File, target: KonanTarget, debuggable: Boolean, cacheKind: NativeCacheKind): File { internal fun getRootCacheDirectory(konanHome: File, target: KonanTarget, debuggable: Boolean, cacheKind: NativeCacheKind): File {
require(cacheKind != NativeCacheKind.NONE) { "Usupported cache kind: ${NativeCacheKind.NONE}" } require(cacheKind != NativeCacheKind.NONE) { "Unsupported cache kind: ${NativeCacheKind.NONE}" }
val optionsAwareCacheName = "$target${if (debuggable) "-g" else ""}$cacheKind" val optionsAwareCacheName = "$target${if (debuggable) "-g" else ""}$cacheKind"
return konanHome.resolve("klib/cache/$optionsAwareCacheName") return konanHome.resolve("klib/cache/$optionsAwareCacheName")
} }