fix: ship dSYMs in SentryObjC-Dynamic xcframework#8036
Merged
Conversation
📲 Install BuildsiOS
|
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #8036 +/- ##
=============================================
- Coverage 87.313% 87.307% -0.006%
=============================================
Files 554 554
Lines 31986 31987 +1
Branches 13155 13163 +8
=============================================
- Hits 27928 27927 -1
- Misses 4010 4012 +2
Partials 48 48 see 4 files with indirect coverage changes Continue to review full report in Codecov by Harness.
|
Contributor
Performance metrics 🚀
|
| Revision | Plain | With Sentry | Diff |
|---|---|---|---|
| 6c64f68 | 1235.80 ms | 1272.35 ms | 36.55 ms |
| ccf353a | 1233.79 ms | 1268.77 ms | 34.98 ms |
| 58e87fd | 1234.27 ms | 1262.09 ms | 27.82 ms |
| 9da166b | 1222.40 ms | 1250.24 ms | 27.84 ms |
| adef457 | 1229.45 ms | 1262.67 ms | 33.22 ms |
| 5e4d0a6 | 1230.40 ms | 1255.44 ms | 25.04 ms |
| ffb6adc | 1218.60 ms | 1247.47 ms | 28.87 ms |
| 09627e8 | 1223.68 ms | 1261.95 ms | 38.27 ms |
| bdd8e0e | 1233.35 ms | 1266.96 ms | 33.60 ms |
| e3147fd | 1227.15 ms | 1257.79 ms | 30.63 ms |
App size
| Revision | Plain | With Sentry | Diff |
|---|---|---|---|
| 6c64f68 | 24.14 KiB | 1.17 MiB | 1.14 MiB |
| ccf353a | 24.14 KiB | 1.17 MiB | 1.15 MiB |
| 58e87fd | 24.14 KiB | 1.17 MiB | 1.14 MiB |
| 9da166b | 24.14 KiB | 1.16 MiB | 1.14 MiB |
| adef457 | 24.14 KiB | 1.15 MiB | 1.13 MiB |
| 5e4d0a6 | 24.14 KiB | 1.17 MiB | 1.15 MiB |
| ffb6adc | 24.14 KiB | 1.15 MiB | 1.12 MiB |
| 09627e8 | 24.14 KiB | 1.17 MiB | 1.14 MiB |
| bdd8e0e | 24.14 KiB | 1.16 MiB | 1.13 MiB |
| e3147fd | 24.14 KiB | 1.17 MiB | 1.14 MiB |
f377ad4 to
636015e
Compare
itaybre
commented
Jun 11, 2026
philprime
approved these changes
Jun 11, 2026
philprime
left a comment
Member
There was a problem hiding this comment.
LGTM, thank you for fixing this
Generate dSYMs via dsymutil after linking the SentryObjC dynamic framework binary, then strip debug symbols from the binary itself. Include dSYMs when assembling the xcframework via -debug-symbols. Fixes #8035
Replace stale workflow and script references with the current SentryObjC build pipeline files.
Move the dynamic framework linking step into the static slice build job so dsymutil can access the .o files from the xcodebuild archive. Previously, the linking ran in a separate assembly job where those object files were gone, producing empty dSYMs that xcodebuild -create-xcframework rejected. Each per-SDK slice runner now also produces a dynamic framework with a valid dSYM. The assembly job downloads pre-built frameworks instead of re-linking from static libraries.
xcodebuild -create-xcframework rejects relative paths for -debug-symbols. Resolve to absolute before passing.
actions/upload-artifact flattens symlinks, breaking the versioned macOS framework layout. Tar the framework and dSYM before upload, extract after download.
The workflow now builds both static and dynamic slices, so drop "static" from the name. Update all references in release.yml, file-filters.yml, and build docs.
07b2296 to
c8c5f5b
Compare
Contributor
🚨 Detected changes in high risk code 🚨High-risk code can easily blow up and is hard to test. We had severe bugs in the past. Be extra careful when changing these files, and have an extra careful look at these:
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Description
SentryObjC-Dynamic.xcframeworkships without dSYM bundles because the customswiftcrelink step didn't extract them, and the assembly script didn't include them.Root cause
The dynamic framework is built by re-linking a static library (
libSentryObjC.a) as a dynamic library viaswiftc -emit-library. UnlikeSentry-Dynamic.xcframework(which usesxcodebuild archiveand gets dSYMs for free), this manual relink step never randsymutilto extract debug symbols.Changes
Scripts:
build-dynamic-framework-sentryobjc.sh— rundsymutilto extract dSYMs after linking, thenstrip -xto remove debug symbols from the binaryassemble-xcframework-sentryobjc.sh— detect dSYM bundles alongside frameworks and pass them via-debug-symbols(absolute path) toxcodebuild -create-xcframeworkCI workflows:
build-sentryobjc-static-slices.yml— also build the dynamic framework on the same runner sodsymutilcan access the.ofiles from thexcodebuild archivestep. Tar the framework + dSYM to preserve macOS framework symlinks through artifact uploadassemble-sentryobjc-dynamic-xcframework.yml— download and extract pre-built dynamic framework slices instead of re-linking from static librariesHousekeeping:
file-filters.yml— replace stale workflow and script references with current SentryObjC build pipeline filesFixes #8035