From dfd89a45f7bedbcd9beeaf48964ac892806dec9e Mon Sep 17 00:00:00 2001 From: Anton Lakotka Date: Thu, 14 Apr 2022 15:08:17 +0200 Subject: [PATCH] [Test] Disable Configuration Cache for native tasks cherry-picked from 538cb41a320df93ca85a194b8566ea44457187ca ^KT-43293 --- .../kotlin/gradle/HierarchicalMppIT.kt | 32 +++++++++---------- .../build.gradle.kts | 11 ++++++- .../hmppGradleConfigurationCache/foo.def | 7 ++++ .../targets/native/tasks/KotlinNativeTasks.kt | 12 ++++--- 4 files changed, 41 insertions(+), 21 deletions(-) create mode 100644 libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/hmppGradleConfigurationCache/foo.def diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/HierarchicalMppIT.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/HierarchicalMppIT.kt index f01bca8b8a5..ee066bdf716 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/HierarchicalMppIT.kt +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/HierarchicalMppIT.kt @@ -728,27 +728,27 @@ class HierarchicalMppIT : KGPBaseTest() { assertTasksExecuted(":lib:publish") } + val gccIncompatibleTasks = listOf( + ":generateProjectStructureMetadata", + ":transformCommonMainDependenciesMetadata", + ":cinteropFooLinuxX64", + ":compileKotlinLinuxX64", + ":linkDebugSharedLinuxX64", + ) + build("clean", "assemble", buildOptions = options) { - assertTasksExecuted( - ":generateProjectStructureMetadata", - ":transformCommonMainDependenciesMetadata" - ) - assertOutputContains( - """Task `:generateProjectStructureMetadata` of type `.+`: invocation of 'Task\.project' at execution time is unsupported""" - .toRegex() - ) - assertOutputContains( - """Task `:transformCommonMainDependenciesMetadata` of type `.+`: invocation of 'Task.project' at execution time is unsupported""" - .toRegex() - ) + assertTasksExecuted(gccIncompatibleTasks) + gccIncompatibleTasks.forEach { task -> + assertOutputContains( + """Task `:$task` of type `.+`: .+(at execution time is unsupported)|(not supported with the configuration cache)""" + .toRegex() + ) + } } build("clean", "assemble", buildOptions = options) { assertOutputContains("Configuration cache entry discarded") - assertTasksExecuted( - ":generateProjectStructureMetadata", - ":transformCommonMainDependenciesMetadata" - ) + assertTasksExecuted(gccIncompatibleTasks) } } } diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/hmppGradleConfigurationCache/build.gradle.kts b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/hmppGradleConfigurationCache/build.gradle.kts index 270be58937a..1082d47801f 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/hmppGradleConfigurationCache/build.gradle.kts +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/hmppGradleConfigurationCache/build.gradle.kts @@ -12,7 +12,16 @@ allprojects { kotlin { jvm() - linuxX64() + linuxX64 { + binaries { sharedLib() } + compilations.getByName("main").apply { + cinterops { + val foo by creating { + defFile(project.file("foo.def")) + } + } + } + } sourceSets { val commonMain by getting { diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/hmppGradleConfigurationCache/foo.def b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/hmppGradleConfigurationCache/foo.def new file mode 100644 index 00000000000..46aa5dfc177 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/hmppGradleConfigurationCache/foo.def @@ -0,0 +1,7 @@ +package = test.cinterop + +--- + +static int testCinterop(char* str) { + return 42; +} \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/tasks/KotlinNativeTasks.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/tasks/KotlinNativeTasks.kt index a901cfddee9..81387910295 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/tasks/KotlinNativeTasks.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/tasks/KotlinNativeTasks.kt @@ -158,6 +158,10 @@ abstract class AbstractKotlinNativeCompile< compilation.konanTarget } + init { + notCompatibleWithConfigurationCache("Task $name does not support Gradle Configuration Cache. Check KT-43293 for more info") + } + @get:Classpath override val libraries: ConfigurableFileCollection by project.provider { // Avoid resolving these dependencies during task graph construction when we can't build the target: @@ -313,10 +317,6 @@ constructor( ) : AbstractKotlinNativeCompile, StubK2NativeCompilerArguments>(objectFactory), KotlinCompile { - init { - notCompatibleWithConfigurationCache("Task $name does not support Gradle Configuration Cache. Check KT-43293 for more info") - } - @get:Input override val outputKind = LIBRARY @@ -1093,6 +1093,10 @@ open class CInteropProcess @Inject constructor(@get:Internal val settings: Defau val outputFile: File get() = outputFileProvider.get() + init { + notCompatibleWithConfigurationCache("Task $name does not support Gradle Configuration Cache. Check KT-43293 for more info") + } + // Inputs and outputs. @OutputFile