From e16f03fc49c941230c7ceb6a51907e1eae52b8e8 Mon Sep 17 00:00:00 2001 From: Anton Lakotka Date: Sun, 15 Oct 2023 23:12:40 +0200 Subject: [PATCH] [Gradle] Test commonize native distribution and compile task with GCC It should be possible to commonize native distribution from clean state and compile shared native code in the same gradle build with enabled configuration cache. ^KT-61359 In Progress --- .../jetbrains/kotlin/gradle/CommonizerIT.kt | 31 +++++++++++++++++++ .../build.gradle.kts | 13 ++++++++ .../src/nativeMain/kotlin/Main.kt | 5 +++ 3 files changed, 49 insertions(+) create mode 100644 libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/commonizeNativeDistributionWithConfigurationCache/build.gradle.kts create mode 100644 libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/commonizeNativeDistributionWithConfigurationCache/src/nativeMain/kotlin/Main.kt diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/CommonizerIT.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/CommonizerIT.kt index 1f62e214761..b15f88a0608 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/CommonizerIT.kt +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/CommonizerIT.kt @@ -90,6 +90,37 @@ open class CommonizerIT : KGPBaseTest() { } } + @DisplayName("KT-61359: commonize native distribution and compile with configuration cache") + @GradleTest + fun testCleanCommonizationWithConfigurationCache(gradleVersion: GradleVersion) { + project("commonizeNativeDistributionWithConfigurationCache", gradleVersion) { + val buildOptionsWithConfigurationCache = buildOptions.copy(configurationCache = true) + // Clean native distribution -> capture configuration cache state + build(":cleanNativeDistributionCommonization") + build(":compileNativeMainKotlinMetadata", buildOptions = buildOptionsWithConfigurationCache) { + assertTasksExecuted(":commonizeNativeDistribution") + assertTasksExecuted(":compileNativeMainKotlinMetadata") + assertConfigurationCacheStored() + } + + // Clean task outputs -> reuse configuration cache + build(":clean") + build(":compileNativeMainKotlinMetadata", buildOptions = buildOptionsWithConfigurationCache) { + assertTasksUpToDate(":commonizeNativeDistribution") + assertTasksExecuted(":compileNativeMainKotlinMetadata") + assertConfigurationCacheReused() + } + + // full clean -> reuse configuration cache + build("clean", ":cleanNativeDistributionCommonization") + build(":compileNativeMainKotlinMetadata", buildOptions = buildOptionsWithConfigurationCache) { + assertTasksExecuted(":commonizeNativeDistribution") + assertTasksExecuted(":compileNativeMainKotlinMetadata") + assertConfigurationCacheReused() + } + } + } + @DisplayName("Commonize Curl Interop UP-TO-DATE check") @GradleTest fun testCommonizeCurlInteropUTDCheck(gradleVersion: GradleVersion) { diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/commonizeNativeDistributionWithConfigurationCache/build.gradle.kts b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/commonizeNativeDistributionWithConfigurationCache/build.gradle.kts new file mode 100644 index 00000000000..71b0e23151e --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/commonizeNativeDistributionWithConfigurationCache/build.gradle.kts @@ -0,0 +1,13 @@ +plugins { + kotlin("multiplatform") +} + +repositories { + mavenLocal() + mavenCentral() +} + +kotlin { + linuxX64() + linuxArm64() +} \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/commonizeNativeDistributionWithConfigurationCache/src/nativeMain/kotlin/Main.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/commonizeNativeDistributionWithConfigurationCache/src/nativeMain/kotlin/Main.kt new file mode 100644 index 00000000000..b01a2121c77 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/commonizeNativeDistributionWithConfigurationCache/src/nativeMain/kotlin/Main.kt @@ -0,0 +1,5 @@ +package lib + +fun main() { + platform.zlib.ZLIB_VERNUM +} \ No newline at end of file