From b38175207422d93a54cd4b25f973c9226428fb3b Mon Sep 17 00:00:00 2001 From: Artem Daugel-Dauge Date: Tue, 4 Jul 2023 18:43:48 +0200 Subject: [PATCH] [Gradle] Fix cocoapods' cinterops UTD ^KT-60112 Verification Pending --- .../kotlin/gradle/native/CocoaPodsIT.kt | 24 +++++++++++++++++++ .../native/cocoapods/KotlinCocoapodsPlugin.kt | 4 ++++ 2 files changed, 28 insertions(+) diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/native/CocoaPodsIT.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/native/CocoaPodsIT.kt index 8dc7febdb6b..e6eb74c1bcd 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/native/CocoaPodsIT.kt +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/native/CocoaPodsIT.kt @@ -250,6 +250,30 @@ class CocoaPodsIT : KGPBaseTest() { } } + @DisplayName("cinterops UTD after pod change") + @GradleTest + fun testCinteropsUTDAfterPodChange(gradleVersion: GradleVersion) { + nativeProjectWithCocoapodsAndIosAppPodFile(gradleVersion = gradleVersion) { + + val podDeclaration = """pod("Base64", version = "1.0.1")""" + buildGradleKts.addCocoapodsBlock(podDeclaration) + + buildWithCocoapodsWrapper(podImportTaskName) { + assertTasksExecuted(":cinteropBase64IOS") + } + + buildWithCocoapodsWrapper(podImportTaskName) { + assertTasksUpToDate(":cinteropBase64IOS") + } + + buildGradleKts.replaceText(podDeclaration, """pod("Base64", version = "1.1.2")""") + + buildWithCocoapodsWrapper(podImportTaskName) { + assertTasksExecuted(":cinteropBase64IOS") + } + } + } + @DisplayName("Installing pod without pod file") @GradleTest fun testPodInstallWithoutPodFile(gradleVersion: GradleVersion) { diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/cocoapods/KotlinCocoapodsPlugin.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/cocoapods/KotlinCocoapodsPlugin.kt index 6341b8ca135..9348159351c 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/cocoapods/KotlinCocoapodsPlugin.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/cocoapods/KotlinCocoapodsPlugin.kt @@ -338,6 +338,10 @@ open class KotlinCocoapodsPlugin : Plugin { val podBuildTaskProvider = project.getPodBuildTaskProvider(target, pod) val buildSettingsFileProvider = project.buildSettingsFileProvider(pod, target) interopTask.inputs.file(buildSettingsFileProvider) + + // Since we can't properly declare frameworks as inputs (see below) it's the best approximation + interopTask.inputs.files(podBuildTaskProvider.flatMap { it.srcDir }) + interopTask.dependsOn(podBuildTaskProvider) interopTask.doFirst { _ ->