From 70ace387881a5de872ef23c718dc44737adcb91f Mon Sep 17 00:00:00 2001 From: Artem Daugel-Dauge Date: Tue, 31 Jan 2023 21:09:10 +0100 Subject: [PATCH] [Gradle] Fix library artifacts naming in generated podspec ^KT-56304 Verification Pending --- .../native/NativeLibraryDslWithCocoapodsIT.kt | 6 +++--- .../podspecs/mylib.podspec | 2 +- .../podspecs/myslib.podspec | 2 +- .../shared/build.gradle.kts | 1 + .../native/cocoapods/KotlinCocoapodsPlugin.kt | 5 ++++- .../tasks/GenerateArtifactPodspecTask.kt | 20 +++++++++++++------ 6 files changed, 24 insertions(+), 12 deletions(-) diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/native/NativeLibraryDslWithCocoapodsIT.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/native/NativeLibraryDslWithCocoapodsIT.kt index 840c51ecb62..9563819b0aa 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/native/NativeLibraryDslWithCocoapodsIT.kt +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/native/NativeLibraryDslWithCocoapodsIT.kt @@ -47,12 +47,12 @@ class NativeLibraryDslWithCocoapodsIT : BaseGradleIT() { } @Test - fun `generate podspec when assembling lib`() { + fun `generate podspec when assembling static lib`() { project { - build(":shared:assembleMylibSharedLibraryLinuxX64") { + build(":shared:assembleMylibStaticLibraryLinuxX64") { assertSuccessful() assertTasksExecuted(":shared:generateMylibPodspec") - assertFilesContentEqual("podspecs/mylib.podspec", "/shared/build/out/dynamic/mylib.podspec") + assertFilesContentEqual("podspecs/mylib.podspec", "/shared/build/out/static/mylib.podspec") } } } diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/new-kn-library-dsl-cocoapods/podspecs/mylib.podspec b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/new-kn-library-dsl-cocoapods/podspecs/mylib.podspec index 214577f4c93..824732a4591 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/new-kn-library-dsl-cocoapods/podspecs/mylib.podspec +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/new-kn-library-dsl-cocoapods/podspecs/mylib.podspec @@ -1,7 +1,7 @@ Pod::Spec.new do |spec| spec.name = 'mylib' spec.version = '0.1' - spec.vendored_library = 'mylib.dylib' + spec.vendored_library = 'libmylib.a' spec.description = <<-DESC Computes the meaning of life. diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/new-kn-library-dsl-cocoapods/podspecs/myslib.podspec b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/new-kn-library-dsl-cocoapods/podspecs/myslib.podspec index cc94d27b99c..8a8c58a22a9 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/new-kn-library-dsl-cocoapods/podspecs/myslib.podspec +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/new-kn-library-dsl-cocoapods/podspecs/myslib.podspec @@ -1,5 +1,5 @@ Pod::Spec.new do |spec| spec.name = 'myslib' spec.version = '0.1' - spec.vendored_library = 'myslib.dylib' + spec.vendored_library = 'libmyslib.dylib' end diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/new-kn-library-dsl-cocoapods/shared/build.gradle.kts b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/new-kn-library-dsl-cocoapods/shared/build.gradle.kts index e76f6fc925f..7f20220140c 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/new-kn-library-dsl-cocoapods/shared/build.gradle.kts +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/new-kn-library-dsl-cocoapods/shared/build.gradle.kts @@ -17,6 +17,7 @@ kotlin { kotlinArtifacts { Native.Library("mylib") { target = linuxX64 + isStatic = true withPodspec { attribute( 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 046045a1d3e..548e2e8d321 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 @@ -415,7 +415,10 @@ open class KotlinCocoapodsPlugin : Plugin { val podspecTaskName = lowerCamelCaseName("generate", artifactName, "podspec") val artifactType = when (artifact) { - is KotlinNativeLibrary -> GenerateArtifactPodspecTask.ArtifactType.Library + is KotlinNativeLibrary -> when { + artifact.isStatic -> GenerateArtifactPodspecTask.ArtifactType.StaticLibrary + else -> GenerateArtifactPodspecTask.ArtifactType.DynamicLibrary + } is KotlinNativeFramework -> GenerateArtifactPodspecTask.ArtifactType.Framework is KotlinNativeFatFramework -> GenerateArtifactPodspecTask.ArtifactType.FatFramework is KotlinNativeXCFramework -> GenerateArtifactPodspecTask.ArtifactType.XCFramework diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/tasks/GenerateArtifactPodspecTask.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/tasks/GenerateArtifactPodspecTask.kt index 2abbf8e2de5..d3518057261 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/tasks/GenerateArtifactPodspecTask.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/tasks/GenerateArtifactPodspecTask.kt @@ -20,7 +20,7 @@ import org.jetbrains.kotlin.gradle.utils.appendLine abstract class GenerateArtifactPodspecTask : DefaultTask() { enum class ArtifactType { - Library, Framework, FatFramework, XCFramework + StaticLibrary, DynamicLibrary, Framework, FatFramework, XCFramework } @get:Input @@ -126,18 +126,26 @@ abstract class GenerateArtifactPodspecTask : DefaultTask() { } if (vendoredKeys.none { attributes.get().containsKey(it) }) { - val vendoredKey = when (artifactTypeValue) { - Library -> vendoredLibrary + val key = when (artifactTypeValue) { + StaticLibrary, DynamicLibrary -> vendoredLibrary Framework, FatFramework, XCFramework -> vendoredFrameworks } - val vendoredValue = specName.get() + "." + when (artifactTypeValue) { - Library -> "dylib" + val prefix = when (artifactTypeValue) { + StaticLibrary, DynamicLibrary -> "lib" + else -> "" + } + + val suffix = when (artifactTypeValue) { + StaticLibrary -> "a" + DynamicLibrary -> "dylib" Framework, FatFramework -> "framework" XCFramework -> "xcframework" } - put(vendoredKey, vendoredValue) + val value = "$prefix${specName.get()}.$suffix" + + put(key, value) } } }