[Gradle] Migrate errors collector to new persistent storage

^KT-58223 In Progress
This commit is contained in:
Yahor Berdnikau
2023-08-14 23:22:47 +02:00
committed by Space Team
parent cf44bff164
commit 3d94679db4
3 changed files with 10 additions and 6 deletions
@@ -168,7 +168,7 @@ abstract class AbstractKotlinCompile<T : CommonCompilerArguments> @Inject constr
@get:Internal @get:Internal
protected val gradleCompileTaskProvider: Provider<GradleCompileTaskProvider> = objectFactory protected val gradleCompileTaskProvider: Provider<GradleCompileTaskProvider> = objectFactory
.property( .property(
objectFactory.newInstance<GradleCompileTaskProvider>(project.gradle, this, project, incrementalModuleInfoProvider) objectFactory.newInstance<GradleCompileTaskProvider>(this, project, incrementalModuleInfoProvider)
) )
@get:Internal @get:Internal
@@ -9,13 +9,13 @@ import org.gradle.api.Project
import org.gradle.api.Task import org.gradle.api.Task
import org.gradle.api.file.DirectoryProperty import org.gradle.api.file.DirectoryProperty
import org.gradle.api.file.ProjectLayout import org.gradle.api.file.ProjectLayout
import org.gradle.api.invocation.Gradle
import org.gradle.api.logging.Logger import org.gradle.api.logging.Logger
import org.gradle.api.model.ObjectFactory import org.gradle.api.model.ObjectFactory
import org.gradle.api.provider.Provider import org.gradle.api.provider.Provider
import org.gradle.api.tasks.Internal import org.gradle.api.tasks.Internal
import org.jetbrains.kotlin.compilerRunner.GradleCompilerRunner.Companion.normalizeForFlagFile import org.jetbrains.kotlin.compilerRunner.GradleCompilerRunner.Companion.normalizeForFlagFile
import org.jetbrains.kotlin.gradle.incremental.IncrementalModuleInfoProvider 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.property
import org.jetbrains.kotlin.gradle.utils.kotlinSessionsDir import org.jetbrains.kotlin.gradle.utils.kotlinSessionsDir
import java.io.File import java.io.File
@@ -24,7 +24,6 @@ import javax.inject.Inject
abstract class GradleCompileTaskProvider @Inject constructor( abstract class GradleCompileTaskProvider @Inject constructor(
objectFactory: ObjectFactory, objectFactory: ObjectFactory,
projectLayout: ProjectLayout, projectLayout: ProjectLayout,
gradle: Gradle,
task: Task, task: Task,
project: Project, project: Project,
incrementalModuleInfoProvider: Provider<IncrementalModuleInfoProvider> incrementalModuleInfoProvider: Provider<IncrementalModuleInfoProvider>
@@ -56,8 +55,9 @@ abstract class GradleCompileTaskProvider @Inject constructor(
.property(incrementalModuleInfoProvider) .property(incrementalModuleInfoProvider)
@get:Internal @get:Internal
val errorsFile: Provider<File?> = objectFactory val errorsFile: Provider<File> = objectFactory
.property( .property(
gradle.rootProject.rootDir.resolve(".gradle/kotlin/errors/").also { it.mkdirs() } project.kotlinErrorsDir.also { it.mkdirs() }
.resolve("errors-${System.currentTimeMillis()}.log")) .resolve("errors-${System.currentTimeMillis()}.log")
)
} }
@@ -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 SESSIONS_DIR_NAME = "sessions"
private const val METADATA_DIR_NAME = "metadata" private const val METADATA_DIR_NAME = "metadata"
private const val ERRORS_DIR_NAME = "errors"
internal val Project.basePersistentDir internal val Project.basePersistentDir
get() = kotlinPropertiesProvider.kotlinUserHomeDir?.let { File(it) } get() = kotlinPropertiesProvider.kotlinUserHomeDir?.let { File(it) }
@@ -27,6 +28,9 @@ internal val Project.kotlinSessionsDir
internal val Project.kotlinMetadataDir internal val Project.kotlinMetadataDir
get() = basePersistentDir.projectSpecificCache(rootDir).resolve(METADATA_DIR_NAME) 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 val md5Digest by lazy { MessageDigest.getInstance("MD5") }
private fun File.absolutePathMd5Hash(): String = md5Digest.digest(absolutePath.toByteArray()).toHexString() private fun File.absolutePathMd5Hash(): String = md5Digest.digest(absolutePath.toByteArray()).toHexString()