From d3f98923dc496d7e295bb17106a9ff9a27db9f68 Mon Sep 17 00:00:00 2001 From: "Alexander.Likhachev" Date: Tue, 13 Oct 2020 15:55:42 +0300 Subject: [PATCH] [Gradle, JS] Fix K/JS project build with configuration cache enabled KT-42494 Fixed --- .../jetbrains/kotlin/gradle/targets/js/dukat/DukatTask.kt | 3 +++ .../kotlin/gradle/targets/js/dukat/IntegratedDukatTask.kt | 1 + .../kotlin/gradle/targets/js/npm/PublicPackageJsonTask.kt | 2 +- .../gradle/targets/js/npm/tasks/KotlinNpmInstallTask.kt | 3 ++- .../gradle/targets/js/npm/tasks/KotlinPackageJsonTask.kt | 3 +++ .../gradle/targets/js/npm/tasks/RootPackageJsonTask.kt | 3 ++- .../kotlin/gradle/targets/js/webpack/KotlinWebpack.kt | 2 ++ .../kotlin/org/jetbrains/kotlin/gradle/tasks/KotlinJsDce.kt | 5 ++++- 8 files changed, 18 insertions(+), 4 deletions(-) diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/dukat/DukatTask.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/dukat/DukatTask.kt index 77e4b8c9e34..21b6444feb3 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/dukat/DukatTask.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/dukat/DukatTask.kt @@ -15,9 +15,11 @@ import java.io.File abstract class DukatTask( @Internal + @Transient override val compilation: KotlinJsCompilation ) : DefaultTask(), RequiresNpmDependencies { @get:Internal + @Transient protected val nodeJs = NodeJsRootPlugin.apply(project.rootProject) @get:Internal @@ -35,6 +37,7 @@ abstract class DukatTask( var externalsOutputFormat: ExternalsOutputFormat = ExternalsOutputFormat.SOURCE @get:Internal + @delegate:Transient val dts by lazy { val resolvedCompilation = nodeJs.npmResolutionManager.requireInstalled()[project][compilation] val dtsResolver = DtsResolver(resolvedCompilation.npmProject) diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/dukat/IntegratedDukatTask.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/dukat/IntegratedDukatTask.kt index 9d87935ff70..0455d1d8361 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/dukat/IntegratedDukatTask.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/dukat/IntegratedDukatTask.kt @@ -24,6 +24,7 @@ constructor( override val destinationDir: File get() = compilation.npmProject.externalsDir + @delegate:Transient private val executor by lazy { DukatExecutor( nodeJs, diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/npm/PublicPackageJsonTask.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/npm/PublicPackageJsonTask.kt index 2c8427a2b82..5e2f9b256c4 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/npm/PublicPackageJsonTask.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/npm/PublicPackageJsonTask.kt @@ -11,7 +11,6 @@ import org.gradle.api.tasks.Nested import org.gradle.api.tasks.OutputFile import org.gradle.api.tasks.TaskAction import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinJsCompilation -import org.jetbrains.kotlin.gradle.targets.js.ir.GENERATE_D_TS import org.jetbrains.kotlin.gradle.targets.js.ir.KotlinJsIrCompilation import org.jetbrains.kotlin.gradle.targets.js.npm.NpmProject.Companion.PACKAGE_JSON import org.jetbrains.kotlin.gradle.utils.property @@ -21,6 +20,7 @@ import javax.inject.Inject open class PublicPackageJsonTask @Inject constructor( + @Transient private val compilation: KotlinJsCompilation ) : DefaultTask() { diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/npm/tasks/KotlinNpmInstallTask.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/npm/tasks/KotlinNpmInstallTask.kt index dec1a721cca..f2cdc4d7d68 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/npm/tasks/KotlinNpmInstallTask.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/npm/tasks/KotlinNpmInstallTask.kt @@ -24,7 +24,8 @@ open class KotlinNpmInstallTask : DefaultTask() { } } - private val nodeJs get() = NodeJsRootPlugin.apply(project.rootProject) + @Transient + private val nodeJs = NodeJsRootPlugin.apply(project.rootProject) private val resolutionManager get() = nodeJs.npmResolutionManager @Input diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/npm/tasks/KotlinPackageJsonTask.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/npm/tasks/KotlinPackageJsonTask.kt index 69fb8dd2c1c..a3b059b1511 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/npm/tasks/KotlinPackageJsonTask.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/npm/tasks/KotlinPackageJsonTask.kt @@ -21,7 +21,10 @@ import org.jetbrains.kotlin.gradle.tasks.registerTask import java.io.File open class KotlinPackageJsonTask : DefaultTask() { + @Transient private lateinit var nodeJs: NodeJsRootExtension + + @Transient private lateinit var compilation: KotlinJsCompilation private val compilationResolver diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/npm/tasks/RootPackageJsonTask.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/npm/tasks/RootPackageJsonTask.kt index 6a5a75a0159..871d20a1b52 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/npm/tasks/RootPackageJsonTask.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/npm/tasks/RootPackageJsonTask.kt @@ -21,7 +21,8 @@ open class RootPackageJsonTask : DefaultTask() { } } - private val nodeJs get() = NodeJsRootPlugin.apply(project.rootProject) + @Transient + private val nodeJs = NodeJsRootPlugin.apply(project.rootProject) private val resolutionManager get() = nodeJs.npmResolutionManager @get:OutputFile diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/webpack/KotlinWebpack.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/webpack/KotlinWebpack.kt index 11032d2ab70..16d28c6f5fc 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/webpack/KotlinWebpack.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/webpack/KotlinWebpack.kt @@ -35,8 +35,10 @@ open class KotlinWebpack @Inject constructor( @Internal + @Transient override val compilation: KotlinJsCompilation ) : DefaultTask(), RequiresNpmDependencies { + @Transient private val nodeJs = NodeJsRootPlugin.apply(project.rootProject) private val versions = nodeJs.versions diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/tasks/KotlinJsDce.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/tasks/KotlinJsDce.kt index 514f515f387..05571a30469 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/tasks/KotlinJsDce.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/tasks/KotlinJsDce.kt @@ -40,6 +40,9 @@ open class KotlinJsDce : AbstractKotlinCompileTool(), KotlinJs cacheOnlyIfEnabledForKotlin() } + @get:Internal + internal val objects = project.objects + override fun localStateDirectories(): FileCollection = project.files() override fun createCompilerArgs(): K2JSDceArguments = K2JSDceArguments() @@ -72,7 +75,7 @@ open class KotlinJsDce : AbstractKotlinCompileTool(), KotlinJs fun performDce() { val inputFiles = (listOf(source) + classpath .filter { !kotlinFilesOnly || isDceCandidate(it) } - .map { project.fileTree(it) }) + .map { objects.fileCollection().from(it).asFileTree }) .reduce(FileTree::plus) .files.map { it.path }