514 lines
22 KiB
Markdown
514 lines
22 KiB
Markdown
cibuildwheel
|
||
============
|
||
|
||
[](https://pypi.python.org/pypi/cibuildwheel) [](https://cibuildwheel.readthedocs.io/en/stable/?badge=stable) [](https://travis-ci.org/joerick/cibuildwheel) [](https://ci.appveyor.com/project/joerick/cibuildwheel/branch/master) [](https://circleci.com/gh/joerick/cibuildwheel) [](https://dev.azure.com/joerick0429/cibuildwheel/_build/latest?definitionId=2&branchName=master)
|
||
|
||
[Documentation](https://cibuildwheel.readthedocs.org)
|
||
|
||
<!--intro-start-->
|
||
|
||
Python wheels are great. Building them across **Mac, Linux, Windows**, on **multiple versions of Python**, is not.
|
||
|
||
`cibuildwheel` is here to help. `cibuildwheel` runs on your CI server - currently it supports Azure Pipelines, Travis CI, AppVeyor, GitHub Actions and CircleCI - and it builds and tests your wheels across all of your platforms.
|
||
|
||
|
||
What does it do?
|
||
----------------
|
||
|
||
| | macOS x86_64 | Windows 64bit | Windows 32bit | manylinux x86_64 | manylinux i686 | manylinux aarch64 | manylinux ppc64le | manylinux s390x |
|
||
|---|---|---|---|---|---|---|---|---|
|
||
| CPython 2.7 | ✅ | ✅¹ | ✅¹ | ✅ | ✅ | | | |
|
||
| CPython 3.5 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅² |
|
||
| CPython 3.6 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅² |
|
||
| CPython 3.7 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅² |
|
||
| CPython 3.8 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅² |
|
||
| CPython 3.9³ | 🛠 | 🛠 | 🛠 | 🛠 | 🛠 | 🛠 | 🛠 | |
|
||
| PyPy 2.7 v7.3.0 | ✅ | | ✅ | ✅ | | | | |
|
||
| PyPy 3.6 v7.3.0 | ✅ | | ✅ | ✅ | | | | |
|
||
|
||
<sup>¹ Not supported on Travis</sup><br>
|
||
<sup>² Beta support until Travis CI fixes <a href="https://travis-ci.community/t/no-space-left-on-device-for-system-z/5954/11">a bug</a></sup><br>
|
||
<sup>³ Python 3.9 is not yet ABI stable, so you shouldn't publish wheels with it yet. But if you want to check that your wheels build on Python 3.9, try our [`python3.9` branch](https://github.com/joerick/cibuildwheel/pull/382)!</sup>
|
||
|
||
- Builds manylinux, macOS and Windows wheels for CPython and PyPy using Azure Pipelines, Travis CI, AppVeyor, and CircleCI
|
||
- Bundles shared library dependencies on Linux and macOS through [auditwheel](https://github.com/pypa/auditwheel) and [delocate](https://github.com/matthew-brett/delocate)
|
||
- Runs the library test suite against the wheel-installed version of your library
|
||
|
||
Usage
|
||
-----
|
||
|
||
`cibuildwheel` currently works on **Travis CI**, **Azure Pipelines**, **AppVeyor** and **GitHub Actions** to build wheels for all three supported platforms (Linux, macOS, Windows). On **CircleCI** Linux and macOS wheels can be built.
|
||
|
||
| | Linux | macOS | Windows |
|
||
|-----------------|-------|-------|---------|
|
||
| Azure Pipelines | ✅ | ✅ | ✅ |
|
||
| Travis CI | ✅ | ✅ | ✅ |
|
||
| AppVeyor | ✅ | ✅ | ✅ |
|
||
| GitHub Actions | ✅ | ✅ | ✅ |
|
||
| CircleCI | ✅ | ✅ | |
|
||
|
||
`cibuildwheel` is not intended to run on your development machine. Because it uses system Python from Python.org it will try to install packages globally - not what you expect from a build tool! Instead, isolated CI services like Travis CI, CircleCI, Azure Pipelines and AppVeyor are ideal.
|
||
|
||
<!--intro-end-->
|
||
|
||
Example setup
|
||
-------------
|
||
|
||
To build manylinux, macOS, and Windows wheels on Travis CI and upload them to PyPI whenever you tag a version, you could use this `.travis.yml`:
|
||
|
||
```yaml
|
||
language: python
|
||
|
||
jobs:
|
||
include:
|
||
# perform a linux build
|
||
- services: docker
|
||
# and a mac build
|
||
- os: osx
|
||
language: shell
|
||
# and a windows build
|
||
- os: windows
|
||
language: shell
|
||
before_install:
|
||
- choco install python --version 3.8.0
|
||
- export PATH="/c/Python38:/c/Python38/Scripts:$PATH"
|
||
|
||
env:
|
||
global:
|
||
- TWINE_USERNAME=__token__
|
||
# Note: TWINE_PASSWORD is set to a PyPI API token in Travis settings
|
||
|
||
install:
|
||
- python3 -m pip install cibuildwheel==1.5.3
|
||
|
||
script:
|
||
# build the wheels, put them into './wheelhouse'
|
||
- python3 -m cibuildwheel --output-dir wheelhouse
|
||
|
||
after_success:
|
||
# if the release was tagged, upload them to PyPI
|
||
- |
|
||
if [[ $TRAVIS_TAG ]]; then
|
||
python3 -m pip install twine
|
||
python3 -m twine upload wheelhouse/*.whl
|
||
fi
|
||
```
|
||
|
||
For more information, including how to build on GitHub Actions, Appveyor, Azure Pipelines, or CircleCI, check out the [documentation](https://cibuildwheel.readthedocs.org) and the [examples](https://github.com/joerick/cibuildwheel/tree/master/examples).
|
||
|
||
Options
|
||
-------
|
||
|
||
| | Option | Description |
|
||
|---|--------|-------------|
|
||
| **Build selection** | [`CIBW_PLATFORM`](https://cibuildwheel.readthedocs.io/en/stable/options/#platform) | Override the auto-detected target platform |
|
||
| | [`CIBW_BUILD`](https://cibuildwheel.readthedocs.io/en/stable/options/#build-skip) <br> [`CIBW_SKIP`](https://cibuildwheel.readthedocs.io/en/stable/options/#build-skip) | Choose the Python versions to build |
|
||
| **Build customization** | [`CIBW_ENVIRONMENT`](https://cibuildwheel.readthedocs.io/en/stable/options/#environment) | Set environment variables needed during the build |
|
||
| | [`CIBW_BEFORE_ALL`](https://cibuildwheel.readthedocs.io/en/stable/options/#before-all) | Execute a shell command on the build system before any wheels are built. |
|
||
| | [`CIBW_BEFORE_BUILD`](https://cibuildwheel.readthedocs.io/en/stable/options/#before-build) | Execute a shell command preparing each wheel's build |
|
||
| | [`CIBW_REPAIR_WHEEL_COMMAND`](https://cibuildwheel.readthedocs.io/en/stable/options/#repair-wheel-command) | Execute a shell command to repair each (non-pure Python) built wheel |
|
||
| | [`CIBW_MANYLINUX_X86_64_IMAGE`](https://cibuildwheel.readthedocs.io/en/stable/options/#manylinux-image) <br> [`CIBW_MANYLINUX_I686_IMAGE`](https://cibuildwheel.readthedocs.io/en/stable/options/#manylinux-image) <br> [`CIBW_MANYLINUX_PYPY_X86_64_IMAGE`](https://cibuildwheel.readthedocs.io/en/stable/options/#manylinux-image) <br> [`CIBW_MANYLINUX_AARCH64_IMAGE`](https://cibuildwheel.readthedocs.io/en/stable/options/#manylinux-image) <br> [`CIBW_MANYLINUX_PPC64LE_IMAGE`](https://cibuildwheel.readthedocs.io/en/stable/options/#manylinux-image) <br> [`CIBW_MANYLINUX_S390X_IMAGE`](https://cibuildwheel.readthedocs.io/en/stable/options/#manylinux-image) | Specify alternative manylinux docker images |
|
||
| | [`CIBW_DEPENDENCY_VERSIONS`](https://cibuildwheel.readthedocs.io/en/stable/options/#dependency-versions) | Specify how cibuildwheel controls the versions of the tools it uses |
|
||
| **Testing** | [`CIBW_TEST_COMMAND`](https://cibuildwheel.readthedocs.io/en/stable/options/#test-command) | Execute a shell command to test each built wheel |
|
||
| | [`CIBW_BEFORE_TEST`](https://cibuildwheel.readthedocs.io/en/stable/options/#before-test) | Execute a shell command before testing each wheel |
|
||
| | [`CIBW_TEST_REQUIRES`](https://cibuildwheel.readthedocs.io/en/stable/options/#test-requires) | Install Python dependencies before running the tests |
|
||
| | [`CIBW_TEST_EXTRAS`](https://cibuildwheel.readthedocs.io/en/stable/options/#test-extras) | Install your wheel for testing using extras_require |
|
||
| **Other** | [`CIBW_BUILD_VERBOSITY`](https://cibuildwheel.readthedocs.io/en/stable/options/#build-verbosity) | Increase/decrease the output of pip wheel |
|
||
|
||
|
||
Working examples
|
||
----------------
|
||
|
||
Here are some repos that use cibuildwheel.
|
||
|
||
- [pyinstrument_cext](https://github.com/joerick/pyinstrument_cext)
|
||
- [websockets](https://github.com/aaugustin/websockets)
|
||
- [Parselmouth](https://github.com/YannickJadoul/Parselmouth)
|
||
- [python-admesh](https://github.com/admesh/python-admesh)
|
||
- [pybase64](https://github.com/mayeut/pybase64)
|
||
- [KDEpy](https://github.com/tommyod/KDEpy)
|
||
- [AutoPy](https://github.com/autopilot-rs/autopy)
|
||
- [apriltags2-ethz](https://github.com/safijari/apriltags2_ethz)
|
||
- [TgCrypto](https://github.com/pyrogram/tgcrypto)
|
||
- [Twisted](https://github.com/twisted/twisted)
|
||
- [gmic-py](https://github.com/dtschump/gmic-py)
|
||
- [creme](https://github.com/creme-ml/creme)
|
||
- [PyAV](https://github.com/PyAV-Org/PyAV)
|
||
- [aiortc](https://github.com/aiortc/aiortc)
|
||
- [aioquic](https://github.com/aiortc/aioquic)
|
||
- [pikepdf](https://github.com/pikepdf/pikepdf)
|
||
|
||
> Add your repo here! Send a PR.
|
||
|
||
Legal note
|
||
----------
|
||
|
||
Since `cibuildwheel` repairs the wheel with `delocate` or `auditwheel`, it might automatically bundle dynamically linked libraries from the build machine.
|
||
|
||
It helps ensure that the library can run without any dependencies outside of the pip toolchain.
|
||
|
||
This is similar to static linking, so it might have some licence implications. Check the license for any code you're pulling in to make sure that's allowed.
|
||
|
||
Changelog
|
||
=========
|
||
|
||
### 1.5.3
|
||
|
||
_19 July 2020_
|
||
|
||
- 🛠 Update CPython 3.8 to 3.8.3 (#405)
|
||
- 🛠 Internal refactoring of Linux build, to move control flow into Python (#386)
|
||
|
||
### 1.5.2
|
||
|
||
_8 July 2020_
|
||
|
||
- 🐛 Fix an issue on Windows where pyproject.toml would cause an error when
|
||
some requirements formats were used. (#401)
|
||
- 🛠 Update CPython 3.7 to 3.7.8 (#394)
|
||
|
||
### 1.5.1
|
||
|
||
_25 June 2020_
|
||
|
||
- 🐛 Fix "OSError: [WinError 17] The system cannot move the file to a different
|
||
disk drive" on Github Actions (#388, #389)
|
||
|
||
### 1.5.0
|
||
|
||
_24 June 2020_
|
||
|
||
- 🌟 Add [`CIBW_BEFORE_ALL`](https://cibuildwheel.readthedocs.io/en/stable/options/#before-all)
|
||
option, which lets you run a command on the build machine before any wheels
|
||
are built. This is especially useful when building on Linux, to `make`
|
||
something external to Python, or to `yum install` a dependency. (#342)
|
||
- ✨ Added support for projects using pyproject.toml instead of setup.py
|
||
(#360, #358)
|
||
- ✨ Added workaround to allow Python 3.5 on Windows to pull dependencies from
|
||
pyproject.toml. (#358)
|
||
- 📚 Improved Github Actions examples and docs (#354, #362)
|
||
- 🐛 Ensure pip wheel uses the specified package, and doesn't build a wheel
|
||
from PyPI (#369)
|
||
- 🛠 Internal changes: using pathlib.Path, precommit hooks, testing
|
||
improvements.
|
||
|
||
### 1.4.2
|
||
|
||
_25 May 2020_
|
||
|
||
- 🛠 Dependency updates, including CPython 3.8.3 & manylinux images.
|
||
- 🛠 Lots of internal updates - type annotations and checking using mypy, and
|
||
a new integration testing system.
|
||
- ⚠️ Removed support for *running* cibuildwheel using Python 3.5. cibuildwheel
|
||
will continue to build Python 3.5 wheels until EOL.
|
||
|
||
### 1.4.1
|
||
|
||
_4 May 2020_
|
||
|
||
- 🐛 Fix a bug causing programs running inside the i686 manylinux images to
|
||
think they were running x86_64 and target the wrong architecture. (#336,
|
||
#338)
|
||
|
||
### 1.4.0
|
||
|
||
_2 May 2020_
|
||
|
||
- 🌟 Deterministic builds. cibuildwheel now locks the versions of the tools it
|
||
uses. This means that pinning your version of cibuildwheel pins the versions
|
||
of pip, setuptools, manylinux etc. that are used under the hood. This should
|
||
make things more reliable. But note that we don't control the entire build
|
||
environment on macOS and Windows, where the version of Xcode and Visual
|
||
Studio can still effect things.
|
||
|
||
This can be controlled using the [CIBW_DEPENDENCY_VERSIONS](https://cibuildwheel.readthedocs.io/en/stable/options/#dependency-versions)
|
||
and [manylinux image](https://cibuildwheel.readthedocs.io/en/stable/options/#manylinux-image)
|
||
options - if you always want to use the latest toolchain, you can still do
|
||
that, or you can specify your own pip constraints file and manylinux image.
|
||
(#256)
|
||
- ✨ Added `package_dir` command line option, meaning we now support building
|
||
a package that lives in a subdirectory and pulls in files from the wider
|
||
project. See [the `package_dir` option help](https://cibuildwheel.readthedocs.io/en/stable/options/#command-line-options)
|
||
for more information.
|
||
|
||
Note that this change makes the working directory (where you call
|
||
cibuildwheel from) relevant on Linux, as it's considered the 'project' and
|
||
will be copied into the Docker container. If your builds are slower on this
|
||
version, that's likely the reason. `cd` to your project and then call
|
||
`cibuildwheel` from there. (#319, #295)
|
||
- 🛠 On macOS, we make `MACOSX_DEPLOYMENT_TARGET` default to `10.9` if it's
|
||
not set. This should make things more consistent between Python versions.
|
||
- 🛠 Dependency updates - CPython 3.7.7, CPython 2.7.18, Pypy 7.3.1.
|
||
|
||
### 1.3.0
|
||
|
||
_12 March 2020_
|
||
|
||
- 🌟 Add support for building on Github Actions! Check out the
|
||
[docs](https://cibuildwheel.readthedocs.io/en/stable/setup/#github-actions)
|
||
for information on how to set it up. (#194)
|
||
- ✨ Add the `CIBW_BEFORE_TEST` option, which lets you run a command to
|
||
prepare the environment before your tests are run. (#242)
|
||
|
||
### 1.2.0
|
||
|
||
_8 March 2020_
|
||
|
||
- 🌟 Add support for building PyPy wheels, across Manylinux, macOS, and
|
||
Windows. (#185)
|
||
- 🌟 Added the ability to build ARM64 (aarch64), ppc64le, and s390x wheels,
|
||
using manylinux2014 and Travis CI. (#273)
|
||
- ✨ You can now build macOS wheels on Appveyor. (#230)
|
||
- 🛠 Changed default macOS minimum target to 10.9, from 10.6. This allows the
|
||
use of more modern C++ libraries, among other things. (#156)
|
||
- 🛠 Stop building universal binaries on macOS. We now only build x86_64
|
||
wheels on macOS. (#220)
|
||
- ✨ Allow chaining of commands using `&&` and `||` on Windows inside
|
||
CIBW_BEFORE_BUILD and CIBW_TEST_COMMAND. (#293)
|
||
- 🛠 Improved error reporting for failed Cython builds due to stale .so files
|
||
(#263)
|
||
- 🛠 Update CPython from 3.7.5 to 3.7.6 and from 3.8.0 to 3.8.2 on Mac/Windows
|
||
- 🛠 Improved error messages when a bad config breaks cibuildwheel's PATH
|
||
variable. (#264)
|
||
- ⚠️ Removed support for *running* cibuildwheel on Python 2.7. cibuildwheel
|
||
will continue to build Python 2.7 wheels for a little while. (#265)
|
||
|
||
### 1.1.0
|
||
|
||
_7 December 2019_
|
||
|
||
- 🌟 Add support for building manylinux2014 wheels. To use, set
|
||
`CIBW_MANYLINUX_X86_64_IMAGE` and CIBW_MANYLINUX_I686_IMAGE to
|
||
`manylinux2014`.
|
||
- ✨ Add support for [Linux on Appveyor](https://www.appveyor.com/blog/2018/03/06/appveyor-for-linux/) (#204, #207)
|
||
- ✨ Add `CIBW_REPAIR_WHEEL_COMMAND` env variable, for changing how
|
||
`auditwheel` or `delocate` are invoked, or testing an equivalent on
|
||
Windows. (#211)
|
||
- 📚 Added some travis example configs - these are available in /examples. (#228)
|
||
|
||
### 1.0.0
|
||
|
||
_10 November 2019_
|
||
|
||
- 🌟 Add support for building Python 3.8 wheels! (#180)
|
||
- 🌟 Add support for building manylinux2010 wheels. cibuildwheel will now
|
||
build using the manylinux2010 images by default. If your project is still
|
||
manylinux1 compatible, you should get both manylinux1 and manylinux2010
|
||
wheels - you can upload both to PyPI. If you always require manylinux1 wheels, you can
|
||
build using the old manylinux1 image using the [manylinux image](https://cibuildwheel.readthedocs.io/en/stable/options/#manylinux-image) option.
|
||
(#155)
|
||
- 📚 Documentation is now on its [own mini-site](https://cibuildwheel.readthedocs.io),
|
||
rather than on the README (#169)
|
||
- ✨ Add support for building Windows wheels on Travis CI. (#160)
|
||
- 🛠 If you set `CIBW_TEST_COMMAND`, your tests now run in a virtualenv. (#164)
|
||
- 🛠 Windows now uses Python as installed by nuget, rather than the versions
|
||
installed by the various CI providers. (#180)
|
||
- 🛠 Update Python from 2.7.16 to 2.7.17 and 3.7.4 to 3.7.5 on macOS (#171)
|
||
- ⚠️ Removed support for Python 3.4 (#168)
|
||
|
||
### 0.12.0
|
||
|
||
_29 September 2019_
|
||
|
||
- ✨ Add CIBW_TEST_EXTRAS option, to allow testing using extra_require
|
||
options. For example, set `CIBW_TEST_EXTRAS=test,qt` to make the wheel
|
||
installed with `pip install <wheel_file>[test,qt]`
|
||
- 🛠 Update Python from 3.7.2 to 3.7.4 on macOS
|
||
- 🛠 Update OpenSSL patch to 1.0.2t on macOS
|
||
|
||
### 0.11.1
|
||
|
||
_28 May 2019_
|
||
|
||
- 🐛 Fix missing file in the release tarball, that was causing problems with
|
||
Windows builds (#141)
|
||
|
||
### 0.11.0
|
||
|
||
_26 May 2019_
|
||
|
||
- 🌟 Add support for building on Azure pipelines! This lets you build all
|
||
Linux, Mac and Windows wheels on one service, so it promises to be the
|
||
easiest to set up! Check out the quickstart in the docs, or
|
||
[cibuildwheel-azure-example](https://github.com/joerick/cibuildwheel-azure-example)
|
||
for an example project. (#126, #132)
|
||
- 🛠 Internal change - the end-to-end test projects format was updated, so we
|
||
can more precisely assert what should be produced for each one. (#136, #137).
|
||
|
||
### 0.10.2
|
||
|
||
_10 March 2019_
|
||
|
||
- 🛠 Revert temporary fix in macOS, that was working around a bug in pip 19 (#129)
|
||
- 🛠 Update Python to 2.7.16 on macOS
|
||
- 🛠 Update OpenSSL patch to 1.0.2r on macOS
|
||
|
||
### 0.10.1
|
||
|
||
_3 February 2019_
|
||
|
||
- 🐛 Fix build stalling on macOS (that was introduced in pip 19) (#122)
|
||
- 🐛 Fix "AttributeError: 'Popen' object has no attribute 'args'" on Python 2.7 for Linux builds (#108)
|
||
- 🛠 Update Python from 3.6.7, 3.7.1 to 3.6.8, 3.7.2 on macOS
|
||
- 🛠 Update openssl patch from 1.0.2p to 1.0.2q on macOS
|
||
- 🛠 Sorting build options dict items when printing preamble (#114)
|
||
|
||
### 0.10.0
|
||
|
||
_23 September 2018_
|
||
|
||
- 🌟 Add `CIBW_BUILD` option, for specifying which specific builds to perform (#101)
|
||
- 🌟 Add support for building Mac and Linux on CircleCI (#91, #97)
|
||
- 🛠 Improved support for building universal wheels (#95)
|
||
- 🛠 Ensure log output is unbuffered and therefore in the correct order (#92)
|
||
- 🛠 Improved error reporting for errors that occur inside a package's setup.py (#88)
|
||
- ⚠️ Removed support for Python 3.3 on Windows.
|
||
|
||
### 0.9.4
|
||
|
||
_29 July 2018_
|
||
|
||
- 🛠 CIBW_TEST_COMMAND now runs in a shell on Mac (as well as Linux) (#81)
|
||
|
||
### 0.9.3
|
||
|
||
_10 July 2018_
|
||
|
||
- 🛠 Update to Python 3.6.6 on macOS (#82)
|
||
- ✨ Add support for building Python 3.7 wheels on Windows (#76)
|
||
- ⚠️ Deprecated support for Python 3.3 on Windows.
|
||
|
||
### 0.9.2
|
||
|
||
_1 July 2018_
|
||
|
||
- 🛠 Update Python 3.7.0rc1 to 3.7.0 on macOS (#79)
|
||
|
||
### 0.9.1
|
||
|
||
_18 June 2018_
|
||
|
||
- 🛠 Removed the need to use `{python}` and `{pip}` in `CIBW_BEFORE_BUILD` statements, by ensuring the correct version is always on the path at `python` and `pip` instead. (#60)
|
||
- 🛠 We now patch the _ssl module on Python 3.4 and 3.5 so these versions can still make SSL web requests using TLS 1.2 while building. (#71)
|
||
|
||
### 0.9.0
|
||
|
||
_18 June 2018_
|
||
|
||
- ✨ Add support for Python 3.7 (#73)
|
||
|
||
### 0.8.0
|
||
|
||
_4 May 2018_
|
||
|
||
- ⚠️ Drop support for Python 3.3 on Linux (#67)
|
||
- 🐛 Fix TLS by updating setuptools (#69)
|
||
|
||
### 0.7.1
|
||
|
||
_2 April 2017_
|
||
|
||
- 🐛 macOS: Fix Pip bugs resulting from PyPI TLS 1.2 enforcement
|
||
- 🐛 macOS: Fix brew Python3 version problems in the CI
|
||
|
||
### 0.7.0
|
||
|
||
_7 January 2018_
|
||
|
||
- ✨ You can now specify a custom docker image using the `CIBW_MANYLINUX1_X86_64_IMAGE` and `CIBW_MANYLINUX1_I686_IMAGE` options. (#46)
|
||
- 🐛 Fixed a bug where cibuildwheel would download and build a package from PyPI(!) instead of building the package on the local machine. (#51)
|
||
|
||
### 0.6.0
|
||
|
||
_9 October 2017_
|
||
|
||
- ✨ On the Linux build, the host filesystem is now accessible via `/host` (#36)
|
||
- 🐛 Fixed a bug where setup.py scripts would run the wrong version of Python when running subprocesses on Linux (#35)
|
||
|
||
### 0.5.1
|
||
|
||
_10 September 2017_
|
||
|
||
- 🐛 Fixed a couple of bugs on Python 3.
|
||
- ✨ Added experimental support for Mac builds on [Bitrise.io](https://www.bitrise.io)
|
||
|
||
### 0.5.0
|
||
|
||
_7 September 2017_
|
||
|
||
- ✨ `CIBW_ENVIRONMENT` added. You can now set environment variables for each build, even within the Docker container on Linux. This is a big one! (#21)
|
||
- ✨ `CIBW_BEFORE_BUILD` now runs in a system shell on all platforms. You can now do things like `CIBW_BEFORE_BUILD="cmd1 && cmd2"`. (#32)
|
||
|
||
### 0.4.1
|
||
|
||
_14 August 2017_
|
||
|
||
- 🐛 Fixed a bug on Windows where subprocess' output was hidden (#23)
|
||
- 🐛 Fixed a bug on AppVeyor where logs would appear in the wrong order due to output buffering (#24, thanks @YannickJadoul!)
|
||
|
||
### 0.4.0
|
||
|
||
_23 July 2017_
|
||
|
||
- 🐛 Fixed a bug that was increasing the build time by building the wheel twice. This was a problem for large projects that have a long build time. If you're upgrading and you need the old behaviour, use `CIBW_BEFORE_BUILD={pip} install .`, or install exactly the dependencies you need in `CIBW_BEFORE_BUILD`. See #18.
|
||
|
||
### 0.3.0
|
||
|
||
_27 June 2017_
|
||
|
||
- ⚠️ Removed Python 2.6 support on Linux (#12)
|
||
|
||
### 0.2.1
|
||
|
||
_11 June 2017_
|
||
|
||
- 🛠 Changed the build process to install the package before building the wheel - this allows direct dependencies to be installed first (#9, thanks @tgarc!)
|
||
- ✨ Added Python 3 support for the main process, for systems where Python 3 is the default (#8, thanks @tgarc).
|
||
|
||
### 0.2.0
|
||
|
||
_13 April 2017_
|
||
|
||
- ✨ Added `CIBW_SKIP` option, letting users explicitly skip a build
|
||
- ✨ Added `CIBW_BEFORE_BUILD` option, letting users run a shell command before the build starts
|
||
|
||
### 0.1.3
|
||
|
||
_31 March 2017_
|
||
|
||
- 🌟 First public release!
|
||
|
||
Contributing
|
||
============
|
||
|
||
For more info on how to contribute to cibuildwheel, see the [docs](https://cibuildwheel.readthedocs.io/en/latest/contributing/).
|
||
|
||
Maintainers
|
||
-----------
|
||
|
||
- Joe Rickerby [@joerick](https://github.com/joerick)
|
||
- Yannick Jadoul [@YannickJadoul](https://github.com/YannickJadoul)
|
||
- Matthieu Darbois [@mayeut](https://github.com/mayeut)
|
||
|
||
Credits
|
||
-------
|
||
|
||
`cibuildwheel` stands on the shoulders of giants.
|
||
|
||
- ⭐️ @matthew-brett for [matthew-brett/multibuild](http://github.com/matthew-brett/multibuild) and [matthew-brett/delocate](http://github.com/matthew-brett/delocate)
|
||
- @PyPA for the manylinux Docker images [pypa/manylinux](https://github.com/pypa/manylinux)
|
||
- @ogrisel for [wheelhouse-uploader](https://github.com/ogrisel/wheelhouse-uploader) and `run_with_env.cmd`
|
||
|
||
Massive props also to-
|
||
|
||
- @zfrenchee for [help debugging many issues](https://github.com/joerick/cibuildwheel/issues/2)
|
||
- @lelit for some great bug reports and [contributions](https://github.com/joerick/cibuildwheel/pull/73)
|
||
- @mayeut for a [phenomenal PR](https://github.com/joerick/cibuildwheel/pull/71) patching Python itself for better compatibility!
|
||
|
||
See also
|
||
========
|
||
|
||
If you'd like to keep wheel building separate from the package itself, check out [astrofrog/autowheel](https://github.com/astrofrog/autowheel). It builds packages using cibuildwheel from source distributions on PyPI.
|
||
|
||
If `cibuildwheel` is too limited for your needs, consider [matthew-brett/multibuild](http://github.com/matthew-brett/multibuild). `multibuild` is a toolbox for building a wheel on various platforms. It can do a lot more than this project - it's used to build SciPy!
|