From d82681889b25f1e73c228400738f2516f6e87b0d Mon Sep 17 00:00:00 2001 From: Yahor Berdnikau Date: Thu, 15 Jul 2021 12:26:05 +0200 Subject: [PATCH] Ignore empty directories on input properties hash calculation. Annotate all '@InputFiles' and '@InputDirectory' input properties with '@IgnoreEmptyDirectories' annotation, so empty directories will be excluded from input hash calculation. ^KT-27687 Fixed --- .../kotlin/gradle/internal/kapt/KaptGenerateStubsTask.kt | 1 - .../jetbrains/kotlin/gradle/internal/kapt/KaptTask.kt | 7 ++----- .../kotlin/gradle/internal/kapt/KaptWithKotlincTask.kt | 1 - .../gradle/internal/kapt/KaptWithoutKotlincTask.kt | 1 - .../gradle/plugin/mpp/TransformKotlinGranularMetadata.kt | 1 + .../kotlin/gradle/plugin/mpp/apple/XCFrameworkTask.kt | 1 + .../pm20/TransformKotlinGranularMetadataForFragment.kt | 1 + .../kotlin/gradle/targets/js/ir/KotlinJsIrLink.kt | 1 + .../js/npm/resolver/KotlinCompilationNpmResolver.kt | 2 ++ .../gradle/targets/js/npm/tasks/KotlinNpmInstallTask.kt | 9 +++------ .../gradle/targets/js/npm/tasks/RootPackageJsonTask.kt | 1 + .../kotlin/gradle/targets/js/testing/KotlinJsTest.kt | 9 +++------ .../kotlin/gradle/targets/js/webpack/KotlinWebpack.kt | 2 ++ .../targets/native/cocoapods/CocoapodsExtension.kt | 6 +++++- .../targets/native/internal/CInteropCommonizerTask.kt | 1 - .../CopyCInteropCommonizerTaskOutputForIdeTask.kt | 1 + .../native/internal/NativeDistributionCommonizerTask.kt | 2 ++ .../targets/native/tasks/AdvancedCocoapodsTasks.kt | 1 + .../gradle/targets/native/tasks/FatFrameworkTask.kt | 2 ++ .../gradle/targets/native/tasks/KotlinNativeTasks.kt | 4 ++++ .../gradle/targets/native/tasks/KotlinNativeTest.kt | 1 + .../gradle/tasks/InspectClassesForMultiModuleIC.kt | 2 ++ .../jetbrains/kotlin/gradle/tasks/KotlinCompileCommon.kt | 1 + .../kotlin/org/jetbrains/kotlin/gradle/tasks/Tasks.kt | 7 ++++--- 24 files changed, 40 insertions(+), 25 deletions(-) diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/internal/kapt/KaptGenerateStubsTask.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/internal/kapt/KaptGenerateStubsTask.kt index ee6055bf643..ae583a5d131 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/internal/kapt/KaptGenerateStubsTask.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/internal/kapt/KaptGenerateStubsTask.kt @@ -84,7 +84,6 @@ abstract class KaptGenerateStubsTask : KotlinCompile(KotlinJvmOptionsImpl()) { fun getIfKaptClasspathIsPresent() = !kaptClasspath.isEmpty @get:Classpath - @get:InputFiles @Suppress("unused") internal abstract val kotlinTaskPluginClasspath: ConfigurableFileCollection diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/internal/kapt/KaptTask.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/internal/kapt/KaptTask.kt index d36f5f0e572..d7c0244a78c 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/internal/kapt/KaptTask.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/internal/kapt/KaptTask.kt @@ -75,17 +75,14 @@ abstract class KaptTask @Inject constructor( internal abstract val stubsDir: DirectoryProperty @get:Classpath - @get:InputFiles abstract val kaptClasspath: ConfigurableFileCollection //part of kaptClasspath consisting from external artifacts only //basically kaptClasspath = kaptExternalClasspath + artifacts built locally @get:Classpath - @get:InputFiles abstract val kaptExternalClasspath: ConfigurableFileCollection @get:Classpath - @get:InputFiles abstract val compilerClasspath: ConfigurableFileCollection @get:Internal @@ -93,6 +90,7 @@ abstract class KaptTask @Inject constructor( @get:PathSensitive(PathSensitivity.NONE) + @get:IgnoreEmptyDirectories @get:Optional @get:InputFiles abstract val classpathStructure: ConfigurableFileCollection @@ -140,7 +138,6 @@ abstract class KaptTask @Inject constructor( level = DeprecationLevel.ERROR ) @get:CompileClasspath - @get:InputFiles internal val internalAbiClasspath: FileCollection by project.provider { if (includeCompileClasspath) project.files() else classpath } @@ -152,7 +149,6 @@ abstract class KaptTask @Inject constructor( level = DeprecationLevel.ERROR ) @get:Classpath - @get:InputFiles internal val internalNonAbiClasspath: FileCollection by project.provider { if (includeCompileClasspath) classpath else project.files() } @@ -168,6 +164,7 @@ abstract class KaptTask @Inject constructor( abstract val sourceSetName: Property @get:InputFiles + @get:IgnoreEmptyDirectories @get:PathSensitive(PathSensitivity.RELATIVE) abstract val source: ConfigurableFileCollection diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/internal/kapt/KaptWithKotlincTask.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/internal/kapt/KaptWithKotlincTask.kt index e72c023c329..10a1a720d38 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/internal/kapt/KaptWithKotlincTask.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/internal/kapt/KaptWithKotlincTask.kt @@ -50,7 +50,6 @@ abstract class KaptWithKotlincTask @Inject constructor( internal val pluginOptions = CompilerPluginOptions() @get:Classpath - @get:InputFiles abstract val pluginClasspath: ConfigurableFileCollection @get:Internal diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/internal/kapt/KaptWithoutKotlincTask.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/internal/kapt/KaptWithoutKotlincTask.kt index 67edbd5eef4..8a4214f586e 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/internal/kapt/KaptWithoutKotlincTask.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/internal/kapt/KaptWithoutKotlincTask.kt @@ -49,7 +49,6 @@ abstract class KaptWithoutKotlincTask @Inject constructor( } } - @get:InputFiles @get:Classpath @Suppress("unused") abstract val kaptJars: ConfigurableFileCollection diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/TransformKotlinGranularMetadata.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/TransformKotlinGranularMetadata.kt index d6417e57129..b512015d127 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/TransformKotlinGranularMetadata.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/TransformKotlinGranularMetadata.kt @@ -35,6 +35,7 @@ open class TransformKotlinGranularMetadata } @Suppress("unused") // Gradle input + @get:IgnoreEmptyDirectories @get:InputFiles @get:PathSensitive(PathSensitivity.RELATIVE) internal val allSourceSetsMetadataConfiguration: FileCollection by lazy { diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/apple/XCFrameworkTask.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/apple/XCFrameworkTask.kt index 649d89b91e0..eb074bcbf50 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/apple/XCFrameworkTask.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/apple/XCFrameworkTask.kt @@ -171,6 +171,7 @@ abstract class XCFrameworkTask : DefaultTask() { val frameworks: List get() = allFrameworks.filter { it.buildType == buildType } + @get:IgnoreEmptyDirectories @get:InputFiles @get:PathSensitive(PathSensitivity.ABSOLUTE) @get:SkipWhenEmpty diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/TransformKotlinGranularMetadataForFragment.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/TransformKotlinGranularMetadataForFragment.kt index bc10daf624f..75009e75e34 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/TransformKotlinGranularMetadataForFragment.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/TransformKotlinGranularMetadataForFragment.kt @@ -31,6 +31,7 @@ internal open class TransformKotlinGranularMetadataForFragment } @Suppress("unused") // Gradle input + @get:IgnoreEmptyDirectories @get:InputFiles @get:PathSensitive(PathSensitivity.RELATIVE) internal val allSourceSetsMetadataConfiguration: FileCollection by lazy { diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/ir/KotlinJsIrLink.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/ir/KotlinJsIrLink.kt index 4130766eb74..b099c23263f 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/ir/KotlinJsIrLink.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/ir/KotlinJsIrLink.kt @@ -77,6 +77,7 @@ abstract class KotlinJsIrLink @Inject constructor( private val buildDir = project.buildDir @get:SkipWhenEmpty + @get:IgnoreEmptyDirectories @get:InputDirectory @get:PathSensitive(PathSensitivity.RELATIVE) internal abstract val entryModule: DirectoryProperty diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/npm/resolver/KotlinCompilationNpmResolver.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/npm/resolver/KotlinCompilationNpmResolver.kt index e4425b2d0ff..21b927910c6 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/npm/resolver/KotlinCompilationNpmResolver.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/npm/resolver/KotlinCompilationNpmResolver.kt @@ -382,10 +382,12 @@ internal class KotlinCompilationNpmResolver( val internalDependencies: Collection, @get:PathSensitive(PathSensitivity.ABSOLUTE) + @get:IgnoreEmptyDirectories @get:InputFiles val internalCompositeDependencies: Collection, @get:PathSensitive(PathSensitivity.ABSOLUTE) + @get:IgnoreEmptyDirectories @get:InputFiles val externalGradleDependencies: Collection, 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 49fb485c0f9..108d75b9016 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 @@ -6,12 +6,7 @@ package org.jetbrains.kotlin.gradle.targets.js.npm.tasks import org.gradle.api.DefaultTask -import org.gradle.api.tasks.Input -import org.gradle.api.tasks.InputFiles -import org.gradle.api.tasks.OutputFile -import org.gradle.api.tasks.PathSensitive -import org.gradle.api.tasks.PathSensitivity -import org.gradle.api.tasks.TaskAction +import org.gradle.api.tasks.* import org.jetbrains.kotlin.gradle.targets.js.nodejs.NodeJsRootPlugin import java.io.File @@ -35,12 +30,14 @@ open class KotlinNpmInstallTask : DefaultTask() { @Suppress("unused") @get:PathSensitive(PathSensitivity.ABSOLUTE) + @get:IgnoreEmptyDirectories @get:InputFiles val packageJsonFiles: Collection by lazy { resolutionManager.packageJsonFiles } @get:PathSensitive(PathSensitivity.ABSOLUTE) + @get:IgnoreEmptyDirectories @get:InputFiles val preparedFiles: Collection by lazy { nodeJs.packageManager.preparedFiles(nodeJs) 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 65e985b4e9b..0fbf96f130c 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 @@ -30,6 +30,7 @@ open class RootPackageJsonTask : DefaultTask() { } @get:PathSensitive(PathSensitivity.RELATIVE) + @get:IgnoreEmptyDirectories @get:InputFiles val packageJsonFiles: Collection by lazy { resolutionManager.packageJsonFiles diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/testing/KotlinJsTest.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/testing/KotlinJsTest.kt index 080918743f2..0ecbdd887dd 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/testing/KotlinJsTest.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/testing/KotlinJsTest.kt @@ -8,12 +8,7 @@ package org.jetbrains.kotlin.gradle.targets.js.testing import groovy.lang.Closure import org.gradle.api.file.FileCollection import org.gradle.api.file.RegularFileProperty -import org.gradle.api.tasks.Input -import org.gradle.api.tasks.InputFile -import org.gradle.api.tasks.InputFiles -import org.gradle.api.tasks.Internal -import org.gradle.api.tasks.PathSensitive -import org.gradle.api.tasks.PathSensitivity +import org.gradle.api.tasks.* import org.gradle.process.internal.DefaultProcessForkOptions import org.gradle.util.ConfigureUtil import org.jetbrains.kotlin.gradle.internal.testing.TCServiceMessagesTestExecutionSpec @@ -76,12 +71,14 @@ constructor( @Suppress("unused") @get:PathSensitive(PathSensitivity.ABSOLUTE) + @get:IgnoreEmptyDirectories @get:InputFiles val runtimeClasspath: FileCollection by lazy { compilation.runtimeDependencyFiles } @Suppress("unused") + @get:IgnoreEmptyDirectories @get:InputFiles @get:PathSensitive(PathSensitivity.ABSOLUTE) internal val compilationOutputs: FileCollection by lazy { 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 7c4466e3cab..6d898502841 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 @@ -92,6 +92,7 @@ constructor( @Suppress("unused") @get:PathSensitive(PathSensitivity.ABSOLUTE) + @get:IgnoreEmptyDirectories @get:InputFiles val runtimeClasspath: FileCollection by lazy { compilation.compileDependencyFiles @@ -151,6 +152,7 @@ constructor( @get:PathSensitive(PathSensitivity.ABSOLUTE) @get:Optional + @get:IgnoreEmptyDirectories @get:InputDirectory open val configDirectory: File? get() = projectDir.resolve("webpack.config.d").takeIf { it.isDirectory } diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/native/cocoapods/CocoapodsExtension.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/native/cocoapods/CocoapodsExtension.kt index 2f766afe213..e6ecac701a5 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/native/cocoapods/CocoapodsExtension.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/native/cocoapods/CocoapodsExtension.kt @@ -335,7 +335,11 @@ open class CocoapodsExtension(private val project: Project) { } } - data class Path(@get:InputDirectory val dir: File) : PodLocation() { + data class Path( + @get:InputDirectory + @get:IgnoreEmptyDirectories + val dir: File + ) : PodLocation() { override fun getLocalPath(project: Project, podName: String): String { return dir.absolutePath } diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/native/internal/CInteropCommonizerTask.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/native/internal/CInteropCommonizerTask.kt index fd8f90165dd..65b746c3f13 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/native/internal/CInteropCommonizerTask.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/native/internal/CInteropCommonizerTask.kt @@ -52,7 +52,6 @@ internal open class CInteropCommonizerTask : AbstractCInteropCommonizerTask() { get() = getCommonizationParameters().map { outputDirectory(it) }.toSet() @Suppress("unused") // Used for UP-TO-DATE check - @get:InputFiles @get:Classpath val commonizedNativeDistributionDependencies: Set get() = getCommonizationParameters().flatMap { parameters -> parameters.targets } diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/native/internal/CopyCInteropCommonizerTaskOutputForIdeTask.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/native/internal/CopyCInteropCommonizerTaskOutputForIdeTask.kt index c68e3fbeb19..8223d2958f5 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/native/internal/CopyCInteropCommonizerTaskOutputForIdeTask.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/native/internal/CopyCInteropCommonizerTaskOutputForIdeTask.kt @@ -15,6 +15,7 @@ internal open class CopyCommonizeCInteropForIdeTask : AbstractCInteropCommonizer private val commonizeCInteropTask: TaskProvider get() = project.commonizeCInteropTask ?: throw IllegalStateException("Missing commonizeCInteropTask") + @get:IgnoreEmptyDirectories @get:InputFiles @get:PathSensitive(PathSensitivity.ABSOLUTE) val cInteropCommonizerTaskOutputDirectories: Provider> = diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/native/internal/NativeDistributionCommonizerTask.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/native/internal/NativeDistributionCommonizerTask.kt index 841ebaa3133..46660562084 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/native/internal/NativeDistributionCommonizerTask.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/native/internal/NativeDistributionCommonizerTask.kt @@ -33,6 +33,7 @@ internal open class NativeDistributionCommonizerTask : DefaultTask() { get() = project.getAllCommonizerTargets() @get:PathSensitive(PathSensitivity.ABSOLUTE) + @get:IgnoreEmptyDirectories @get:InputDirectory @Suppress("unused") // Only for up-to-date checker. The directory with the original common libs. val originalCommonLibrariesDirectory = konanHome @@ -40,6 +41,7 @@ internal open class NativeDistributionCommonizerTask : DefaultTask() { .resolve(KONAN_DISTRIBUTION_COMMON_LIBS_DIR) @get:PathSensitive(PathSensitivity.ABSOLUTE) + @get:IgnoreEmptyDirectories @get:InputDirectory @Suppress("unused") // Only for up-to-date checker. The directory with the original platform libs. val originalPlatformLibrariesDirectory = konanHome diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/native/tasks/AdvancedCocoapodsTasks.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/native/tasks/AdvancedCocoapodsTasks.kt index aa7ca826b83..edd580ed5f1 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/native/tasks/AdvancedCocoapodsTasks.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/native/tasks/AdvancedCocoapodsTasks.kt @@ -490,6 +490,7 @@ open class PodBuildTask : DefaultTask() { internal lateinit var pod: Provider @get:PathSensitive(PathSensitivity.ABSOLUTE) + @get:IgnoreEmptyDirectories @get:InputFiles internal val srcDir: FileTree get() = project.fileTree( diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/native/tasks/FatFrameworkTask.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/native/tasks/FatFrameworkTask.kt index cee5597e37a..c8a54f2e384 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/native/tasks/FatFrameworkTask.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/native/tasks/FatFrameworkTask.kt @@ -108,12 +108,14 @@ open class FatFrameworkTask : DefaultTask() { get() = fatFramework.dSYM @get:PathSensitive(PathSensitivity.ABSOLUTE) + @get:IgnoreEmptyDirectories @get:InputFiles @get:SkipWhenEmpty protected val inputFrameworkFiles: Iterable get() = frameworks.map { project.fileTree(it.outputFile) } @get:PathSensitive(PathSensitivity.ABSOLUTE) + @get:IgnoreEmptyDirectories @get:InputFiles protected val inputDsymFiles: Iterable get() = frameworks.mapNotNull { framework -> diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/native/tasks/KotlinNativeTasks.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/native/tasks/KotlinNativeTasks.kt index 8b86c1eaaa7..00c3882acfe 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/native/tasks/KotlinNativeTasks.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/native/tasks/KotlinNativeTasks.kt @@ -147,6 +147,7 @@ abstract class AbstractKotlinNativeCompile = project.provider { compilation.compileKotlinTask.outputFile.get() } + @IgnoreEmptyDirectories @InputFiles @SkipWhenEmpty override fun getSource(): FileTree = @@ -953,6 +955,7 @@ open class CInteropProcess @Inject constructor(@get:Internal val settings: Defau val linkerOpts: List @Input get() = settings.linkerOpts + @get:IgnoreEmptyDirectories @get:InputFiles @get:PathSensitive(PathSensitivity.RELATIVE) val headers: FileCollection @@ -964,6 +967,7 @@ open class CInteropProcess @Inject constructor(@get:Internal val settings: Defau val headerFilterDirs: Set @Input get() = settings.includeDirs.headerFilterDirs.files + @get:IgnoreEmptyDirectories @get:InputFiles @get:PathSensitive(PathSensitivity.RELATIVE) val libraries: FileCollection diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/native/tasks/KotlinNativeTest.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/native/tasks/KotlinNativeTest.kt index ecdab861cfd..51cc49e67b6 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/native/tasks/KotlinNativeTest.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/native/tasks/KotlinNativeTest.kt @@ -33,6 +33,7 @@ abstract class KotlinNativeTest : KotlinTest() { val executableProperty: Property = project.objects.property(FileCollection::class.java) @get:PathSensitive(PathSensitivity.ABSOLUTE) + @get:IgnoreEmptyDirectories @get:InputFiles // use FileCollection & @InputFiles rather than @InputFile to allow for task dependencies built-into this FileCollection @get:SkipWhenEmpty @Suppress("UNUSED") // Gradle input diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/tasks/InspectClassesForMultiModuleIC.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/tasks/InspectClassesForMultiModuleIC.kt index 5763773a1d1..778709d33d7 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/tasks/InspectClassesForMultiModuleIC.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/tasks/InspectClassesForMultiModuleIC.kt @@ -31,6 +31,7 @@ internal open class InspectClassesForMultiModuleIC : DefaultTask() { (project.kotlinExtension as KotlinSingleJavaTargetExtension).target.defaultArtifactClassesListFile.get() } + @get:IgnoreEmptyDirectories @get:PathSensitive(PathSensitivity.ABSOLUTE) @get:InputFiles internal val sourceSetOutputClassesDir by lazy { @@ -52,6 +53,7 @@ internal open class InspectClassesForMultiModuleIC : DefaultTask() { @Suppress("MemberVisibilityCanBePrivate") @get:PathSensitive(PathSensitivity.ABSOLUTE) + @get:IgnoreEmptyDirectories @get:InputFiles internal val classFiles: FileCollection get() { diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/tasks/KotlinCompileCommon.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/tasks/KotlinCompileCommon.kt index b0ae22e52bb..67257592459 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/tasks/KotlinCompileCommon.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/tasks/KotlinCompileCommon.kt @@ -112,6 +112,7 @@ abstract class KotlinCompileCommon @Inject constructor( } @get:PathSensitive(PathSensitivity.RELATIVE) + @get:IgnoreEmptyDirectories @get:InputFiles internal val refinesMetadataPaths: ConfigurableFileCollection = objects.fileCollection() 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 768c1f3c04f..cf16067300b 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 @@ -94,7 +94,6 @@ abstract class AbstractKotlinCompileTool project.objects.fileCollection() @get:Classpath - @get:InputFiles internal val computedCompilerClasspath: FileCollection = project.objects.fileCollection().from({ when { useFallbackCompilerSearch -> findKotlinCompilerClasspath(project) @@ -245,7 +244,6 @@ abstract class AbstractKotlinCompile : AbstractKotl protected val multiModuleICSettings: MultiModuleICSettings get() = MultiModuleICSettings(buildHistoryFile.get().asFile, useModuleDetection.get()) - @get:InputFiles @get:Classpath open val pluginClasspath: ConfigurableFileCollection = objects.fileCollection() @@ -274,6 +272,7 @@ abstract class AbstractKotlinCompile : AbstractKotl internal val sourceSetName: Property = objects.property(String::class.java) @get:InputFiles + @get:IgnoreEmptyDirectories @get:PathSensitive(PathSensitivity.RELATIVE) internal val commonSourceSet: ConfigurableFileCollection = objects.fileCollection() @@ -808,6 +807,7 @@ abstract class Kotlin2JsCompile @Inject constructor( override fun getSourceRoots() = SourceRoots.KotlinOnly.create(getSource(), sourceFilesExtensions.get()) @get:InputFiles + @get:IgnoreEmptyDirectories @get:Optional @get:PathSensitive(PathSensitivity.RELATIVE) internal val friendDependencies: FileCollection = objectFactory @@ -822,6 +822,7 @@ abstract class Kotlin2JsCompile @Inject constructor( @Suppress("unused") @get:InputFiles + @get:IgnoreEmptyDirectories @get:Optional @get:PathSensitive(PathSensitivity.RELATIVE) internal val sourceMapBaseDirs: FileCollection? @@ -936,7 +937,6 @@ abstract class Kotlin2JsCompile @Inject constructor( } data class KotlinCompilerPluginData( - @get:InputFiles @get:Classpath val classpath: FileCollection, @@ -954,6 +954,7 @@ data class KotlinCompilerPluginData( val inputs: Map, @get:InputFiles + @get:IgnoreEmptyDirectories @get:PathSensitive(PathSensitivity.RELATIVE) val inputFiles: Set,