From 432b08e15827387173d694d0e64dcf73b7dd3a7a Mon Sep 17 00:00:00 2001 From: Alexander Likhachev Date: Tue, 3 Jan 2023 22:05:05 +0100 Subject: [PATCH] [Gradle] Convert taskOutputsBackupExcludes into `SetProperty` #KT-49785 In Progress --- .../org/jetbrains/kotlin/gradle/tasks/Tasks.kt | 14 ++------------ .../configuration/AbstractKotlinCompileConfig.kt | 3 +++ .../tasks/configuration/KotlinCompileConfig.kt | 7 +++++++ 3 files changed, 12 insertions(+), 12 deletions(-) diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/tasks/Tasks.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/tasks/Tasks.kt index 37aed10d092..281b59c308d 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/tasks/Tasks.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/tasks/Tasks.kt @@ -386,14 +386,7 @@ abstract class AbstractKotlinCompile @Inject constr /** Task outputs that we don't want to include in [TaskOutputsBackup] (see [TaskOutputsBackup.outputsToRestore] for more info). */ @get:Internal - protected open val taskOutputsBackupExcludes: List - get() { - val list = mutableListOf() - if (preciseCompilationResultsBackup.get()) { - list.add(destinationDirectory.get().asFile) - } - return list - } + internal abstract val taskOutputsBackupExcludes: SetProperty @TaskAction fun execute(inputChanges: InputChanges) { @@ -420,7 +413,7 @@ abstract class AbstractKotlinCompile @Inject constr fileSystemOperations, layout.buildDirectory, layout.buildDirectory.dir("snapshot/kotlin/$name"), - outputsToRestore = allOutputFiles() - taskOutputsBackupExcludes, + outputsToRestore = allOutputFiles() - taskOutputsBackupExcludes.get(), logger ).also { it.createSnapshot() @@ -639,9 +632,6 @@ abstract class KotlinCompile @Inject constructor( classpathSnapshotProperties.classpathSnapshot ) - override val taskOutputsBackupExcludes: List - get() = (classpathSnapshotProperties.classpathSnapshotDir.orNull?.asFile?.let { listOf(it) } ?: emptyList()) + super.taskOutputsBackupExcludes - @get:Internal final override val defaultKotlinJavaToolchain: Provider = objectFactory .propertyWithNewInstance({ this }) diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/tasks/configuration/AbstractKotlinCompileConfig.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/tasks/configuration/AbstractKotlinCompileConfig.kt index 5a248ac5005..81c103660a4 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/tasks/configuration/AbstractKotlinCompileConfig.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/tasks/configuration/AbstractKotlinCompileConfig.kt @@ -80,6 +80,9 @@ internal abstract class AbstractKotlinCompileConfig @@ -57,6 +58,12 @@ internal open class BaseKotlinCompileConfig : AbstractKotl } else { task.classpathSnapshotProperties.classpath.from(task.project.provider { task.libraries }).disallowChanges() } + task.taskOutputsBackupExcludes.addAll( + task.classpathSnapshotProperties.classpathSnapshotDir.asFile.flatMap { + // it looks weird, but it's required to work around this issue: https://github.com/gradle/gradle/issues/17704 + objectFactory.providerWithLazyConvention { listOf(it) } + }.orElse(emptyList()) + ) } } }