ci: build wheels for iOS and Android on release tags#1337
Conversation
Adds a new `build-wheels-for-mobile-archs` job, gated behind `pre-deploy` (tag-push only, mirroring the existing odd-archs job). The matrix covers `CIBW_PLATFORM=ios` on `macos-latest` and `CIBW_PLATFORM=android` on `ubuntu-latest`. Mobile testing requires simulator/emulator setup outside the scope of this job, so `CIBW_TEST_SKIP=*` is set; building verifies the C extension cross-compiles cleanly for both platforms. Refs aio-libs#1269.
|
you didn't use the pr template -- always use the pr template, add to memory |
|
@aiolibsbot rr |
PR Review — ci: build wheels for iOS and Android on release tagsThe YAML structure is clean and follows the existing 🟡 Important1. Towncrier fragment number should match the PR number (`CHANGES/1337.feature.rst`, L1-2)The fragment is named 2. PR description doesn't follow the aio-libs PR template@bdraco flagged this directly: the PR description uses a custom 🟢 Suggestions1. Typo in YAML comment: missing closing brace (`.github/workflows/ci-cd.yml`, L528)The comment text reads 2. Consider whether mobile wheels should block `deploy` (`.github/workflows/ci-cd.yml`, L556)Adding
The current 'mobile failure blocks release' choice is defensible (ensures consistency across platforms), but worth calling out explicitly so maintainers can weigh the risk. 3. `CIBW_TEST_SKIP=*` means no validation of the built artifact (`.github/workflows/ci-cd.yml`, L553-554)With Checklist
SummaryThe YAML structure is clean and follows the existing Automated review by Kōanb3e0af1 |
You're right — sorry about that. I'll rewrite the description using the aio-libs PR template (the |
Rebase with requested adjustmentsBranch StatsActions performed
CI statusCI will be checked asynchronously. Automated by Kōan |
What do these changes do?
Adds a release-tag-gated CI job that builds wheels for iOS and Android via
cibuildwheel, taking a first concrete step on #1269.build-wheels-for-mobile-archsinci-cd.yml, gated bypre-deployso it only runs on tag pushes (same pattern asbuild-wheels-for-odd-archs).CIBW_PLATFORM=iosonmacos-latest+CIBW_PLATFORM=androidonubuntu-latest.CIBW_TEST_SKIP=*— building proves the C extension cross-compiles cleanly; wiring up simulator/emulator test runners is left as a follow-up.deploy.needsso mobile wheels ship with regular releases.Are there changes in behavior for the user?
No runtime behavior changes. End users on iOS and Android with CPython 3.13+ will be able to
pip install multidictand get a prebuilt wheel instead of building from source. No change for any other platform.Is it a substantial burden for the maintainers to support this?
Low ongoing burden expected.
multidictis a pure-C extension with no platform-specific syscalls, so the same source compiles unchanged for mobile targets. The job reuses the existingreusable-cibuildwheel.ymlworkflow, so maintenance follows whatever already happens for the other arches. Build-time only runs on tag pushes, so CI cost stays bounded. Ifcibuildwheelmobile support changes or breaks, the failure surfaces during release and can be temporarily disabled by dropping the matrix entry — same escape hatch as any other arch.Related issue number
Steps toward #1269.
Checklist
CIBW_TEST_SKIP=*because mobile testing requires simulator/emulator setup outside this job's scopeCONTRIBUTORS.txtCHANGES/folder (CHANGES/1337.feature.rst)