Comments (6)
Weird. Carthage should just support this. But it doesn't. I am using carthage build --archive --use-xcframeworks
in the release script. Looking into what Carthage is doing, it's generating Carthage/Build/Quick.xcframework
, but the Quick.framework.zip
file that it creates doesn't contain that. That feels like a bug in Carthage they should look at. Quick 7.3.0 will use a different script to generate Quick.framework.zip
, which will include Carthage/Build/Quick.xcframework
.
from quick.
This is fixed in the now-current Quick 7.3.0 and Nimble 12.3.0, which include both xcframework and legacy framework binaries.
from quick.
Thanks! I'll give it a shot.
from quick.
Carthage was able to download the XCFramework, but Xcode now fails to to build with the following error.
failed to build module 'Quick'; this SDK is not supported by the compiler (the SDK is built with 'Apple Swift version 5.8.1 (swiftlang-5.8.0.124.5 clang-1403.0.22.11.100)', while this compiler is 'Apple Swift version 5.7.2 (swiftlang-5.7.2.135.5 clang-1400.0.29.51)'). Please select a toolchain which matches the SDK.
It feels like there's a couple things going on.
- Our project is still using Swift 5.7 but the XCFramework is now built with 5.8.
- I believe the swift version used to build a framework must be <= the swift version adding it to a project.
- Carthage isn't catching that the swift version that built the framework is newer than the swift version, so it completes successfully, but Xcode fails later.
- I've filed an issue with Carthage for it.
Carthage/Carthage#3353 - Nimble seems to be accidentally caught by Carthge because it has a watchOS part of the xcframework that doesnt contain a
.swiftinterface
file.
- I've filed an issue with Carthage for it.
Was it intentional to raise the minimum supported swift version to 5.8? The last related change I can see in the release notes was in https://github.com/Quick/Quick/releases/tag/v6.1.0 dropping support for 5.6.
from quick.
Was it intentional to raise the minimum supported swift version to 5.8?
No, but I did build this using the swift included with Xcode 14.3.1, which is 5.8.
I'm very strongly considering not including prebuilt frameworks because of all these gotchas. For Quick 7.3.0 and Nimble 12.3.0, I'll remove the prebuilt frameworks.
from quick.
Removing them would resolve the issue for now. We've also updated our project to not use the binary from Quick
.
carthage build --platform iOS --cache-builds --use-xcframeworks --no-use-binaries Quick
Future Improvement Idea
Instead of manually building the frameworks, there could be a GitHub workflow that does it. It could automatically be run when a new release is created on Github. The workflow could be set to use a fixed version of Xcode that contains the minimum supported swift version. Then it's not dependant on the Xcode version installed locally when the release is made, so it wont change based on who is making the release.
from quick.
Related Issues (20)
- How to get rid of MainActor warning on all "it" tests? HOT 4
- MainActor is ignored when using `fit` HOT 1
- `QuickConfiguration` could inherit `@MainActor` attribute from spec class. HOT 4
- Upgrading a large codebase to Quick 6 is really problematic and `toEventually` is broken in Obj-C HOT 9
- Quick tests are not executed when there are some `XCTestCase` tests in the target HOT 2
- Testing with `Behavior<Context>` does not seem to support Swift concurrency HOT 2
- `@MainActor` for QuickSpec subclass doesn't work when installing Quick via SPM HOT 4
- Failed to build module 'Quick'; this SDK is not supported by the compiler HOT 1
- Would it be possible to hide the new/old test naming behind a feature flag? HOT 3
- Realm does not work with Async Specs HOT 9
- Allow async `xit` HOT 1
- Integrate individual platform targets into a single Multiplatform target.
- No Objective C support in SwiftPM HOT 1
- AsyncSpecs not run in bulk on Quick 7 (but run individuately) HOT 6
- Make `xitBehavesLike` with a `String` as a name publicly available (sync and async) HOT 1
- Is this framework support SwiftUI Unit / UI testing ? HOT 1
- Mutation of captured var 'ocean' in concurrently-executing code HOT 1
- `configure(_:)` on a `QuickConfiguration` subclass is not called when you do not have any `QuickSpec`s or `AsyncSpec`s.
- Add visionOS support HOT 3
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from quick.