From 7d6cf449b15a06ed4eb87efc56abf12a4103a507 Mon Sep 17 00:00:00 2001 From: "konstantin.tskhovrebov" Date: Thu, 14 Jul 2022 12:39:37 +0200 Subject: [PATCH] [KT-53174] Add platform version to synthetic generated Podfile. --- .../org/jetbrains/kotlin/gradle/native/CocoaPodsIT.kt | 2 ++ .../targets/native/cocoapods/KotlinCocoapodsPlugin.kt | 9 +++++++++ .../targets/native/tasks/AdvancedCocoapodsTasks.kt | 9 +++++++++ 3 files changed, 20 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 198894c7a2f..06dd38e3e47 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 @@ -240,6 +240,7 @@ class CocoaPodsIT : BaseGradleIT() { fun testSyntheticProjectPodspecGeneration() { val gradleProject = transformProjectWithPluginsDsl(cocoapodsSingleKtPod, gradleVersion) gradleProject.gradleBuildScript().appendToCocoapodsBlock(""" + ios.deploymentTarget = "14.1" pod("SSZipArchive") pod("AFNetworking", "~> 4.0.1") pod("Alamofire") { @@ -251,6 +252,7 @@ class CocoaPodsIT : BaseGradleIT() { gradleProject.build("podGenIOS", "-Pkotlin.native.cocoapods.generate.wrapper=true") { assertSuccessful() val podfileText = gradleProject.projectDir.resolve("build/cocoapods/synthetic/IOS/Podfile").readText().trim() + assertTrue(podfileText.contains("platform :ios, '14.1'")) assertTrue(podfileText.contains("pod 'SSZipArchive'")) assertTrue(podfileText.contains("pod 'AFNetworking', '~> 4.0.1'")) assertTrue(podfileText.contains("pod 'Alamofire', :git => 'https://github.com/Alamofire/Alamofire.git', :tag => '5.6.1'")) 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 c8dedd5976a..f744b5e331a 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 @@ -457,6 +457,14 @@ open class KotlinCocoapodsPlugin : Plugin { } families += family + val platformSettings = when (family) { + Family.IOS -> cocoapodsExtension.ios + Family.OSX -> cocoapodsExtension.osx + Family.TVOS -> cocoapodsExtension.tvos + Family.WATCHOS -> cocoapodsExtension.watchos + else -> error("Unknown cocoapods platform: $family") + } + project.tasks.register(family.toPodGenTaskName, PodGenTask::class.java) { it.description = "Сreates a synthetic Xcode project to retrieve CocoaPods dependencies" it.podspec = podspecTaskProvider.map { task -> task.outputFile } @@ -464,6 +472,7 @@ open class KotlinCocoapodsPlugin : Plugin { it.useLibraries = project.provider { cocoapodsExtension.useLibraries } it.specRepos = project.provider { cocoapodsExtension.specRepos } it.family = family + it.platformSettings = platformSettings it.pods.set(cocoapodsExtension.pods) it.dependsOn(downloadPods) } diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/tasks/AdvancedCocoapodsTasks.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/tasks/AdvancedCocoapodsTasks.kt index 373fde9a6a3..e7b52caf4a9 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/tasks/AdvancedCocoapodsTasks.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/tasks/AdvancedCocoapodsTasks.kt @@ -408,6 +408,9 @@ open class PodGenTask : CocoapodsTask() { @get:Internal lateinit var family: Family + @get:Nested + internal lateinit var platformSettings: PodspecPlatformSettings + @get:Nested internal lateinit var specRepos: Provider @@ -480,6 +483,12 @@ open class PodGenTask : CocoapodsTask() { if (useLibraries.get().not()) { appendLine("\tuse_frameworks!") } + val deploymentTarget = platformSettings.deploymentTarget + if (deploymentTarget != null) { + appendLine("\tplatform :${platformSettings.name}, '$deploymentTarget'") + } else { + appendLine("\tplatform :${platformSettings.name}") + } pods.get().mapNotNull { buildString { append("pod '${it.name}'")