From 182c10f77df8b54622291842034bd325397a65db Mon Sep 17 00:00:00 2001 From: Anton Lakotka Date: Mon, 3 Jul 2023 15:03:05 +0200 Subject: [PATCH] [Gradle] Mark some tasks with @DisableCachingByDefault By default, tasks should opt-in for supporting build cache through marking class with @CacheableTask. However, some tasks should not be cacheable by default, as for these tasks doesn't do any heavy load. Even worse, storing and extracting tasks results from the remote cache (for example) would take more time than actual run on host machine. So these tasks are marked as @DisableCachingByDefault ^KT-59307 Verification Pending --- .../kotlin/gradle/kpm/idea/IdeaKpmBuildProjectModelTask.kt | 2 ++ .../gradle/plugin/mpp/GenerateProjectStructureMetadata.kt | 2 ++ .../gradle/plugin/mpp/MetadataDependencyTransformationTask.kt | 2 ++ .../kotlin/gradle/plugin/mpp/apple/AppleXcodeTasks.kt | 2 ++ .../kotlin/gradle/plugin/mpp/apple/XcodeVersionTask.kt | 2 ++ .../mpp/pm20/GradleKpmMetadataDependencyTransformationTask.kt | 2 ++ .../gradle/targets/native/cocoapods/tasks/DefFileTask.kt | 2 ++ .../targets/native/cocoapods/tasks/DummyFrameworkTask.kt | 2 ++ .../gradle/targets/native/cocoapods/tasks/PodspecTask.kt | 2 ++ .../internal/CInteropMetadataDependencyTransformationTask.kt | 2 ++ .../kotlin/gradle/targets/native/internal/CommonizerTasks.kt | 2 ++ .../internal/CopyCInteropCommonizerTaskOutputForIdeTask.kt | 2 ++ .../native/internal/NativeDistributionCommonizerTask.kt | 2 ++ .../gradle/targets/native/tasks/GenerateArtifactPodspecTask.kt | 2 ++ .../kotlin/gradle/tooling/BuildKotlinToolingMetadataTask.kt | 3 +++ 15 files changed, 31 insertions(+) diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/kpm/idea/IdeaKpmBuildProjectModelTask.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/kpm/idea/IdeaKpmBuildProjectModelTask.kt index 33c4717dec5..f1cba233981 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/kpm/idea/IdeaKpmBuildProjectModelTask.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/kpm/idea/IdeaKpmBuildProjectModelTask.kt @@ -11,6 +11,7 @@ import org.gradle.api.Project import org.gradle.api.tasks.OutputDirectory import org.gradle.api.tasks.TaskAction import org.gradle.api.tasks.TaskProvider +import org.gradle.work.DisableCachingByDefault import org.jetbrains.kotlin.gradle.dsl.pm20Extension import org.jetbrains.kotlin.gradle.tasks.locateOrRegisterTask import org.jetbrains.kotlin.gradle.utils.doNotTrackStateCompat @@ -25,6 +26,7 @@ internal fun Project.locateOrRegisterIdeaKpmBuildProjectModelTask(): TaskProvide /** * Internal Task used for troubleshooting/debugging/diagnosing IdeaKpm model building. */ +@DisableCachingByDefault internal open class IdeaKpmBuildProjectModelTask : DefaultTask() { @OutputDirectory diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/GenerateProjectStructureMetadata.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/GenerateProjectStructureMetadata.kt index 92bbeeeabc9..5b4df16cdca 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/GenerateProjectStructureMetadata.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/GenerateProjectStructureMetadata.kt @@ -11,9 +11,11 @@ import org.gradle.api.tasks.Internal import org.gradle.api.tasks.Nested import org.gradle.api.tasks.OutputFile import org.gradle.api.tasks.TaskAction +import org.gradle.work.DisableCachingByDefault import java.io.File import javax.inject.Inject +@DisableCachingByDefault abstract class GenerateProjectStructureMetadata : DefaultTask() { @get:Inject diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/MetadataDependencyTransformationTask.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/MetadataDependencyTransformationTask.kt index 465ec276f11..e2c7368d8d0 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/MetadataDependencyTransformationTask.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/MetadataDependencyTransformationTask.kt @@ -16,6 +16,7 @@ import org.gradle.api.file.ProjectLayout import org.gradle.api.file.RegularFileProperty import org.gradle.api.model.ObjectFactory import org.gradle.api.tasks.* +import org.gradle.work.DisableCachingByDefault import org.jetbrains.kotlin.gradle.plugin.KotlinSourceSet import org.jetbrains.kotlin.gradle.targets.metadata.dependsOnClosureWithInterCompilationDependencies import org.jetbrains.kotlin.gradle.tasks.dependsOn @@ -50,6 +51,7 @@ internal fun Project.locateOrRegisterMetadataDependencyTransformationTask( return transformationTask } +@DisableCachingByDefault(because = "Metadata Dependency Transformation Task doesn't benefit from caching as it doesn't have heavy load") open class MetadataDependencyTransformationTask @Inject constructor( kotlinSourceSet: KotlinSourceSet, diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/apple/AppleXcodeTasks.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/apple/AppleXcodeTasks.kt index 870f0e3c0bf..ac282dcb1ea 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/apple/AppleXcodeTasks.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/apple/AppleXcodeTasks.kt @@ -13,6 +13,7 @@ import org.gradle.api.plugins.BasePlugin import org.gradle.api.provider.Provider import org.gradle.api.tasks.* import org.gradle.process.ExecOperations +import org.gradle.work.DisableCachingByDefault import org.jetbrains.kotlin.gradle.dsl.KotlinNativeBinaryContainer import org.jetbrains.kotlin.gradle.plugin.diagnostics.KotlinToolingDiagnostics import org.jetbrains.kotlin.gradle.plugin.diagnostics.reportDiagnostic @@ -221,6 +222,7 @@ private fun Project.appleFrameworkDir(frameworkSearchDir: File) = * To preserve these symlinks we are using the `cp` command instead. * See https://youtrack.jetbrains.com/issue/KT-48594. */ +@DisableCachingByDefault @Suppress("LeakingThis") // Should be extended only by Gradle internal abstract class FrameworkCopy : DefaultTask() { diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/apple/XcodeVersionTask.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/apple/XcodeVersionTask.kt index 42892802d7d..ae91a6cf027 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/apple/XcodeVersionTask.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/apple/XcodeVersionTask.kt @@ -13,12 +13,14 @@ import org.gradle.api.file.RegularFileProperty import org.gradle.api.provider.Property import org.gradle.api.provider.Provider import org.gradle.api.tasks.* +import org.gradle.work.DisableCachingByDefault import org.jetbrains.kotlin.gradle.tasks.locateOrRegisterTask import org.jetbrains.kotlin.gradle.utils.getFile import org.jetbrains.kotlin.gradle.utils.onlyIfCompat import org.jetbrains.kotlin.konan.target.HostManager import org.jetbrains.kotlin.konan.target.Xcode +@DisableCachingByDefault internal abstract class XcodeVersionTask : DefaultTask() { companion object { diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/GradleKpmMetadataDependencyTransformationTask.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/GradleKpmMetadataDependencyTransformationTask.kt index a5e5d7d719a..e7f9b2dcdbd 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/GradleKpmMetadataDependencyTransformationTask.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/GradleKpmMetadataDependencyTransformationTask.kt @@ -9,6 +9,7 @@ import org.gradle.api.DefaultTask import org.gradle.api.file.FileCollection import org.gradle.api.model.ObjectFactory import org.gradle.api.tasks.* +import org.gradle.work.DisableCachingByDefault import org.gradle.work.NormalizeLineEndings import org.jetbrains.kotlin.gradle.plugin.mpp.MetadataDependencyResolution import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.util.disambiguateName @@ -18,6 +19,7 @@ import org.jetbrains.kotlin.gradle.utils.getValue import java.io.File import javax.inject.Inject +@DisableCachingByDefault internal open class GradleKpmMetadataDependencyTransformationTask @Inject constructor( @get:Internal diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/cocoapods/tasks/DefFileTask.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/cocoapods/tasks/DefFileTask.kt index 8e089268e34..e0db50f7bec 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/cocoapods/tasks/DefFileTask.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/cocoapods/tasks/DefFileTask.kt @@ -15,6 +15,7 @@ import org.gradle.api.tasks.Internal import org.gradle.api.tasks.Nested import org.gradle.api.tasks.OutputFile import org.gradle.api.tasks.TaskAction +import org.gradle.work.DisableCachingByDefault import org.jetbrains.kotlin.gradle.plugin.cocoapods.CocoapodsExtension.CocoapodsDependency import org.jetbrains.kotlin.gradle.plugin.cocoapods.cocoapodsBuildDirs import org.jetbrains.kotlin.gradle.utils.appendLine @@ -25,6 +26,7 @@ import javax.inject.Inject /** * Generates a def-file for the given CocoaPods dependency. */ +@DisableCachingByDefault abstract class DefFileTask @Inject constructor(projectLayout: ProjectLayout) : DefaultTask() { @get:Nested diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/cocoapods/tasks/DummyFrameworkTask.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/cocoapods/tasks/DummyFrameworkTask.kt index 07566484af5..ab8595b0aab 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/cocoapods/tasks/DummyFrameworkTask.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/cocoapods/tasks/DummyFrameworkTask.kt @@ -13,6 +13,7 @@ import org.gradle.api.provider.Provider import org.gradle.api.tasks.Input import org.gradle.api.tasks.OutputDirectory import org.gradle.api.tasks.TaskAction +import org.gradle.work.DisableCachingByDefault import org.jetbrains.kotlin.gradle.plugin.cocoapods.cocoapodsBuildDirs import org.jetbrains.kotlin.gradle.utils.mapToFile import java.io.File @@ -29,6 +30,7 @@ import javax.inject.Inject * So we create a dummy static framework to allow CocoaPods install our pod correctly * and then replace it with the real one during a real build process. */ +@DisableCachingByDefault abstract class DummyFrameworkTask @Inject constructor(projectLayout: ProjectLayout) : DefaultTask() { @get:Input diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/cocoapods/tasks/PodspecTask.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/cocoapods/tasks/PodspecTask.kt index 8a2e0547f18..20c5d1ebb6d 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/cocoapods/tasks/PodspecTask.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/cocoapods/tasks/PodspecTask.kt @@ -14,6 +14,7 @@ import org.gradle.api.provider.MapProperty import org.gradle.api.provider.Property import org.gradle.api.provider.Provider import org.gradle.api.tasks.* +import org.gradle.work.DisableCachingByDefault import org.jetbrains.kotlin.gradle.plugin.cocoapods.CocoapodsExtension.CocoapodsDependency import org.jetbrains.kotlin.gradle.plugin.cocoapods.CocoapodsExtension.PodspecPlatformSettings import org.jetbrains.kotlin.gradle.plugin.cocoapods.KotlinCocoapodsPlugin @@ -28,6 +29,7 @@ import javax.inject.Inject * The task generates a podspec file which allows a user to * integrate a Kotlin/Native framework into a CocoaPods project. */ +@DisableCachingByDefault abstract class PodspecTask @Inject constructor(private val projectLayout: ProjectLayout) : DefaultTask() { @get:Input diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/internal/CInteropMetadataDependencyTransformationTask.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/internal/CInteropMetadataDependencyTransformationTask.kt index e3cf816b9a9..a482f2de46b 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/internal/CInteropMetadataDependencyTransformationTask.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/internal/CInteropMetadataDependencyTransformationTask.kt @@ -11,6 +11,7 @@ import org.gradle.api.file.FileCollection import org.gradle.api.file.RegularFileProperty import org.gradle.api.model.ObjectFactory import org.gradle.api.tasks.* +import org.gradle.work.DisableCachingByDefault import org.jetbrains.kotlin.commonizer.SharedCommonizerTarget import org.jetbrains.kotlin.gradle.plugin.KotlinSourceSet import org.jetbrains.kotlin.gradle.plugin.PropertiesProvider.Companion.kotlinPropertiesProvider @@ -110,6 +111,7 @@ private fun CInteropMetadataDependencyTransformationTask.onlyIfSourceSetIsShared onlyIf { isSharedCommonizerTarget } } +@DisableCachingByDefault(because = "Metadata Dependency Transformation Task doesn't benefit from caching as it doesn't have heavy load") internal open class CInteropMetadataDependencyTransformationTask @Inject constructor( @Transient @get:Internal val sourceSet: DefaultKotlinSourceSet, @get:OutputDirectory val outputDirectory: File, diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/internal/CommonizerTasks.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/internal/CommonizerTasks.kt index b85d22c4530..4e3d2e06d19 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/internal/CommonizerTasks.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/internal/CommonizerTasks.kt @@ -13,6 +13,7 @@ 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.work.DisableCachingByDefault import org.jetbrains.kotlin.compilerRunner.maybeCreateCommonizerClasspathConfiguration import org.jetbrains.kotlin.gradle.internal.isInIdeaSync import org.jetbrains.kotlin.gradle.plugin.PropertiesProvider @@ -160,6 +161,7 @@ internal val Project.cleanNativeDistributionCommonizerTask: TaskProvider diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/internal/NativeDistributionCommonizerTask.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/internal/NativeDistributionCommonizerTask.kt index eeffd35083b..3b41d5ad023 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/internal/NativeDistributionCommonizerTask.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/internal/NativeDistributionCommonizerTask.kt @@ -17,6 +17,7 @@ import org.gradle.api.tasks.Input import org.gradle.api.tasks.Internal import org.gradle.api.tasks.TaskAction import org.gradle.process.ExecOperations +import org.gradle.work.DisableCachingByDefault import org.jetbrains.kotlin.commonizer.SharedCommonizerTarget import org.jetbrains.kotlin.compilerRunner.GradleCliCommonizer import org.jetbrains.kotlin.compilerRunner.KotlinNativeCommonizerToolRunner @@ -34,6 +35,7 @@ import java.io.File import java.net.URLEncoder import javax.inject.Inject +@DisableCachingByDefault(because = "Native Distribution Commonizer Task uses internal caching mechanism with fine grained cache control") internal open class NativeDistributionCommonizerTask @Inject constructor( private val objectFactory: ObjectFactory, diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/tasks/GenerateArtifactPodspecTask.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/tasks/GenerateArtifactPodspecTask.kt index cd2aff2064c..80b0c8ec56b 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/tasks/GenerateArtifactPodspecTask.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/tasks/GenerateArtifactPodspecTask.kt @@ -14,10 +14,12 @@ import org.gradle.api.provider.MapProperty import org.gradle.api.provider.Property import org.gradle.api.provider.Provider import org.gradle.api.tasks.* +import org.gradle.work.DisableCachingByDefault import org.jetbrains.kotlin.gradle.plugin.cocoapods.CocoapodsExtension.CocoapodsDependency import org.jetbrains.kotlin.gradle.targets.native.tasks.GenerateArtifactPodspecTask.ArtifactType.* import org.jetbrains.kotlin.gradle.utils.appendLine +@DisableCachingByDefault abstract class GenerateArtifactPodspecTask : DefaultTask() { enum class ArtifactType { diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/tooling/BuildKotlinToolingMetadataTask.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/tooling/BuildKotlinToolingMetadataTask.kt index 3b07ef5d4bb..8d69477177b 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/tooling/BuildKotlinToolingMetadataTask.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/tooling/BuildKotlinToolingMetadataTask.kt @@ -12,6 +12,7 @@ import org.gradle.api.Task import org.gradle.api.file.ProjectLayout import org.gradle.api.internal.GeneratedSubclass import org.gradle.api.tasks.* +import org.gradle.work.DisableCachingByDefault import org.jetbrains.kotlin.compilerRunner.konanVersion import org.jetbrains.kotlin.gradle.dsl.* import org.jetbrains.kotlin.gradle.plugin.* @@ -85,6 +86,7 @@ internal val GradleKpmModule.buildKotlinToolingMetadataTask: TaskProvider