* Add an integration test with the meson backend
* Modify script to allow testing of the GHA action on a PR
* Try adding cython to languages in meson config
* Revert "Try adding cython to languages in meson config"
This reverts commit 50378a1c7e38665492ad0c683b178e4d96928e1e.
* Pass --vsenv to meson on windows
As seen here https://github.com/matplotlib/matplotlib/blob/9957c394bd01deb7a9bd9cb27804f447a52dc522/.github/workflows/cibuildwheel.yml#L114
* Disable win32 builds for the meson test
* Move the windows-specific config into the test project definition
This is so it can be tested with bin/run_example_ci_configs.py
* Add some docs to the FAQ about meson on windows
* Update bin/run_example_ci_configs.py
Co-authored-by: Henry Schreiner <HenrySchreinerIII@gmail.com>
---------
Co-authored-by: Henry Schreiner <HenrySchreinerIII@gmail.com>
test: replace badssl.com with google.com/generate_204 in SSL test
Switch to a more reliable HTTPS endpoint and add retry logic with
exponential backoff to reduce flaky test failures.
* Bump to Pyodide v0.29.2
* Bump the Pyodide constraints too
* Include new auditwheel-emscripten and pyodide-build release
* Bump pyodide-build in test to a newer version
Co-Authored-By: Gyeongjae Choi <def6488@gmail.com>
---------
Co-authored-by: Gyeongjae Choi <def6488@gmail.com>
* Make the {project} placeholder available to repair-wheel-command
* Add separate test for {project} placeholder in repair-wheel-command
* Make the {project} placeholder available to repair-wheel-command
* reduce duplicated work in tests
* Use a valid wheel filename for the post-repair name
---------
Co-authored-by: Joe Rickerby <joerick@mac.com>
pypa/manylinux now has a manylinux_2_35_armv7l image allowing for better C++20 support.
piwheels is still building for Debian Bullseye so keeping manylinux_2_31 as the default image.
* Don't constrain build-system.requires with dependency-versions
* Remove setting of VIRTUALENV_PIP (it doesn't appear to have any effect)
* Alter tests to assert the versions in before_build, not setup.py
* Skip the util-test on linux
---------
Co-authored-by: Henry Schreiner <HenrySchreinerIII@gmail.com>
* Update Android test-command handling
* Update to Python 3.13.8
* Update documentation and tests
* Deal with `sysconfig.get_config_var("exec_prefix")` changing in Python 3.14, and add cross venv tests
* Allow test commands starting with `python3`
* test-command cleanups
* [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
---------
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
* Fix a few bugs in run_example_ci_config tooling
Github-deploy.yml had a fix to make it work out-of-the-box.
* Add flaky marker on test_ssl
(due to external internet access during the test, it does occasionally fail)
* Add Python 3.14 for Android
* Simplify GitHub Actions workflows
* Update tests
* Allow running `patchelf` even when the environment's `bin` directory is not on the PATH
* Search in both the environment's bin directory and the PATH
* Use `sysconfig.get_path`
* Fix lint warning
* ci: rework tests to break out ios/android tests
Signed-off-by: Henry Schreiner <henryschreineriii@gmail.com>
* Apply suggestions from code review
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* Apply suggestions from code review
* ci: fix check for wheels
Signed-off-by: Henry Schreiner <henryschreineriii@gmail.com>
* Update .github/workflows/test.yml
* tests: pass via flag instead of envvar
Signed-off-by: Henry Schreiner <henryschreineriii@gmail.com>
* tests: apply to serial/parallel
Signed-off-by: Henry Schreiner <henryschreineriii@gmail.com>
* tests: join together marks
Signed-off-by: Henry Schreiner <henryschreineriii@gmail.com>
* tests: join together marks
Signed-off-by: Henry Schreiner <henryschreineriii@gmail.com>
* ci: break up azure job
Signed-off-by: Henry Schreiner <henryschreineriii@gmail.com>
* ci: use matrix for azure pipelines
Signed-off-by: Henry Schreiner <henryschreineriii@gmail.com>
* Try installing Java on macos as well
* Revert "Try installing Java on macos as well"
This reverts commit aedf0f5106d2467938705b85180a0b249d49b99d.
* Try to get the most basic android test running first
* Rename platform to test_select, move headers in run_tests
Maybe it's a personal thing, but the header location was really making
me have to think more than I needed to look at that file!
* Only run docker unit tests on machines that are testing linux
* Update the flag name in azure-pipelines too
* Update azure-pipelines.yml
---------
Signed-off-by: Henry Schreiner <henryschreineriii@gmail.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Matthieu Darbois <mayeut@users.noreply.github.com>
Co-authored-by: Joe Rickerby <joerick@mac.com>
* Add Android to resource files
* Add Android to miscellaneous places
* Add Android documentation
* Docs cleanups
* Add Android platform module; implement top-level structure and target Python installation
* Implement setup_env and build_wheel
* lru-dict build working
* Alter prefix in sysconfigdata file; fix various issues with FLAGS variables
* Implement Android testing
* Add type annotations to _cross_venv
* Revert Python 3.8 to pip 25.0.1
* Make test-sources required on Android
* Add Android integration tests
* Test cleanups
* Add test of all available Python versions
* Update test-sources and test-command behavior to match iOS
* Documentation cleanups
* Replace Builder class with a set of global functions
* Rename "env" to "build_env"
* Remove Chaquopy repository from default pip command line
* Move native_platform to platforms module
* Fix parse_config_settings
Co-authored-by: Joe Rickerby <joerick@mac.com>
* Add unit tests for parse_config_settings and arch_synonym
* Make `shell_prepared` arguments keyword-only, and add tests for the commands that use it
* Replace `importlib.util.spec_from_file_location` with `runpy.run_path`
* Use python-build-standalone
* Update Android Python
* Enable KVM in Linux CI
* Move KVM code to test_android.py
* Use Java 17 on Azure
* Install emulator if necessary before running -accel-check
* Free up additional disk space on Linux runners
* Add sudo
* Skip emulator tests on CI platforms that don't support it
* Download Android Python from Maven Central
* Free up more disk space on Linux runners
* fix: minor fixups
Signed-off-by: Henry Schreiner <henryschreineriii@gmail.com>
* Set sysconfig._BASE_PREFIX to support sysconfig.get_path("include")
* Get ANDROID_API_LEVEL from the build environment, not cibuildwheel's own environment
* Correct relative path of test-sources
* Pass a CMake toolchain file to the build
* Add "repair" step which adds libc++ to the wheel when necessary
* Add missing needs_emulator decorator
* Provide useful error message if ANDROID_HOME is not set
* Remove use of HOST environment variable
* Update to Python 3.15.5
* Fix PyLint warnings, clarify comment
* Group common arguments into a dataclass
* Handle environment variables containing newlines
* Discourage the use of `pytest` test commands without `python -m`
* Use single quotes in user-visible messages
* Improve testing documentation
* Pass wheel filename to `log.build_end`
* In GitHub Actions example, skip Android tests on macOS
* Correct relative paths in `patchelf --set-rpath`
* Clarify `test-sources` docs
* Update to Python 3.13.5+20250722.214220
---------
Signed-off-by: Henry Schreiner <henryschreineriii@gmail.com>
Co-authored-by: Joe Rickerby <joerick@mac.com>
Co-authored-by: Henry Schreiner <henryschreineriii@gmail.com>
This is no longer experimental in 3.13 beta 3, so we don't need an enable for it anymore. Someone can skip expliclity with `'cp31?t-*'` if they really don't want free-threaded wheels.
Signed-off-by: Henry Schreiner <henryschreineriii@gmail.com>
* Bump testing version to 0.28.0
* Bump Pyodide constraints
* Add Pyodide 0.28.0 identifier
* Override to a different, alpha version for testing
* Update docs for Pyodide versions everywhere
* Add comment on using older Pyodide alpha version
* Bump to `"cp313*"` for compatibility
* Drop identifier for Pyodide 0.28.0a3
* Add back Pyodide 0.28.0a3 identifier
* Add helpful comment about pyodide-prerelease option
* Fix test and add a comment about it
* Keep one Pyodide version per Python version
* Fix docs for `pyodide-prerelease`; Python ➡️ Pyodide
* Update utils.py
* Drop CI test step for overridden Pyodide version
Suggested-by: Joe Rickerby <joerick@mac.com>
---------
Co-authored-by: Henry Schreiner <HenrySchreinerIII@gmail.com>
* Added Python 3.14 preview for iOS
* Test all Python versions with iOS
* add cp314-ios to the build selector table
---------
Co-authored-by: Andrew Murray <radarhere@users.noreply.github.com>
Co-authored-by: Joe Rickerby <joerick@mac.com>
* feat: remove 32-bit linux from auto arch, fix auto32 on linux aarch64
Signed-off-by: Henry Schreiner <henryschreineriii@gmail.com>
* Apply suggestions from code review
Co-authored-by: Joe Rickerby <joerick@mac.com>
* Update cibuildwheel/architecture.py
---------
Signed-off-by: Henry Schreiner <henryschreineriii@gmail.com>
Co-authored-by: Joe Rickerby <joerick@mac.com>
* Add pyodide 0.28.0a3
* Add docs and tests for 0.28
This reverts commit 2e7d716a9ecfbdac159eed798ebf1b0170e6858d.
* fix: add selector for pyodide-prerelease, and add graalpy to schema
Signed-off-by: Henry Schreiner <henryschreineriii@gmail.com>
---------
Signed-off-by: Henry Schreiner <henryschreineriii@gmail.com>
Co-authored-by: Henry Schreiner <henryschreineriii@gmail.com>
* feat: support multiple commands on iOS
Signed-off-by: Henry Schreiner <henryschreineriii@gmail.com>
* Move split_command into a util module
* (unrelated) fix test docstring
* Implement short-circuit behaviour on test-command
---------
Signed-off-by: Henry Schreiner <henryschreineriii@gmail.com>
Co-authored-by: Joe Rickerby <joerick@mac.com>
* Skip Cirrus CI iOS testing
* Remove support tick in readme
* Debugging cirrus windows failure
* Use a separate file to avoid error messages from vsdevcmd getting into the output
* cirrus: TEMP target just the test i care about
* Revert "cirrus: TEMP target just the test i care about"
This reverts commit 7ed4417970930ab9e0e1cb1f17497d406310d6ff.
* Remove debug code
* Fix windows issues with multiline -c Python commands
* Update dependencies
* tests: ignore tag order
Signed-off-by: Henry Schreiner <henryschreineriii@gmail.com>
* tests: use sorted platform tags
Per PEP 425, compressed tag sets should be sorted.
This was fixed in auditwheel 6.4.0
* tests: use sorted platform tags
this shouldn't change that often, use static order to allow override.
---------
Signed-off-by: Henry Schreiner <henryschreineriii@gmail.com>
Co-authored-by: cibuildwheel-bot[bot] <83877280+cibuildwheel-bot[bot]@users.noreply.github.com>
Co-authored-by: Henry Schreiner <henryschreineriii@gmail.com>
Co-authored-by: mayeut <mayeut@users.noreply.github.com>
* Revert to running tests from from a temp dir when test-sources is unset
* Fix placeholders error message, add test for it
* Add back {project} placeholders to CIBW_TEST_COMMAND in tests & docs
* Update test/test_before_test.py
---------
Co-authored-by: Henry Schreiner <HenrySchreinerIII@gmail.com>
* [travis-ci] debugging ci failures on travis
* [travis-ci] Use JSON to encode env vars
* [travis-ci] Use a more broadly compatible before_all command
* Drop CIBW_ENABLE=all on Travis windows
It doesn't fit into the time limit
* [travis-ci] try upgrading certifi to get around SSL errors
* Revert "[travis-ci] try upgrading certifi to get around SSL errors"
This reverts commit 02eee0e1946d2116d1ce23ccd86945ad33d1ae24.
* [travis-ci] upgrade windows certificates
* [travis-ci] re-enable linux builds
* Drop CIBW_ENABLE=all on Travis Linux
It doesn't fit into the time limit
---------
Co-authored-by: mayeut <mayeut@users.noreply.github.com>