Provide a way to target a single "slice" of an iOS build
- Dominant language
- Python
- Stars
- 3.3k
- Forks
- 549
- Avg merge
- 1d 4h
- Merged PRs (30d)
- 40
Description
### What is the problem or limitation you are having?
Building for iOS involves installing dependencies for both iOS devices and the iPhone Simulator. If you're doing a "quick test" - especially if you're testing a binary wheel - it would be desirable to be able to target a single "slice" of the iOS target.
### Describe the solution you'd like
An extra option on iOS commands, working in conjunction with `-r` when appropriate, that *only* installs dependencies for a single platform.
* `briefcase create --sim-only` would only install simulator dependencies
* `briefcase update -r --sim-only` would only install simulator dependencies
* `briefcase create --device-only` would only install simulator dependencies
* `briefcase update -r --device-only` would only install device dependencies
### Describe alternatives you've considered
Do nothing. It's mildly inconvenient to require both wheels, but ultimately, you're going to need them, so it might as well be enforced.
### Additional context
This will get a little messy if you run `briefcase create iOS --device-only` and then `briefcase run iOS`, because you won't have simulator dependencies installed. If possible, it would be good to catch this case as an error; but it could also be considered part of the scope of #807, as it's functionally the same as adding something to `requires` after calling `briefcase create iOS`.
There's also some overlap with #2230. That ticket addresses reporting an error when you've got a missing wheel out of the required set; this feature request provides for avoiding the need to provide wheels for platforms you're not actively testing.
There's also an analog with the `universal` option on macOS. That option can be configured for an entire app; but doesn't address the case of "just build for my current platform right now" as a speedup for rapid testing. It's arguable whether it would be desirable to have an analogous option for macOS builds, because universal builds actually involve some binary manipulation, which you really need to make sure works as part of the testing process.
Contributor guide
Research direction
Start by tracing the iOS create and update commands, including how -r selects dependencies for simulator and device targets. Review the interaction with #807 and #2230, then define how --sim-only and --device-only behave and how missing dependencies are reported. Done means the requested commands install only the selected platform's dependencies and handle incompatible run cases consistently.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- ios, python
- Domain
- build-system, cli, mobile-dev
- Issue type
- Feature
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100