From 3d94679db41d4f5834bc3a0fe018a57df211f7bb Mon Sep 17 00:00:00 2001 From: Yahor Berdnikau Date: Mon, 14 Aug 2023 23:22:47 +0200 Subject: [PATCH] [Gradle] Migrate errors collector to new persistent storage ^KT-58223 In Progress --- .../kotlin/gradle/tasks/AbstractKotlinCompile.kt | 2 +- .../kotlin/gradle/tasks/GradleCompileTaskProvider.kt | 10 +++++----- .../jetbrains/kotlin/gradle/utils/persistentCaches.kt | 4 ++++ 3 files changed, 10 insertions(+), 6 deletions(-) diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/tasks/AbstractKotlinCompile.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/tasks/AbstractKotlinCompile.kt index 22f439340fd..1c18217c812 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/tasks/AbstractKotlinCompile.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/tasks/AbstractKotlinCompile.kt @@ -168,7 +168,7 @@ abstract class AbstractKotlinCompile @Inject constr @get:Internal protected val gradleCompileTaskProvider: Provider = objectFactory .property( - objectFactory.newInstance(project.gradle, this, project, incrementalModuleInfoProvider) + objectFactory.newInstance(this, project, incrementalModuleInfoProvider) ) @get:Internal diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/tasks/GradleCompileTaskProvider.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/tasks/GradleCompileTaskProvider.kt index 35cfe8a804d..4bc94ce2359 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/tasks/GradleCompileTaskProvider.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/tasks/GradleCompileTaskProvider.kt @@ -9,13 +9,13 @@ import org.gradle.api.Project import org.gradle.api.Task import org.gradle.api.file.DirectoryProperty import org.gradle.api.file.ProjectLayout -import org.gradle.api.invocation.Gradle import org.gradle.api.logging.Logger import org.gradle.api.model.ObjectFactory import org.gradle.api.provider.Provider import org.gradle.api.tasks.Internal import org.jetbrains.kotlin.compilerRunner.GradleCompilerRunner.Companion.normalizeForFlagFile import org.jetbrains.kotlin.gradle.incremental.IncrementalModuleInfoProvider +import org.jetbrains.kotlin.gradle.utils.kotlinErrorsDir import org.jetbrains.kotlin.gradle.utils.property import org.jetbrains.kotlin.gradle.utils.kotlinSessionsDir import java.io.File @@ -24,7 +24,6 @@ import javax.inject.Inject abstract class GradleCompileTaskProvider @Inject constructor( objectFactory: ObjectFactory, projectLayout: ProjectLayout, - gradle: Gradle, task: Task, project: Project, incrementalModuleInfoProvider: Provider @@ -56,8 +55,9 @@ abstract class GradleCompileTaskProvider @Inject constructor( .property(incrementalModuleInfoProvider) @get:Internal - val errorsFile: Provider = objectFactory + val errorsFile: Provider = objectFactory .property( - gradle.rootProject.rootDir.resolve(".gradle/kotlin/errors/").also { it.mkdirs() } - .resolve("errors-${System.currentTimeMillis()}.log")) + project.kotlinErrorsDir.also { it.mkdirs() } + .resolve("errors-${System.currentTimeMillis()}.log") + ) } \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/utils/persistentCaches.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/utils/persistentCaches.kt index 8918222d3a0..2b7857dfa20 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/utils/persistentCaches.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/utils/persistentCaches.kt @@ -16,6 +16,7 @@ private const val PROJECTS_CACHE_NAME_FULL = "$PROJECTS_CACHE_NAME-$PROJECTS_CAC private const val SESSIONS_DIR_NAME = "sessions" private const val METADATA_DIR_NAME = "metadata" +private const val ERRORS_DIR_NAME = "errors" internal val Project.basePersistentDir get() = kotlinPropertiesProvider.kotlinUserHomeDir?.let { File(it) } @@ -27,6 +28,9 @@ internal val Project.kotlinSessionsDir internal val Project.kotlinMetadataDir get() = basePersistentDir.projectSpecificCache(rootDir).resolve(METADATA_DIR_NAME) +internal val Project.kotlinErrorsDir + get() = basePersistentDir.projectSpecificCache(rootDir).resolve(ERRORS_DIR_NAME) + private val md5Digest by lazy { MessageDigest.getInstance("MD5") } private fun File.absolutePathMd5Hash(): String = md5Digest.digest(absolutePath.toByteArray()).toHexString()