Commit Graph
345 Commits
Author SHA1 Message Date
Matthieu Darbois a4d24056ef chore: move AlreadyBuiltWheelError & NonPlatformWheelError to errors.py (#1920) 2024-07-07 09:47:03 +02:00
Henry Schreiner 973946b172 fix: support --no-isolation with build[uv] (#1889)
* fix: support --no-isolation with build[uv]

Signed-off-by: Henry Schreiner <henryschreineriii@gmail.com>

* docs: mention caveat

Signed-off-by: Henry Schreiner <henryschreineriii@gmail.com>

---------

Signed-off-by: Henry Schreiner <henryschreineriii@gmail.com>
2024-07-01 20:15:09 -04:00
Henry Schreiner 70fb1c4a1a fix: specify full path to non-venv Python (#1881)
Signed-off-by: Henry Schreiner <henryschreineriii@gmail.com>
2024-06-13 08:18:09 +02:00
bf817c6dc8 refactor: error handling to use exceptions (#1719)
* Refactor error handling to use exceptions

cibuildwheel has up until now handled most errors by printing an error message to sys.stderr and calling sys.exit. Others were handled using Logger.error, depending on the context. We also had return codes, but these weren't explicitly defined anywhere.

This makes that convention more explicit and codified. Now to halt the program, the correct thing to do is to throw a cibuildwheel.errors.FatalError exception - that is caught in main() and printed before exiting. The existing behaviour was kept - if an error occurs within a build step (probably something to do with the build itself), the Logger.error() method is used. Outside of a build step (e.g. a misconfiguration), the behaviour is still to print 'cibuildwheel: <message>'

I also took the opportunity to add a debugging option `--debug-traceback` (and `CIBW_DEBUG_TRACEBACK`), which you can enable to see a full traceback on errors.

(I've deactivated the flake8-errmsg lint rule, as it was throwing loads of errors and these error messages aren't generally seen in a traceback context)

* add noqa rule

* Apply suggestions from code review

Co-authored-by: Henry Schreiner <HenrySchreinerIII@gmail.com>

* Return to flake8-errmsg conformance

* Code review suggestions

* Subclass Exception rather than SystemExit

* apply error handling to new code and fix merge issues

* Apply review suggestion

* fix: merge issue

* Update cibuildwheel/errors.py

---------

Co-authored-by: Henry Schreiner <HenrySchreinerIII@gmail.com>
Co-authored-by: mayeut <mayeut@users.noreply.github.com>
2024-06-10 10:36:20 -04:00
Henry Schreiner 384c8d5c82 feat: build[uv] (#1856) 2024-06-09 15:45:31 -04:00
cibuildwheel-bot[bot]cibuildwheel-bot[bot] <83877280+cibuildwheel-bot[bot]@users.noreply.github.com>Henry SchreinerMatthieu Darbois
130fdd2548 feat: free-threaded Python for macOS, MACOSX_DEPLOYMENT_TARGET updates (#1854)
* Update dependencies

* feat: macos free-threading

Signed-off-by: Henry Schreiner <henryschreineriii@gmail.com>

* fix: set min target to 10.13 for 3.13 and floor it always

Signed-off-by: Henry Schreiner <henryschreineriii@gmail.com>

* fix: tests and corrected pypy mins

Signed-off-by: Henry Schreiner <henryschreineriii@gmail.com>

---------

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: Matthieu Darbois <mayeut@users.noreply.github.com>
2024-06-08 10:15:04 +02:00
MusicalNinjaDadHenry Schreinerpre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
6c6e0f6ba5 fix: handle case where output_dir does not already exist on macos & windows (#1851)
* replace `with suppress(FileNotFoundError)` by `.unlink(missing_ok=True)` for macos

* also use `.unlink(missing_ok=True)` in pyodide and windows for consistency

* remove contextlib imports which are no longer required

* Apply suggestions from code review

* explicity resolve and create output location

* [pre-commit.ci] auto fixes from pre-commit.com hooks

for more information, see https://pre-commit.ci

* use explicit str for move

* [pre-commit.ci] auto fixes from pre-commit.com hooks

for more information, see https://pre-commit.ci

* update comments based on review feedback

* Apply suggestions from code review

* Break out functionality to move files to util.py

* [pre-commit.ci] auto fixes from pre-commit.com hooks

for more information, see https://pre-commit.ci

* raise instance of IsADirectoryError with meaningful message

* Don't need a comment and a exception message

---------

Co-authored-by: Henry Schreiner <HenrySchreinerIII@gmail.com>
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2024-06-07 11:37:20 -04:00
Henry Schreiner c333b131d3 fix: include VIRTUAL_ENV variable (#1842)
Signed-off-by: Henry Schreiner <henryschreineriii@gmail.com>
2024-05-29 08:20:02 +02:00
Matthieu Darbois b713086763 chore: better determinism for the test virtual environment (#1838)
* chore: better determinism for the test virtual environment

* review: apply suggestions
2024-05-27 23:04:25 +02:00
mayeut 345467c6cf feat: add support for free-threaded (no-gil) Python 3.13 2024-05-20 07:12:10 -04:00
Matthieu Darbois d1a4c9c074 chore: un-pin virtualenv update (#1830) 2024-05-20 02:21:42 -04:00
Matthieu Darbois 3ea0a6c2f0 fix: respect constraints when building with pip (#1818)
When building a project that has a `pyproject.toml`, constraints
are not respected when building with the `pip` frontend.

This commit fixes this by using the same tricks as for the `build` frontend.
2024-05-10 15:33:56 -04:00
laggykillerJoe Rickerbypre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
e2a0839555 fix: set SYSTEM_VERSION_COMPAT=0 during pip install on macos (#1768)
* Set SYSTEM_VERSION_COMPAT=0 during pip install on macos (#1767)

* [pre-commit.ci] auto fixes from pre-commit.com hooks

for more information, see https://pre-commit.ci

* Only set SYSTEM_VERSION_COMPAT=0 for CPython 3.8

* Set SYSTEM_VERSION_COMPAT=0 for CPython <= 3.8

* [pre-commit.ci] auto fixes from pre-commit.com hooks

for more information, see https://pre-commit.ci

* Update cibuildwheel/macos.py

Co-authored-by: Joe Rickerby <joerick@mac.com>

* Update cibuildwheel/macos.py

Co-authored-by: Joe Rickerby <joerick@mac.com>

* [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>
Co-authored-by: Joe Rickerby <joerick@mac.com>
2024-03-10 21:36:36 -04:00
Joe Rickerby f7de18e291 Merge pull request #1675 from pypa/pip-constraints-fix
fix: Don't override PIP_CONSTRAINT if set by the user
2024-03-09 13:53:32 +00:00
Joe Rickerby 6940c77cd3 style improvements from code review 2024-03-02 18:16:20 +00:00
Joe Rickerby 74afe329a1 Merge remote-tracking branch 'origin/main' into constraints-cleanup 2024-02-27 21:28:54 +00:00
81b0a578df chore(CI): test on GHA macOS-14 runner (#1700)
* chore(CI): test on GHA macOS-14 runner
* update error message for skipped arm64 tests
* Update docs, README and examples

---------

Co-authored-by: Henry Schreiner <HenrySchreinerIII@gmail.com>
Co-authored-by: Joe Rickerby <joerick@mac.com>
Co-authored-by: Andrew Murray <3112309+radarhere@users.noreply.github.com>
2024-02-10 09:55:38 +01:00
Joe Rickerby d65d46ca24 Merge remote-tracking branch 'origin/main' into pip-constraints-fix 2024-02-04 11:18:10 +00:00
Jinzhe Zeng a78facb861 test macos_x86-64 and arm64 in different venv dir 2024-02-01 00:33:33 -05:00
Joe Rickerby 9879937c63 Don't preinstall setuptools and wheel, remove from constraints
Reasons to do this:

- setuptools is no longer the only game in town. When cibuildwheel was created, setuptools was the only way to make wheels. these days, there are many build backends so special casing setuptools doesn't make so much sense
- we don't need to preinstall `wheel` any more, setuptools will do that itself when it needs it.
- projects with pyproject.toml (i.e. the vast majority of projects going forward) don't benefit from the pin anyway, because both `pip` and `build` create an isolated environment to install `build-system.requires` into.
- this makes it easier for end users (such as @webknjaz) to control build-system versions using `PIP_CONSTRAINT`, because there's less potential for a user-specified version to conflict with one of our pins.
  - (long-term, I'd love `build` to [support this directly](https://github.com/pypa/build/issues/292), and then we could have a proper way to keep pyproject.toml dependencies loose and forward-compatible while retaining build determinism. But PIP_CONSTRAINT is the best we have for now. PIP_CONSTRAINT isn't ideal because it affects other things, like the test virtualenv).

This PR also adds a pin for pypa/build. It appears that was missing before, but we should pin it.
2024-01-20 18:44:03 +00:00
Joe Rickerby d198c90f7a Allow the user to set PIP_CONSTRAINT and it affect build-system.requires 2023-11-24 11:49:26 +00:00
Hugo van Kemenade e577a9fbdf Use quotes when silencing warning 2023-11-18 12:37:50 +02:00
Joe Rickerby 297e4a6099 Add args param to build-frontend option 2023-08-26 19:37:29 +01:00
mayeut 4b19db8454 chore: drop python 3.7 for cibuildwheel driver
This drops python 3.7 for cibuildwheel.
Building python 3.6 / 3.7 packages is still supported.
2023-07-01 14:33:24 +02:00
Henry SchreinerandCosimo Lupo cee0848b49 fix: allow access to {wheel} in more places (#1533)
pass {wheel} path to test command so I can use with tox --installpkg

Co-authored-by: Cosimo Lupo <clupo@google.com>
2023-06-23 08:29:58 -04:00
Henry Schreiner 31bd9c9174 refactor: restore typing for non-backports
Signed-off-by: Henry Schreiner <henryschreineriii@gmail.com>
2023-04-18 23:29:01 -04:00
Henry Schreiner d996af554a fix: restore Python 3.7 support
Signed-off-by: Henry Schreiner <henryschreineriii@gmail.com>
2023-04-18 22:02:47 -04:00
Henry Schreiner 6d038dfbdf chore: update typing to collections.abc
Signed-off-by: Henry Schreiner <henryschreineriii@gmail.com>
2023-04-18 12:38:21 -04:00
Henry Schreiner 2246313344 fix: verbosity isn't supported for pypa/build (#1474)
This was incorrectly adding an empty config setting, and it was not correct if included for build - it's a pip wheel only setting. Reported in #1471.

Signed-off-by: Henry Schreiner <henryschreineriii@gmail.com>
2023-04-17 14:06:45 -04:00
Hood Chatham 374d786812 Set pip as the default value of default 2023-04-08 18:26:09 -07:00
Hood Chatham 8a307031a9 Set the defualt build_frontend to be "default" (which is still "pip")
Instead of using pip as the default, set it to default. This way
each platform can choose independently what to do as the default
behavior.

This is intended as part of adding Pyodide support. Pyodide cannot
use pip as the build frontend. It always uses a modified pypa/build.
So if the build_frontend is explicitly set to pip we want to raise
an error. But if it's unset, then we should be able to tell and just
do what we want.
2023-04-07 15:56:17 -07:00
Hood Chatham d018570bc4 chore: add structurally typed GenericPythonConfiguration (#1458)
* Add structually typed GenericPythonConfiguration

Use structural typing for the return value of get_python_configurations
so that we don't have to specify a union of all possible PythonConfiguration
types

* address henryiii's comments

* Use Set in more places
2023-04-06 14:40:25 -04:00
Henry Schreiner 2e48667e29 refactor: use frontend instead of plural
Signed-off-by: Henry Schreiner <henryschreineriii@gmail.com>
2023-03-10 13:46:42 -05:00
Henry Schreiner c6818608d2 fix: pip config options were broken
Signed-off-by: Henry Schreiner <henryschreineriii@gmail.com>
2023-03-10 12:00:51 -05:00
Henry Schreiner 5ab3b55378 style: run pre-commit
Signed-off-by: Henry Schreiner <henryschreineriii@gmail.com>
2023-02-07 10:25:34 -05:00
Henry Schreiner c8b037ba3e chore: use Ruff (#1405)
chore: use ruff

Signed-off-by: Henry Schreiner <henryschreineriii@gmail.com>
2023-01-30 15:53:44 -05:00
92cb1d8990 feat: add PyPy macOS arm64 (#1372)
* feat: add PyPy macOS arm64
* fix: use PyPy 7.3.11
* fix: filter-out unsupported PyPy cross-compilation configs
* Add quiet notice about the auto-skipping of arm64 pp builds on x86_64

Signed-off-by: Henry Schreiner <henryschreineriii@gmail.com>
Co-authored-by: Henry Schreiner <henryschreineriii@gmail.com>
Co-authored-by: Joe Rickerby <joerick@mac.com>
2023-01-14 09:48:01 +01:00
Joe Rickerby e4cbe81f3f Add test failure with descriptive error message when running tests without a {project} placeholder 2022-11-06 11:02:01 +00:00
mayeut fed1314511 fix: warning when building macOS arm64 wheels
When `MACOSX_DEPLOYMENT_TARGET` is not set by the user, cibuildwheel always defaults to `10.9`.
This leads to warning when building arm64 wheels.
This commit removes the warning by setting the default to `11.0` for arm64 builds.
2022-10-14 23:56:57 +02:00
Henry Schreiner 7c4bbf8cb3 chore: minor cleanups from reverb (#1293)
Signed-off-by: Henry Schreiner <henryschreineriii@gmail.com>

Signed-off-by: Henry Schreiner <henryschreineriii@gmail.com>
2022-10-07 08:47:31 -04:00
mayeut 6286d9c33d feature: allow testing cp38-macosx_arm64 wheel
Per discussion in https://github.com/pypa/cibuildwheel/pull/1169, the default installer used for cp38 is an Intel installer.
It makes sense to skip testing arm64 wheels in this case.

However, if the user choose to manually install the universal2 CPython version, then, tests shall be run on arm64.

This allows users that either target 11.0+ on intel, universal2 or only build for arm64 to get the arm64 wheel tested on AppleSilicon.
2022-09-25 12:34:36 +02:00
Henry Schreiner 534cada6a5 chore: cleaner exception tracebacks
Signed-off-by: Henry Schreiner <henryschreineriii@gmail.com>
2022-09-16 11:05:35 -04:00
Henry Schreiner 3597095948 feat: support config-settings (#1244)
* feat: support config-settings

Signed-off-by: Henry Schreiner <henryschreineriii@gmail.com>

feat: support config-settings

Signed-off-by: Henry Schreiner <henryschreineriii@gmail.com>

* refactor: use shlex.quote

Signed-off-by: Henry Schreiner <henryschreineriii@gmail.com>

Signed-off-by: Henry Schreiner <henryschreineriii@gmail.com>
2022-09-06 00:56:20 -04:00
Joe Rickerby 4db339cbb7 Merge pull request #1175 from mayeut/python-3.7
chore: drop python 3.6 for cibuildwheel driver
2022-07-29 16:13:56 +01:00
jack1142 aa4ca42683 Fix Rosetta2 usage for shell commands 2022-07-25 16:15:00 +02:00
mayeut 6d27f05c7c chore: use from __future__ import annotations 2022-07-19 07:47:45 +02:00
Joe Rickerby 57800921c5 Don't attempt to test CPython 3.8 wheels on Apple Silicon. (#1171)
I've added a warning for users, so they know that it doesn't get tested.
See discussion in #1169 for the reason why.

Fixes #1168, fixes #1169
2022-07-14 11:42:40 +02:00
Henry Schreiner 9ed9e6b960 Merge branch 'main' into already-built 2022-07-03 14:02:42 -04:00
9a537512c1 feat: add support for py3-none-{platform} wheels (#1151)
* feature: add support for `py3-none-{platform}` wheels

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.

* Add integration test for py3-none abi wheels

* Fix expected_wheels for py3-none abi

* Limit test to three pythons and check for certain log messages

* chore: add some comments to explain filter process

Co-authored-by: Joe Rickerby <joerick@mac.com>
Co-authored-by: Henry Schreiner <henryschreineriii@gmail.com>
2022-07-03 14:00:00 -04:00
mayeut ef18186c45 fix: error out if multiple wheels with the same name are produced
We shouldn't silently overwrite wheels that are produced in the same run that have the same filename, as this implies a misconfiguration.
2022-06-26 11:32:33 +02:00