Switch to packaging releases as XCFrameworks #6964
Merged
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.
Turns out that
-allow-internal-distribution
exists and lets us package a Swift framework as an xcframework without using library evolution mode, which eliminates the need to do a bunch of awkward things to work around that. Switching to XCFrameworks lets us properly support all platforms with the prebuilt frameworks and simplifies the setup process (just drag the xcframework into your project and you're done, rather than having to pick the correct platform and add the strip frameworks step).Most of the changes here are just updating the examples to use the new packaging. The Swift playground example isn't tested and so turned out to have bitrotted a bit. I deleted the RubyMotion example entirely because it's been years since anyone actually gave any indication that they were using RubyMotion and we never really got it working well to begin with.
https://ci.realm.io/blue/organizations/jenkins/cocoa-pipeline/detail/cocoa-pipeline/1293/pipeline is an almost-successful run of cocoa-pipeline using this; the catalyst tests fail due to CocoaPods/CocoaPods#10224.