From 4a69d1545b4b70731e94fd9ef3601cf5d3da99a0 Mon Sep 17 00:00:00 2001 From: Sergey Igushkin Date: Mon, 20 Nov 2017 17:38:50 +0300 Subject: [PATCH] Disable IC when IC cache is missing Check task build directory for any files --- .../jetbrains/kotlin/gradle/BaseGradleIT.kt | 3 +++ .../jetbrains/kotlin/gradle/tasks/Tasks.kt | 19 ++++++++++++++----- 2 files changed, 17 insertions(+), 5 deletions(-) diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/BaseGradleIT.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/BaseGradleIT.kt index b3d93a9730b..fd0d2a4c7b9 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/BaseGradleIT.kt +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/BaseGradleIT.kt @@ -454,6 +454,9 @@ abstract class BaseGradleIT { System.getProperty("maven.repo.local")?.let { add("-Dmaven.repo.local=$it") // TODO: proper escaping } + if (options.withBuildCache) { + add("--build-cache") + } addAll(options.freeCommandLineArgs) } 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 429a47fb15c..ecad7c907da 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 @@ -95,8 +95,6 @@ abstract class AbstractKotlinCompile() : AbstractKo logger.kotlinDebug { "Set $this.incremental=$value" } } - abstract protected fun createCompilerArgs(): T - @get:Internal internal val pluginOptions = CompilerPluginOptions() @@ -238,6 +236,11 @@ abstract class AbstractKotlinCompile() : AbstractKo compilerArgs.pluginClasspaths = pluginClasspath.toTypedArray() compilerArgs.pluginOptions = pluginOptions.arguments.toTypedArray() } + + protected fun hasFilesInTaskBuildDirectory(): Boolean { + val taskBuildDir = taskBuildDirectory + return taskBuildDir.walk().any { it != taskBuildDir && it.isFile } + } } @CacheableTask @@ -341,11 +344,15 @@ open class KotlinCompile : AbstractKotlinCompile(), Kotl val reporter = GradleICReporter(project.rootProject.projectDir) val environment = when { - !incremental -> GradleCompilerEnvironment(computedCompilerClasspath, messageCollector, outputItemCollector, args) + !incremental -> + GradleCompilerEnvironment(computedCompilerClasspath, messageCollector, outputItemCollector, args) else -> { logger.info(USING_INCREMENTAL_COMPILATION_MESSAGE) val friendTask = friendTaskName?.let { project.tasks.findByName(it) as? KotlinCompile } - GradleIncrementalCompilerEnvironment(computedCompilerClasspath, changedFiles, reporter, taskBuildDirectory, + GradleIncrementalCompilerEnvironment( + computedCompilerClasspath, + if (hasFilesInTaskBuildDirectory()) changedFiles else ChangedFiles.Unknown(), + reporter, taskBuildDirectory, messageCollector, outputItemCollector, args, kaptAnnotationsFileUpdater, artifactDifferenceRegistryProvider, artifactFile = artifactFile, @@ -508,7 +515,9 @@ open class Kotlin2JsCompile() : AbstractKotlinCompile(), incremental -> { logger.warn(USING_EXPERIMENTAL_JS_INCREMENTAL_COMPILATION_MESSAGE) GradleIncrementalCompilerEnvironment( - computedCompilerClasspath, changedFiles, reporter, taskBuildDirectory, + computedCompilerClasspath, + if (hasFilesInTaskBuildDirectory()) changedFiles else ChangedFiles.Unknown(), + reporter, taskBuildDirectory, messageCollector, outputItemCollector, args) } else -> {