Skip to content

Commit 127c49c

Browse files
committed
Merge branch 'feat/spm4kmp-phase2-samples' into feat/spm4kmp-phase3-plugin-autoinstall
# Conflicts: # CHANGELOG.md
2 parents d941ef4 + cd76352 commit 127c49c

20 files changed

Lines changed: 57 additions & 59 deletions

File tree

.gitignore

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,7 @@ local.properties
1717

1818
Pods/
1919

20-
# spm4Kmp (io.github.frankois944.spmForKmp) generated sources/packages.
21-
# Regenerated by swiftPackageConfig on every build; not needed for klib publishing.
20+
# spm4Kmp generated sources/packages (regenerated on every build)
2221
**/exportedSentryCocoa/
2322
**/src/swift/
2423

CHANGELOG.md

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,18 @@
22

33
## Unreleased
44

5+
### Breaking Changes
6+
7+
- Rename the bundled Sentry Cocoa cinterop package prefix from `cocoapods` to `cocoa` ([#557](https://github.com/getsentry/sentry-kotlin-multiplatform/pull/557))
8+
- If you imported `cocoapods.Sentry.*` directly in Apple source sets, replace it with `cocoa.Sentry.*`. Code using public SDK types such as `SentryPlatformOptions` is unaffected.
9+
510
### Features
611

712
- Auto-install Sentry Cocoa for Apple targets when the spm4Kmp plugin (`io.github.frankois944.spmForKmp`) is applied ([#559](https://github.com/getsentry/sentry-kotlin-multiplatform/pull/559))
813

914
### Internal
1015

1116
- Build the Apple SDK against Sentry Cocoa via SwiftPM (spm4Kmp) instead of the Kotlin CocoaPods plugin ([#557](https://github.com/getsentry/sentry-kotlin-multiplatform/pull/557))
12-
- The published klibs keep the `cocoapods.Sentry` import prefix, so no changes are required for consumers
1317

1418
### Dependencies
1519

sentry-kotlin-multiplatform/build.gradle.kts

Lines changed: 10 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,6 @@ kotlin {
5858
}
5959
jvm()
6060

61-
// Apple targets are declared once here and reused for the spm4Kmp swiftPackageConfig below.
6261
val appleTargets =
6362
listOf(
6463
iosArm64(),
@@ -160,17 +159,16 @@ kotlin {
160159

161160
appleTargets.forEach { target ->
162161
target.swiftPackageConfig(cinteropName = "sentryCocoa") {
163-
// Restore the legacy Kotlin CocoaPods `cocoapods.Sentry.*` import prefix so
164-
// published klib symbols stay identical and consumers keep building unchanged.
165-
packageDependencyPrefix = "cocoapods"
162+
// Part of the published klib API: consumers can import `cocoa.Sentry.*` directly,
163+
// so renaming this prefix is a breaking change.
164+
packageDependencyPrefix = "cocoa"
166165
minIos = Config.Cocoa.iosDeploymentTarget
167166
minMacos = Config.Cocoa.osxDeploymentTarget
168167
minTvos = Config.Cocoa.tvosDeploymentTarget
169168
minWatchos = Config.Cocoa.watchosDeploymentTarget
170-
// KT-41709 workaround forwarded to the exported-product cinterop: Sentry classes
171-
// containing "Meta" in their name (e.g. SentryMechanismMeta) are otherwise declared
172-
// twice. extraOpts is passed straight to cinterop (unlike compilerOpts, which only
173-
// populates the generated def's clang flags). https://youtrack.jetbrains.com/issue/KT-41709
169+
// KT-41709: Sentry classes with "Meta" in the name (e.g. SentryMechanismMeta) are
170+
// otherwise declared twice. Must be extraOpts — compilerOpts only populates the
171+
// generated def's clang flags. https://youtrack.jetbrains.com/issue/KT-41709
174172
extraOpts =
175173
listOf(
176174
"-compiler-option",
@@ -191,10 +189,8 @@ kotlin {
191189
}
192190
}
193191

194-
// The private `Sentry.Internal` cinterop uses self-contained, Foundation-only headers
195-
// (private Sentry API redeclared as standalone ObjC interfaces); its symbols resolve at
196-
// link time against the Sentry framework above, so it is independent of how that
197-
// framework is delivered (CocoaPods vs SwiftPM) and can stay unchanged.
192+
// The private `Sentry.Internal` cinterop has self-contained headers; its symbols
193+
// resolve at link time against the Sentry framework regardless of how it is delivered.
198194
target.compilations.getByName("main") {
199195
cinterops.create("Sentry.Internal") {
200196
includeDirs("$projectDir/src/nativeInterop/cinterop/SentryInternal")
@@ -221,9 +217,8 @@ val sentryCocoaScratchDir = layout.buildDirectory.dir("spmKmpPlugin/sentryCocoa/
221217
val copyWatchosSimulatorSentryFramework =
222218
tasks.register<Copy>("copyWatchosSimulatorSentryFramework") {
223219
dependsOn("SwiftPackageConfigAppleSentryCocoaCompileSwiftPackageWatchosSimulatorArm64")
224-
// The xcframework only exists once the compile task above has resolved the Swift
225-
// package, so the slice must be selected with a pattern instead of listing the
226-
// directory, which Gradle would do while computing task dependencies.
220+
// Select the slice with a pattern: the xcframework doesn't exist yet when Gradle
221+
// computes task dependencies, only after the compile task resolves the Swift package.
227222
from(sentryCocoaScratchDir.map { it.dir("artifacts/sentry-cocoa/Sentry/Sentry.xcframework") }) {
228223
include("watchos-*-simulator/Sentry.framework/**")
229224
}

sentry-kotlin-multiplatform/src/appleMain/kotlin/io/sentry/kotlin/multiplatform/SentryApple.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ package io.sentry.kotlin.multiplatform
22

33
import Internal.Sentry.SentryCrashMonitorTypeCPPException
44
import Internal.Sentry.SentryDependencyContainer
5-
import cocoapods.Sentry.SentrySDK
5+
import cocoa.Sentry.SentrySDK
66
import io.sentry.kotlin.multiplatform.nsexception.setSentryUnhandledExceptionHook
77

88
/** Convenience extension to setup unhandled exception hook */

sentry-kotlin-multiplatform/src/appleMain/kotlin/io/sentry/kotlin/multiplatform/SentryBridge.apple.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ package io.sentry.kotlin.multiplatform
22

33
import Internal.Sentry.PrivateSentrySDKOnly
44
import Internal.Sentry.kSentryLevelError
5-
import cocoapods.Sentry.SentrySDK
5+
import cocoa.Sentry.SentrySDK
66
import io.sentry.kotlin.multiplatform.extensions.toCocoaBreadcrumb
77
import io.sentry.kotlin.multiplatform.extensions.toCocoaUser
88
import io.sentry.kotlin.multiplatform.extensions.toCocoaUserFeedback
Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,16 @@
11
package io.sentry.kotlin.multiplatform
22

3-
import cocoapods.Sentry.SentryAttachment
4-
import cocoapods.Sentry.SentryBreadcrumb
5-
import cocoapods.Sentry.SentryEvent
6-
import cocoapods.Sentry.SentryException
7-
import cocoapods.Sentry.SentryId
8-
import cocoapods.Sentry.SentryLevel
9-
import cocoapods.Sentry.SentryMessage
10-
import cocoapods.Sentry.SentryOptions
11-
import cocoapods.Sentry.SentryScope
12-
import cocoapods.Sentry.SentryUser
13-
import cocoapods.Sentry.SentryUserFeedback
3+
import cocoa.Sentry.SentryAttachment
4+
import cocoa.Sentry.SentryBreadcrumb
5+
import cocoa.Sentry.SentryEvent
6+
import cocoa.Sentry.SentryException
7+
import cocoa.Sentry.SentryId
8+
import cocoa.Sentry.SentryLevel
9+
import cocoa.Sentry.SentryMessage
10+
import cocoa.Sentry.SentryOptions
11+
import cocoa.Sentry.SentryScope
12+
import cocoa.Sentry.SentryUser
13+
import cocoa.Sentry.SentryUserFeedback
1414

1515
internal typealias CocoaUser = SentryUser
1616
internal typealias CocoaBreadcrumb = SentryBreadcrumb
@@ -23,4 +23,4 @@ internal typealias CocoaUserFeedback = SentryUserFeedback
2323
internal typealias CocoaSentryEvent = SentryEvent
2424
internal typealias CocoaMessage = SentryMessage
2525
internal typealias CocoaSentryException = SentryException
26-
internal typealias CocoaSentryLogger = cocoapods.Sentry.SentryLogger
26+
internal typealias CocoaSentryLogger = cocoa.Sentry.SentryLogger

sentry-kotlin-multiplatform/src/appleMain/kotlin/io/sentry/kotlin/multiplatform/extensions/SentryEventExtensions.apple.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package io.sentry.kotlin.multiplatform.extensions
22

3-
import cocoapods.Sentry.SentryId
3+
import cocoa.Sentry.SentryId
44
import io.sentry.kotlin.multiplatform.CocoaSentryEvent
55
import io.sentry.kotlin.multiplatform.SentryEvent
66

sentry-kotlin-multiplatform/src/appleMain/kotlin/io/sentry/kotlin/multiplatform/extensions/SentryLevelExtensions.apple.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ package io.sentry.kotlin.multiplatform.extensions
22

33
import io.sentry.kotlin.multiplatform.SentryLevel
44
import kotlinx.cinterop.convert
5-
import cocoapods.Sentry.SentryLevel as CocoaSentryLevel
5+
import cocoa.Sentry.SentryLevel as CocoaSentryLevel
66

77
internal fun SentryLevel.toCocoaSentryLevel() = this.toInt().convert<CocoaSentryLevel>()
88

sentry-kotlin-multiplatform/src/appleMain/kotlin/io/sentry/kotlin/multiplatform/extensions/SentryOptionsExtensions.apple.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
package io.sentry.kotlin.multiplatform.extensions
22

3-
import cocoapods.Sentry.SentryHttpStatusCodeRange
4-
import cocoapods.Sentry.experimental
3+
import cocoa.Sentry.SentryHttpStatusCodeRange
4+
import cocoa.Sentry.experimental
55
import io.sentry.kotlin.multiplatform.CocoaSentryOptions
66
import io.sentry.kotlin.multiplatform.SentryEvent
77
import io.sentry.kotlin.multiplatform.SentryOptions

sentry-kotlin-multiplatform/src/appleMain/kotlin/io/sentry/kotlin/multiplatform/log/CocoaSentryLoggerAdapter.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
package io.sentry.kotlin.multiplatform.log
22

33
import io.sentry.kotlin.multiplatform.SentryAttributes
4-
import cocoapods.Sentry.SentryLogger as CocoaSentryLogger
4+
import cocoa.Sentry.SentryLogger as CocoaSentryLogger
55

66
/**
77
* Adapter that bridges KMP [SentryLogger] to the Cocoa SDK's [CocoaSentryLogger].

0 commit comments

Comments
 (0)