[Gradle] Fix configuration cache for cleanNativeDistributionCommonization
^KT-57482 Verification Pending
This commit is contained in:
committed by
Space Team
parent
c64a7068d9
commit
9afddb1a7a
+13
-2
@@ -11,6 +11,8 @@ import org.jetbrains.kotlin.gradle.report.BuildReportType
|
|||||||
import org.jetbrains.kotlin.gradle.testbase.*
|
import org.jetbrains.kotlin.gradle.testbase.*
|
||||||
import org.jetbrains.kotlin.konan.target.HostManager
|
import org.jetbrains.kotlin.konan.target.HostManager
|
||||||
import org.junit.jupiter.api.DisplayName
|
import org.junit.jupiter.api.DisplayName
|
||||||
|
import org.junit.jupiter.api.io.TempDir
|
||||||
|
import java.nio.file.Path
|
||||||
|
|
||||||
@DisplayName("Configuration cache")
|
@DisplayName("Configuration cache")
|
||||||
class ConfigurationCacheIT : AbstractConfigurationCacheIT() {
|
class ConfigurationCacheIT : AbstractConfigurationCacheIT() {
|
||||||
@@ -126,14 +128,23 @@ class ConfigurationCacheIT : AbstractConfigurationCacheIT() {
|
|||||||
maxVersion = TestVersions.Gradle.G_8_1
|
maxVersion = TestVersions.Gradle.G_8_1
|
||||||
)
|
)
|
||||||
@GradleTest
|
@GradleTest
|
||||||
fun testCommonizer(gradleVersion: GradleVersion) {
|
fun testCommonizer(gradleVersion: GradleVersion, @TempDir konanHome: Path) {
|
||||||
project("native-configuration-cache", gradleVersion) {
|
project("native-configuration-cache", gradleVersion) {
|
||||||
// results of :commonizeNativeDistribution is not cleanable so just check if it works with configuration cache on first run
|
|
||||||
build(
|
build(
|
||||||
":commonizeNativeDistribution",
|
":commonizeNativeDistribution",
|
||||||
) {
|
) {
|
||||||
assertOutputContains("0 problems were found storing the configuration cache.")
|
assertOutputContains("0 problems were found storing the configuration cache.")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Override kotlin native home location to be able to run clean native distribution commonization task
|
||||||
|
// since by default it is global location on host
|
||||||
|
val buildOptions = defaultBuildOptions.copy(
|
||||||
|
freeArgs = listOf("-Porg.jetbrains.kotlin.native.home=$konanHome")
|
||||||
|
)
|
||||||
|
build(":cleanNativeDistributionCommonization", buildOptions = buildOptions) {
|
||||||
|
assertOutputContains("0 problems were found storing the configuration cache.")
|
||||||
|
}
|
||||||
|
|
||||||
testConfigurationCacheOf(":lib:commonizeCInterop")
|
testConfigurationCacheOf(":lib:commonizeCInterop")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+26
-10
@@ -8,6 +8,10 @@ package org.jetbrains.kotlin.gradle.targets.native.internal
|
|||||||
import org.gradle.api.DefaultTask
|
import org.gradle.api.DefaultTask
|
||||||
import org.gradle.api.Project
|
import org.gradle.api.Project
|
||||||
import org.gradle.api.Task
|
import org.gradle.api.Task
|
||||||
|
import org.gradle.api.file.FileSystemOperations
|
||||||
|
import org.gradle.api.provider.Property
|
||||||
|
import org.gradle.api.tasks.OutputDirectory
|
||||||
|
import org.gradle.api.tasks.TaskAction
|
||||||
import org.gradle.api.tasks.TaskProvider
|
import org.gradle.api.tasks.TaskProvider
|
||||||
import org.jetbrains.kotlin.compilerRunner.maybeCreateCommonizerClasspathConfiguration
|
import org.jetbrains.kotlin.compilerRunner.maybeCreateCommonizerClasspathConfiguration
|
||||||
import org.jetbrains.kotlin.gradle.internal.isInIdeaSync
|
import org.jetbrains.kotlin.gradle.internal.isInIdeaSync
|
||||||
@@ -18,6 +22,8 @@ import org.jetbrains.kotlin.gradle.plugin.ide.ideaImportDependsOn
|
|||||||
import org.jetbrains.kotlin.gradle.plugin.whenEvaluated
|
import org.jetbrains.kotlin.gradle.plugin.whenEvaluated
|
||||||
import org.jetbrains.kotlin.gradle.tasks.dependsOn
|
import org.jetbrains.kotlin.gradle.tasks.dependsOn
|
||||||
import org.jetbrains.kotlin.gradle.tasks.locateOrRegisterTask
|
import org.jetbrains.kotlin.gradle.tasks.locateOrRegisterTask
|
||||||
|
import java.io.File
|
||||||
|
import javax.inject.Inject
|
||||||
|
|
||||||
internal val Project.isCInteropCommonizationEnabled: Boolean get() = PropertiesProvider(this).enableCInteropCommonization
|
internal val Project.isCInteropCommonizationEnabled: Boolean get() = PropertiesProvider(this).enableCInteropCommonization
|
||||||
|
|
||||||
@@ -140,7 +146,7 @@ internal val Project.commonizeNativeDistributionTask: TaskProvider<NativeDistrib
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
internal val Project.cleanNativeDistributionCommonizerTask: TaskProvider<DefaultTask>?
|
internal val Project.cleanNativeDistributionCommonizerTask: TaskProvider<CleanNativeDistributionCommonizerTask>?
|
||||||
get() {
|
get() {
|
||||||
val commonizeNativeDistributionTask = commonizeNativeDistributionTask ?: return null
|
val commonizeNativeDistributionTask = commonizeNativeDistributionTask ?: return null
|
||||||
return rootProject.locateOrRegisterTask(
|
return rootProject.locateOrRegisterTask(
|
||||||
@@ -149,15 +155,25 @@ internal val Project.cleanNativeDistributionCommonizerTask: TaskProvider<Default
|
|||||||
group = "interop"
|
group = "interop"
|
||||||
description = "Deletes all previously commonized klib's from the Kotlin/Native distribution"
|
description = "Deletes all previously commonized klib's from the Kotlin/Native distribution"
|
||||||
|
|
||||||
val commonizerDirectory = commonizeNativeDistributionTask.map { it.rootOutputDirectory }
|
commonizerDirectory.set(commonizeNativeDistributionTask.map { it.rootOutputDirectory })
|
||||||
outputs.dir(commonizerDirectory)
|
|
||||||
|
|
||||||
doFirst {
|
|
||||||
NativeDistributionCommonizerLock(commonizerDirectory.get()).withLock { lockFile ->
|
|
||||||
val files = commonizerDirectory.get().listFiles().orEmpty().toSet() - lockFile
|
|
||||||
delete(*files.toTypedArray())
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
internal abstract class CleanNativeDistributionCommonizerTask : DefaultTask() {
|
||||||
|
@get:Inject
|
||||||
|
abstract val fileSystemOperations: FileSystemOperations
|
||||||
|
|
||||||
|
@get:OutputDirectory
|
||||||
|
abstract val commonizerDirectory: Property<File>
|
||||||
|
|
||||||
|
@TaskAction
|
||||||
|
fun action() {
|
||||||
|
NativeDistributionCommonizerLock(commonizerDirectory.get()).withLock { lockFile ->
|
||||||
|
val files = commonizerDirectory.get().listFiles().orEmpty().toSet() - lockFile
|
||||||
|
fileSystemOperations.delete {
|
||||||
|
it.delete(files)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user