From 61825e9aecaf458bcb3f19ede2214efac162e64d Mon Sep 17 00:00:00 2001 From: Yahor Berdnikau Date: Mon, 26 Apr 2021 22:09:05 +0200 Subject: [PATCH] Made GradleCompileTaskProvder compative with configuration cache. After moving compilerRunner() method evaluation into execution phase, creation of GradleCompileTaskProvider class started to violate configuration cache. ^KT-45611 In Progress --- .../targets/js/ir/KotlinJsIrLinkWithWorkers.kt | 2 +- .../org/jetbrains/kotlin/gradle/tasks/Tasks.kt | 17 +++++++++++++---- 2 files changed, 14 insertions(+), 5 deletions(-) diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/ir/KotlinJsIrLinkWithWorkers.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/ir/KotlinJsIrLinkWithWorkers.kt index 3193ce7ad2c..7b75bf5d772 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/ir/KotlinJsIrLinkWithWorkers.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/ir/KotlinJsIrLinkWithWorkers.kt @@ -24,7 +24,7 @@ constructor( javaExecutable: File, jdkToolsJar: File? ) = GradleCompilerRunnerWithWorkers( - GradleCompileTaskProvider(this), + gradleCompileTaskProvider, javaExecutable, jdkToolsJar, workerExecutor diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/tasks/Tasks.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/tasks/Tasks.kt index fc8b6bed148..4940213fceb 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/tasks/Tasks.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/tasks/Tasks.kt @@ -332,11 +332,20 @@ abstract class AbstractKotlinCompile : AbstractKotl } ) + // Moved creation here to not violate Gradle configuration cache as [compilerRunner] method is called + // at execution time + // by lazy is added so properties of task extending this one are captured - required for incremental + // compilation + @get:Internal + protected val gradleCompileTaskProvider by lazy { + GradleCompileTaskProvider(this) + } + internal open fun compilerRunner( javaExecutable: File, jdkToolsJar: File? ): GradleCompilerRunner = GradleCompilerRunner( - GradleCompileTaskProvider(this), + gradleCompileTaskProvider, javaExecutable, jdkToolsJar ) @@ -623,7 +632,7 @@ internal open class KotlinCompileWithWorkers @Inject constructor( javaExecutable: File, jdkToolsJar: File? ) = GradleCompilerRunnerWithWorkers( - GradleCompileTaskProvider(this), + gradleCompileTaskProvider, javaExecutable, jdkToolsJar, workerExecutor @@ -640,7 +649,7 @@ internal open class Kotlin2JsCompileWithWorkers @Inject constructor( javaExecutable: File, jdkToolsJar: File? ) = GradleCompilerRunnerWithWorkers( - GradleCompileTaskProvider(this), + gradleCompileTaskProvider, javaExecutable, jdkToolsJar, workerExecutor @@ -655,7 +664,7 @@ internal open class KotlinCompileCommonWithWorkers @Inject constructor( javaExecutable: File, jdkToolsJar: File? ) = GradleCompilerRunnerWithWorkers( - GradleCompileTaskProvider(this), + gradleCompileTaskProvider, javaExecutable, jdkToolsJar, workerExecutor