This extends the mechanism introduced in #1091 for `abi3` wheels.
Most of the mentions to `abi3` have been removed and replaced by a more generic `compatible_wheel`.
This allows to build a wheel `foo-0.1-py3-none-win_amd64.whl` only once and still test with every configured python.
When I run on macOS, I get the following error:
```
Traceback (most recent call last):
File "/Users/david/.local/pipx/.cache/fd54e06d50697e7/bin/cibuildwheel", line 8, in <module>
sys.exit(main())
File "/Users/david/.local/pipx/.cache/fd54e06d50697e7/lib/python3.10/site-packages/cibuildwheel/__main__.py", line 128, in main
build_in_directory(args)
File "/Users/david/.local/pipx/.cache/fd54e06d50697e7/lib/python3.10/site-packages/cibuildwheel/__main__.py", line 252, in build_in_directory
cibuildwheel.macos.build(options, tmp_path)
File "/Users/david/.local/pipx/.cache/fd54e06d50697e7/lib/python3.10/site-packages/cibuildwheel/macos.py", line 538, in build
shutil.move(str(repaired_wheel), build_options.output_dir)
File "/opt/homebrew/Cellar/python@3.10/3.10.4/Frameworks/Python.framework/Versions/3.10/lib/python3.10/shutil.py", line 811, in move
raise Error("Destination path '%s' already exists" % real_dst)
shutil.Error: Destination path '/Users/david/Documents/GitHub/python-mpy-cross/wheelhouse/mpy_cross_v5-1.0.0-py3-none-macosx_11_0_arm64.whl' already exists
```
The comment in the code says that it should overwrite the file, so this removes the file if it exists first before trying to move the file.
* chore: add PyLint and fix most issues
* fix: minor fixes after first push
* chore: remove reference to old toml lib
* chore: minor options cleanup
* ci: only fail with many pylint issues, annotate in GHA
* refactor: address review
* ci: force nox to report in CI
* refactor: use map instead of if chain
* refactor: simpler shell_with_arch
* refactor: even simpler shell_with_arch
* Restore if...elif...else blocks where guard-style is not intended
Co-authored-by: Joe Rickerby <joerick@mac.com>
* feature: allow local runs on windows/macOS
Cache python installations to a user cache folder using platformdirs.
The build environment is now a virtual environment to allow proper isolation.
Allows to run tests in parallel.
Co-authored-by: Joe Rickerby <joerick@mac.com>
* Add test for defaults, fix platform detection
* Improve correctness of reader.identifier with block
* Fix options test to be multiplatform
* 'Refactored by Sourcery'
docs: write a section on overrides
tests: test docker launches
feat: add identifiers to launches
test: add test for correct build step generation
Signed-off-by: Henry Schreiner <henryschreineriii@gmail.com>
* tests: add space in constraints file
* fix: use uri strings in PIP_CONSTRAINTS
* WIP: try using quotes instead of uri
* Update cibuildwheel/windows.py
* Revert "Update cibuildwheel/windows.py"
This reverts commit 0951425524166677fdfd8df7e6bbbc9782ea2fb0.
* Revert "WIP: try using quotes instead of uri"
This reverts commit 5790eda4c6f231d5958f4cbd720683f787eea042.
* fix: work around pip bug with URI handling
* WIP: try biger hack
* fix: try using temporary file
* refactor: use common prefix for install dir on Windows
* Use more flexible type PathOrStr to simplify
* Rename variables to make slightly clearer
Co-authored-by: Joe Rickerby <joerick@mac.com>
* feat: support pypa build
fix: update `cibuildwheel.linux.troubleshoot` to know about build
Workaround issue with PyPy venv module by installing build[virtualenv]
fix: test_dependency_constraints_file when using build
fix: test/test_pep518.py
fix: use `strtobool` to parse `CIBW_PYPA_BUILD`
fix: update `cibuildwheel.linux.troubleshoot` to know about `python -m pip wheel`
test: use `build_mode` in `test/test_dependency_versions.py` tests
* refactor: use build-backend instead
* Apply suggestions from code review
Co-authored-by: Joe Rickerby <joerick@mac.com>
* refactor: use literal types for build_frontend
* refactor(tests): build_mode -> build_frontend_env
* Update test/test_before_build.py
Co-authored-by: Joe Rickerby <joerick@mac.com>
* Add CPython 3.10 support
* Fix logger displaying CPython 3.1 instead of 3.10
* Fix tests failing with CPython 3.10
* Use pytest instead of nose
* feat: --pre flag
Apply suggestions from code review
Co-authored-by: Matthieu Darbois <mayeut@users.noreply.github.com>
* fix: update Python update script to process beta versions
* refactor: prerelease-pythons
* Use `strtobool` to parse `CIBW_PRERELEASE_PYTHONS` env var
* Update python version filtering for universal2 & arm64
* Filter out CPython 3.10 and above for `test_manylinuxXXXX_only[manylinux1]` test
* Use CIBW_BUILD filtering rather than CIBW_SKIP for test_docker_images
* Use skip_patterns to filter out pre-releases
* Use `prerelease_pythons` instead of `pre`
* Reword `CIBW_PRERELEASE_PYTHONS` doc per review.
* Use `CIBW_PRERELEASE_PYTHONS: True` for usage example.
* Update `cibuildwheel --help` doc
* docs: add note on spec.filter
* Clean up the BuildSelector __repr__ by refactoring
* fix: remove platform variants for CIBW_PRERELEASE_PYTHONS
* docs: mention the flag
Co-authored-by: Henry Schreiner <henryschreineriii@gmail.com>
Co-authored-by: Joe Rickerby <joerick@mac.com>
* chore: rename joerick/cibuildwheel -> pypa/cibuildwheel
* Update Appveyor status badge markup
Note that it still has joerick/cibuildwheel - confusingly it's still within my appveyor account, but this is the new project that points to the pypa github repo
* Update Appveyor badge markup again
I went through a few passes to enable that project, here's the latest.
* Update Azure badge, also
* Update Travis badge to reference the .com
Co-authored-by: Joe Rickerby <joerick@mac.com>
* style: second set of updates
* style: more updates from joerick
Co-authored-by: Joe Rickerby <joerick@mac.com>
Co-authored-by: Joe Rickerby <joerick@mac.com>
* change check_call to run
* refactor: change check_output to run
* Apply suggestions from code review
Co-authored-by: Joe Rickerby <joerick@mac.com>
Co-authored-by: Joe Rickerby <joerick@mac.com>