[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
This commit is contained in:
Anton Lakotka
2023-07-03 15:03:05 +02:00
committed by Space Team
parent e59371d291
commit 182c10f77d
15 changed files with 31 additions and 0 deletions
@@ -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
@@ -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
@@ -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,
@@ -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() {
@@ -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 {
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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,
@@ -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<CleanNa
)
}
@DisableCachingByDefault
internal abstract class CleanNativeDistributionCommonizerTask : DefaultTask() {
@get:Inject
abstract val fileSystemOperations: FileSystemOperations
@@ -7,9 +7,11 @@ package org.jetbrains.kotlin.gradle.targets.native.internal
import org.gradle.api.provider.Provider
import org.gradle.api.tasks.*
import org.gradle.work.DisableCachingByDefault
import org.gradle.work.NormalizeLineEndings
import java.io.File
@DisableCachingByDefault
internal open class CopyCommonizeCInteropForIdeTask : AbstractCInteropCommonizerTask() {
private val commonizeCInteropTask: TaskProvider<CInteropCommonizerTask>
@@ -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,
@@ -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 {
@@ -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<BuildK
abstract class BuildKotlinToolingMetadataTask : DefaultTask() {
@DisableCachingByDefault
abstract class FromKpmModule
@Inject constructor(
@get:Internal
@@ -103,6 +105,7 @@ abstract class BuildKotlinToolingMetadataTask : DefaultTask() {
override fun buildKotlinToolingMetadata() = module.getKotlinToolingMetadata()
}
@DisableCachingByDefault
abstract class FromKotlinExtension
@Inject constructor(
private val projectLayout: ProjectLayout