Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
e8db6ff3e0 | ||
|
|
471565cbfa | ||
|
|
ba0956c60c | ||
|
|
e82258a5d9 | ||
|
|
b43367de3a | ||
|
|
dbdabba01f | ||
|
|
de80b4af95 | ||
|
|
12ecb7fa4f | ||
|
|
604a1b5a33 | ||
|
|
19cb9c10f7 | ||
|
|
15123a0e29 | ||
|
|
efa161e329 | ||
|
|
49e583a54a | ||
|
|
f43b40394e | ||
|
|
02652e662e | ||
|
|
2709a49715 | ||
|
|
3092095414 | ||
|
|
9f9b6bb6b9 | ||
|
|
b7ae58fb07 | ||
|
|
435a780712 | ||
|
|
144733dc60 | ||
|
|
2915eb4701 | ||
|
|
38a5d51a69 | ||
|
|
326a9a942b | ||
|
|
02cbd89ae6 | ||
|
|
f700a2f775 | ||
|
|
31646fbfc6 | ||
|
|
9e787cf124 | ||
|
|
18b18a336b | ||
|
|
41a47ff04e | ||
|
|
eab043b05b | ||
|
|
f29bce52d7 | ||
|
|
effc102b4d | ||
|
|
f5f6c20e57 | ||
|
|
0a4b5e2c3e | ||
|
|
5b64a4dc6a | ||
|
|
d3fd1fb4ad | ||
|
|
ed83b2efcf | ||
|
|
8bd05daf2c | ||
|
|
3cbc86bd33 | ||
|
|
6e7716e7a2 | ||
|
|
d8ef6e889b | ||
|
|
8eaea06f6c | ||
|
|
1ceaeb4fb2 | ||
|
|
80a57d98c5 | ||
|
|
000137b9c7 | ||
|
|
6608c2364b | ||
|
|
3926ceaf45 | ||
|
|
7f6350e97a | ||
|
|
7cef9ffb02 | ||
|
|
8fbe25eaec | ||
|
|
67b58b8709 | ||
|
|
ad66e7cc6c | ||
|
|
0cfa3f74d4 |
@@ -8,6 +8,7 @@ on:
|
|||||||
jobs:
|
jobs:
|
||||||
update-dependencies:
|
update-dependencies:
|
||||||
name: Update dependencies
|
name: Update dependencies
|
||||||
|
if: github.repository_owner == 'pypa' || github.event_name != 'schedule'
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v2
|
- uses: actions/checkout@v2
|
||||||
@@ -24,6 +25,7 @@ jobs:
|
|||||||
# run the GHA tests.
|
# run the GHA tests.
|
||||||
- uses: tibdex/github-app-token@v1
|
- uses: tibdex/github-app-token@v1
|
||||||
id: generate-token
|
id: generate-token
|
||||||
|
if: github.ref == 'refs/heads/main' && github.repository == 'pypa/cibuildwheel'
|
||||||
with:
|
with:
|
||||||
app_id: ${{ secrets.CIBUILDWHEEL_BOT_APP_ID }}
|
app_id: ${{ secrets.CIBUILDWHEEL_BOT_APP_ID }}
|
||||||
private_key: ${{ secrets.CIBUILDWHEEL_BOT_APP_PRIVATE_KEY }}
|
private_key: ${{ secrets.CIBUILDWHEEL_BOT_APP_PRIVATE_KEY }}
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ repos:
|
|||||||
- id: trailing-whitespace
|
- id: trailing-whitespace
|
||||||
|
|
||||||
- repo: https://github.com/asottile/pyupgrade
|
- repo: https://github.com/asottile/pyupgrade
|
||||||
rev: v2.23.1
|
rev: v2.25.0
|
||||||
hooks:
|
hooks:
|
||||||
- id: pyupgrade
|
- id: pyupgrade
|
||||||
name: PyUpgrade 3.6+
|
name: PyUpgrade 3.6+
|
||||||
@@ -31,7 +31,7 @@ repos:
|
|||||||
- id: isort
|
- id: isort
|
||||||
|
|
||||||
- repo: https://github.com/psf/black
|
- repo: https://github.com/psf/black
|
||||||
rev: 21.7b0
|
rev: 21.8b0
|
||||||
hooks:
|
hooks:
|
||||||
- id: black
|
- id: black
|
||||||
|
|
||||||
@@ -80,6 +80,11 @@ repos:
|
|||||||
entry: PyBind|Numpy|Cmake|Github|PyTest
|
entry: PyBind|Numpy|Cmake|Github|PyTest
|
||||||
types:
|
types:
|
||||||
- markdown
|
- markdown
|
||||||
|
- id: update-readme-changelog
|
||||||
|
name: Update README changelog
|
||||||
|
language: python
|
||||||
|
entry: bin/update_readme_changelog.py
|
||||||
|
files: ^docs/changelog.md$
|
||||||
|
|
||||||
- repo: https://github.com/codespell-project/codespell
|
- repo: https://github.com/codespell-project/codespell
|
||||||
rev: v2.1.0
|
rev: v2.1.0
|
||||||
|
|||||||
@@ -28,10 +28,9 @@ What does it do?
|
|||||||
| CPython 3.7 | ✅ | N/A | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
|
| CPython 3.7 | ✅ | N/A | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
|
||||||
| CPython 3.8 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
|
| CPython 3.8 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
|
||||||
| CPython 3.9 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
|
| CPython 3.9 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
|
||||||
| CPython 3.10¹ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
|
| CPython 3.10 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
|
||||||
| PyPy 3.7 v7.3 | ✅ | N/A | ✅ | N/A | ✅ | ✅ | ✅ | N/A | N/A |
|
| PyPy 3.7 v7.3 | ✅ | N/A | ✅ | N/A | ✅ | ✅ | ✅ | N/A | N/A |
|
||||||
|
|
||||||
<sup>¹ Available as a prerelease under a [flag](https://cibuildwheel.readthedocs.io/en/stable/options/#prerelease-pythons)</sup><br>
|
|
||||||
|
|
||||||
- Builds manylinux, macOS 10.9+, and Windows wheels for CPython and PyPy
|
- Builds manylinux, macOS 10.9+, and Windows wheels for CPython and PyPy
|
||||||
- Works on GitHub Actions, Azure Pipelines, Travis CI, AppVeyor, CircleCI, and GitLab CI
|
- Works on GitHub Actions, Azure Pipelines, Travis CI, AppVeyor, CircleCI, and GitLab CI
|
||||||
@@ -85,7 +84,7 @@ jobs:
|
|||||||
- uses: actions/setup-python@v2
|
- uses: actions/setup-python@v2
|
||||||
|
|
||||||
- name: Install cibuildwheel
|
- name: Install cibuildwheel
|
||||||
run: python -m pip install cibuildwheel==2.1.1
|
run: python -m pip install cibuildwheel==2.1.3
|
||||||
|
|
||||||
- name: Build wheels
|
- name: Build wheels
|
||||||
run: python -m cibuildwheel --output-dir wheelhouse
|
run: python -m cibuildwheel --output-dir wheelhouse
|
||||||
@@ -109,7 +108,7 @@ Options
|
|||||||
| | [`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 |
|
| | [`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 |
|
||||||
| | [`CIBW_ARCHS`](https://cibuildwheel.readthedocs.io/en/stable/options/#archs) | Change the architectures built on your machine by default. |
|
| | [`CIBW_ARCHS`](https://cibuildwheel.readthedocs.io/en/stable/options/#archs) | Change the architectures built on your machine by default. |
|
||||||
| | [`CIBW_PROJECT_REQUIRES_PYTHON`](https://cibuildwheel.readthedocs.io/en/stable/options/#requires-python) | Manually set the Python compatibility of your project |
|
| | [`CIBW_PROJECT_REQUIRES_PYTHON`](https://cibuildwheel.readthedocs.io/en/stable/options/#requires-python) | Manually set the Python compatibility of your project |
|
||||||
| | [`CIBW_PRERELEASE_PYTHONS`](https://cibuildwheel.readthedocs.io/en/stable/options/#prerelease-pythons) | Enable building with pre-release versions of Python |
|
| | [`CIBW_PRERELEASE_PYTHONS`](https://cibuildwheel.readthedocs.io/en/stable/options/#prerelease-pythons) | Enable building with pre-release versions of Python if available |
|
||||||
| **Build customization** | [`CIBW_BUILD_FRONTEND`](https://cibuildwheel.readthedocs.io/en/stable/options/#build-frontend) | Set the tool to use to build, either "pip" (default for now) or "build" |
|
| **Build customization** | [`CIBW_BUILD_FRONTEND`](https://cibuildwheel.readthedocs.io/en/stable/options/#build-frontend) | Set the tool to use to build, either "pip" (default for now) or "build" |
|
||||||
| | [`CIBW_ENVIRONMENT`](https://cibuildwheel.readthedocs.io/en/stable/options/#environment) | Set environment variables needed during the build |
|
| | [`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_ALL`](https://cibuildwheel.readthedocs.io/en/stable/options/#before-all) | Execute a shell command on the build system before any wheels are built. |
|
||||||
@@ -129,8 +128,6 @@ These options can be specified in a pyproject.toml file, as well; see [configura
|
|||||||
Working examples
|
Working examples
|
||||||
----------------
|
----------------
|
||||||
|
|
||||||
<!--working-examples-start-->
|
|
||||||
|
|
||||||
Here are some repos that use cibuildwheel.
|
Here are some repos that use cibuildwheel.
|
||||||
|
|
||||||
<!-- START bin/projects.py -->
|
<!-- START bin/projects.py -->
|
||||||
@@ -149,56 +146,6 @@ Here are some repos that use cibuildwheel.
|
|||||||
| [websockets][] | ![travisci icon][] | ![apple icon][] ![linux icon][] | Library for building WebSocket servers and clients. Mostly written in Python, with a small C 'speedups' extension module. |
|
| [websockets][] | ![travisci icon][] | ![apple icon][] ![linux icon][] | Library for building WebSocket servers and clients. Mostly written in Python, with a small C 'speedups' extension module. |
|
||||||
| [pyzmq][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Python bindings for zeromq, the networking library. Uses Cython and CFFI. |
|
| [pyzmq][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Python bindings for zeromq, the networking library. Uses Cython and CFFI. |
|
||||||
| [aiortc][] | ![github icon][] | ![apple icon][] ![linux icon][] | WebRTC and ORTC implementation for Python using asyncio. |
|
| [aiortc][] | ![github icon][] | ![apple icon][] ![linux icon][] | WebRTC and ORTC implementation for Python using asyncio. |
|
||||||
| [River][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | 🌊 Online machine learning in Python |
|
|
||||||
| [coverage.py][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | The coverage tool for Python |
|
|
||||||
| [numexpr][] | ![github icon][] ![travisci icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Fast numerical array expression evaluator for Python, NumPy, PyTables, pandas, bcolz and more |
|
|
||||||
| [h5py][] | ![azurepipelines icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | HDF5 for Python -- The h5py package is a Pythonic interface to the HDF5 binary data format. |
|
|
||||||
| [Dependency Injector][] | ![travisci icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Dependency injection framework for Python, uses Windows TravisCI |
|
|
||||||
| [PyAV][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Pythonic bindings for FFmpeg's libraries. |
|
|
||||||
| [PyTables][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | A Python package to manage extremely large amounts of data |
|
|
||||||
| [ruptures][] | ![github icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | Extensive Cython + NumPy [pyproject.toml](https://github.com/deepcharles/ruptures/blob/master/pyproject.toml) example. |
|
|
||||||
| [aioquic][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | QUIC and HTTP/3 implementation in Python |
|
|
||||||
| [pikepdf][] | ![azurepipelines icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | A Python library for reading and writing PDF, powered by qpdf |
|
|
||||||
| [google neuroglancer][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | WebGL-based viewer for volumetric data |
|
|
||||||
| [DeepForest][] | ![github icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | An Efficient, Scalable and Optimized Python Framework for Deep Forest (2021.2.1) |
|
|
||||||
| [AutoPy][] | ![travisci icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Includes a Windows Travis build. |
|
|
||||||
| [Parselmouth][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | A Python interface to the Praat software package, using pybind11, C++17 and CMake, with the core Praat static library built only once and shared between wheels. |
|
|
||||||
| [python-rapidjson][] | ![travisci icon][] ![gitlab icon][] ![appveyor icon][] | ![windows icon][] ![linux icon][] | Python wrapper around rapidjson |
|
|
||||||
| [Rtree][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Rtree: spatial index for Python GIS ¶ |
|
|
||||||
| [markupsafe][] | ![github icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | Safely add untrusted strings to HTML/XML markup. |
|
|
||||||
| [python-snappy][] | ![github icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | Python bindings for the snappy google library |
|
|
||||||
| [H3-py][] | ![github icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | Python bindings for H3, a hierarchical hexagonal geospatial indexing system |
|
|
||||||
| [pybind11 cmake_example][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Example pybind11 module built with a CMake-based build system |
|
|
||||||
| [KDEpy][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Kernel Density Estimation in Python |
|
|
||||||
| [cyvcf2][] | ![github icon][] | ![apple icon][] ![linux icon][] | cython + htslib == fast VCF and BCF processing |
|
|
||||||
| [pybind11 python_example][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Example pybind11 module built with a Python-based build system |
|
|
||||||
| [dd-trace-py][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Uses custom alternate arch emulation on GitHub |
|
|
||||||
| [sourmash][] | ![github icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | Quickly search, compare, and analyze genomic and metagenomic data sets. |
|
|
||||||
| [time-machine][] | ![github icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | Time mocking library using only the CPython C API. |
|
|
||||||
| [matrixprofile][] | ![travisci icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | A Python 3 library making time series data mining tasks, utilizing matrix profile algorithms, accessible to everyone. |
|
|
||||||
| [iminuit][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Jupyter-friendly Python interface for C++ MINUIT2 |
|
|
||||||
| [CTranslate2][] | ![github icon][] | ![apple icon][] ![linux icon][] | Includes libraries from the [Intel oneAPI toolkit](https://software.intel.com/content/www/us/en/develop/tools/oneapi/base-toolkit.html). The Linux wheels also include CUDA libraries for GPU execution. |
|
|
||||||
| [jq.py][] | ![travisci icon][] | ![apple icon][] ![linux icon][] | Python bindings for jq |
|
|
||||||
| [Tokenizer][] | ![github icon][] ![travisci icon][] | ![apple icon][] ![linux icon][] | Fast and customizable text tokenization library with BPE and SentencePiece support |
|
|
||||||
| [PyGLM][] | ![github icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | Fast OpenGL Mathematics (GLM) for Python |
|
|
||||||
| [bx-python][] | ![travisci icon][] | ![apple icon][] ![linux icon][] | A library that includes Cython extensions. |
|
|
||||||
| [iDynTree][] | ![github icon][] | ![linux icon][] | Uses manylinux_2_24 |
|
|
||||||
| [boost-histogram][] | ![github icon][] ![travisci icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Supports full range of wheels, including PyPy and alternate archs. |
|
|
||||||
| [pybase64][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Fast Base64 encoding/decoding in Python |
|
|
||||||
| [TgCrypto][] | ![travisci icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Includes a Windows Travis build. |
|
|
||||||
| [etebase-py][] | ![travisci icon][] | ![linux icon][] | Python bindings to a Rust library using `setuptools-rust`, and `sccache` for improved speed. |
|
|
||||||
| [fathon][] | ![travisci icon][] | ![apple icon][] ![linux icon][] | python package for DFA (Detrended Fluctuation Analysis) and related algorithms |
|
|
||||||
| [pyjet][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | The interface between FastJet and NumPy |
|
|
||||||
| [numpythia][] | ![github icon][] | ![apple icon][] ![linux icon][] | The interface between PYTHIA and NumPy |
|
|
||||||
| [polaroid][] | ![github icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | Full range of wheels for setuptools rust, with auto release and PyPI deploy. |
|
|
||||||
| [ninja][] | ![github icon][] ![travisci icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | Multitagged binary builds for all supported platforms, using cibw 2 config configuration. |
|
|
||||||
| [Imagecodecs (fork)][] | ![azurepipelines icon][] | ![apple icon][] ![linux icon][] | Over 20 external dependencies in compiled libraries, custom docker image, `libomp`, `openblas` and `install_name_tool` for macOS. |
|
|
||||||
| [GSD][] | ![github icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | Cython and NumPy project with 64-bit wheels. |
|
|
||||||
| [pybind11 scikit_build_example][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | An example combining scikit-build and pybind11 |
|
|
||||||
| [pyinstrument_cext][] | ![travisci icon][] ![appveyor icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | A simple C extension, without external dependencies |
|
|
||||||
| [xmlstarlet][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Python 3.6+ CFFI bindings with true MSVC build. |
|
|
||||||
| [CorrectionLib][] | ![github icon][] | ![apple icon][] ![linux icon][] | Structured JSON powered correction library for HEP, designed for the CMS experiment at CERN. |
|
|
||||||
| [SiPM][] | ![github icon][] | ![apple icon][] ![linux icon][] | High performance library for SiPM detectors simulation using C++17, OpenMP and AVX2 intrinsics. |
|
|
||||||
|
|
||||||
[scikit-learn]: https://github.com/scikit-learn/scikit-learn
|
[scikit-learn]: https://github.com/scikit-learn/scikit-learn
|
||||||
[Matplotlib]: https://github.com/matplotlib/matplotlib
|
[Matplotlib]: https://github.com/matplotlib/matplotlib
|
||||||
@@ -210,56 +157,6 @@ Here are some repos that use cibuildwheel.
|
|||||||
[websockets]: https://github.com/aaugustin/websockets
|
[websockets]: https://github.com/aaugustin/websockets
|
||||||
[pyzmq]: https://github.com/zeromq/pyzmq
|
[pyzmq]: https://github.com/zeromq/pyzmq
|
||||||
[aiortc]: https://github.com/aiortc/aiortc
|
[aiortc]: https://github.com/aiortc/aiortc
|
||||||
[River]: https://github.com/online-ml/river
|
|
||||||
[coverage.py]: https://github.com/nedbat/coveragepy
|
|
||||||
[numexpr]: https://github.com/pydata/numexpr
|
|
||||||
[h5py]: https://github.com/h5py/h5py
|
|
||||||
[Dependency Injector]: https://github.com/ets-labs/python-dependency-injector
|
|
||||||
[PyAV]: https://github.com/PyAV-Org/PyAV
|
|
||||||
[PyTables]: https://github.com/PyTables/PyTables
|
|
||||||
[ruptures]: https://github.com/deepcharles/ruptures
|
|
||||||
[aioquic]: https://github.com/aiortc/aioquic
|
|
||||||
[pikepdf]: https://github.com/pikepdf/pikepdf
|
|
||||||
[google neuroglancer]: https://github.com/google/neuroglancer
|
|
||||||
[DeepForest]: https://github.com/LAMDA-NJU/Deep-Forest
|
|
||||||
[AutoPy]: https://github.com/autopilot-rs/autopy
|
|
||||||
[Parselmouth]: https://github.com/YannickJadoul/Parselmouth
|
|
||||||
[python-rapidjson]: https://github.com/python-rapidjson/python-rapidjson
|
|
||||||
[Rtree]: https://github.com/Toblerity/rtree
|
|
||||||
[markupsafe]: https://github.com/pallets/markupsafe
|
|
||||||
[python-snappy]: https://github.com/andrix/python-snappy
|
|
||||||
[H3-py]: https://github.com/uber/h3-py
|
|
||||||
[pybind11 cmake_example]: https://github.com/pybind/cmake_example
|
|
||||||
[KDEpy]: https://github.com/tommyod/KDEpy
|
|
||||||
[cyvcf2]: https://github.com/brentp/cyvcf2
|
|
||||||
[pybind11 python_example]: https://github.com/pybind/python_example
|
|
||||||
[dd-trace-py]: https://github.com/DataDog/dd-trace-py
|
|
||||||
[sourmash]: https://github.com/dib-lab/sourmash
|
|
||||||
[time-machine]: https://github.com/adamchainz/time-machine
|
|
||||||
[matrixprofile]: https://github.com/matrix-profile-foundation/matrixprofile
|
|
||||||
[iminuit]: https://github.com/scikit-hep/iminuit
|
|
||||||
[CTranslate2]: https://github.com/OpenNMT/CTranslate2
|
|
||||||
[jq.py]: https://github.com/mwilliamson/jq.py
|
|
||||||
[Tokenizer]: https://github.com/OpenNMT/Tokenizer
|
|
||||||
[PyGLM]: https://github.com/Zuzu-Typ/PyGLM
|
|
||||||
[bx-python]: https://github.com/bxlab/bx-python
|
|
||||||
[iDynTree]: https://github.com/robotology/idyntree
|
|
||||||
[boost-histogram]: https://github.com/scikit-hep/boost-histogram
|
|
||||||
[pybase64]: https://github.com/mayeut/pybase64
|
|
||||||
[TgCrypto]: https://github.com/pyrogram/tgcrypto
|
|
||||||
[etebase-py]: https://github.com/etesync/etebase-py
|
|
||||||
[fathon]: https://github.com/stfbnc/fathon
|
|
||||||
[pyjet]: https://github.com/scikit-hep/pyjet
|
|
||||||
[numpythia]: https://github.com/scikit-hep/numpythia
|
|
||||||
[polaroid]: https://github.com/daggy1234/polaroid
|
|
||||||
[ninja]: https://github.com/scikit-build/ninja-python-distributions
|
|
||||||
[Imagecodecs (fork)]: https://github.com/czaki/imagecodecs_build
|
|
||||||
[GSD]: https://github.com/glotzerlab/gsd
|
|
||||||
[pybind11 scikit_build_example]: https://github.com/pybind/scikit_build_example
|
|
||||||
[pyinstrument_cext]: https://github.com/joerick/pyinstrument_cext
|
|
||||||
[xmlstarlet]: https://github.com/dimitern/xmlstarlet
|
|
||||||
[CorrectionLib]: https://github.com/cms-nanoAOD/correctionlib
|
|
||||||
[SiPM]: https://github.com/EdoPro98/SimSiPM
|
|
||||||
|
|
||||||
[appveyor icon]: docs/data/readme_icons/appveyor.svg
|
[appveyor icon]: docs/data/readme_icons/appveyor.svg
|
||||||
[github icon]: docs/data/readme_icons/github.svg
|
[github icon]: docs/data/readme_icons/github.svg
|
||||||
@@ -271,74 +168,9 @@ Here are some repos that use cibuildwheel.
|
|||||||
[apple icon]: docs/data/readme_icons/apple.svg
|
[apple icon]: docs/data/readme_icons/apple.svg
|
||||||
[linux icon]: docs/data/readme_icons/linux.svg
|
[linux icon]: docs/data/readme_icons/linux.svg
|
||||||
|
|
||||||
<!-- scikit-learn: 46722, last pushed 0 days ago -->
|
|
||||||
<!-- Matplotlib: 14010, last pushed 0 days ago -->
|
|
||||||
<!-- MyPy: 11113, last pushed 0 days ago -->
|
|
||||||
<!-- psutil: 7535, last pushed 1 days ago -->
|
|
||||||
<!-- scikit-image: 4444, last pushed 0 days ago -->
|
|
||||||
<!-- twisted-iocpsupport: 4322, last pushed 0 days ago -->
|
|
||||||
<!-- cmake: 4050, last pushed 0 days ago -->
|
|
||||||
<!-- websockets: 3490, last pushed 7 days ago -->
|
|
||||||
<!-- pyzmq: 2866, last pushed 2 days ago -->
|
|
||||||
<!-- aiortc: 2500, last pushed 27 days ago -->
|
|
||||||
<!-- River: 1828, last pushed 3 days ago -->
|
|
||||||
<!-- coverage.py: 1667, last pushed 0 days ago -->
|
|
||||||
<!-- numexpr: 1615, last pushed 30 days ago -->
|
|
||||||
<!-- h5py: 1554, last pushed 2 days ago -->
|
|
||||||
<!-- Dependency Injector: 1493, last pushed 0 days ago -->
|
|
||||||
<!-- PyAV: 1309, last pushed 61 days ago -->
|
|
||||||
<!-- PyTables: 1047, last pushed 18 days ago -->
|
|
||||||
<!-- ruptures: 768, last pushed 3 days ago -->
|
|
||||||
<!-- aioquic: 720, last pushed 12 days ago -->
|
|
||||||
<!-- pikepdf: 706, last pushed 4 days ago -->
|
|
||||||
<!-- google neuroglancer: 671, last pushed 1 days ago -->
|
|
||||||
<!-- DeepForest: 638, last pushed 14 days ago -->
|
|
||||||
<!-- AutoPy: 561, last pushed 50 days ago -->
|
|
||||||
<!-- Parselmouth: 536, last pushed 0 days ago -->
|
|
||||||
<!-- python-rapidjson: 424, last pushed 42 days ago -->
|
|
||||||
<!-- Rtree: 415, last pushed 139 days ago -->
|
|
||||||
<!-- markupsafe: 411, last pushed 1 days ago -->
|
|
||||||
<!-- python-snappy: 407, last pushed 16 days ago -->
|
|
||||||
<!-- H3-py: 407, last pushed 55 days ago -->
|
|
||||||
<!-- pybind11 cmake_example: 296, last pushed 1 days ago -->
|
|
||||||
<!-- KDEpy: 287, last pushed 64 days ago -->
|
|
||||||
<!-- cyvcf2: 267, last pushed 10 days ago -->
|
|
||||||
<!-- pybind11 python_example: 259, last pushed 1 days ago -->
|
|
||||||
<!-- dd-trace-py: 259, last pushed 0 days ago -->
|
|
||||||
<!-- sourmash: 258, last pushed 0 days ago -->
|
|
||||||
<!-- time-machine: 189, last pushed 1 days ago -->
|
|
||||||
<!-- matrixprofile: 187, last pushed 42 days ago -->
|
|
||||||
<!-- iminuit: 182, last pushed 1 days ago -->
|
|
||||||
<!-- CTranslate2: 177, last pushed 0 days ago -->
|
|
||||||
<!-- jq.py: 167, last pushed 4 days ago -->
|
|
||||||
<!-- Tokenizer: 150, last pushed 1 days ago -->
|
|
||||||
<!-- PyGLM: 107, last pushed 17 days ago -->
|
|
||||||
<!-- bx-python: 105, last pushed 29 days ago -->
|
|
||||||
<!-- iDynTree: 85, last pushed 4 days ago -->
|
|
||||||
<!-- boost-histogram: 83, last pushed 4 days ago -->
|
|
||||||
<!-- pybase64: 72, last pushed 3 days ago -->
|
|
||||||
<!-- TgCrypto: 68, last pushed 68 days ago -->
|
|
||||||
<!-- etebase-py: 51, last pushed 214 days ago -->
|
|
||||||
<!-- fathon: 33, last pushed 65 days ago -->
|
|
||||||
<!-- pyjet: 30, last pushed 79 days ago -->
|
|
||||||
<!-- numpythia: 30, last pushed 12 days ago -->
|
|
||||||
<!-- polaroid: 22, last pushed 12 days ago -->
|
|
||||||
<!-- ninja: 19, last pushed 1 days ago -->
|
|
||||||
<!-- Imagecodecs (fork): 17, last pushed 6 days ago -->
|
|
||||||
<!-- GSD: 17, last pushed 5 days ago -->
|
|
||||||
<!-- pybind11 scikit_build_example: 16, last pushed 3 days ago -->
|
|
||||||
<!-- pyinstrument_cext: 10, last pushed 22 days ago -->
|
|
||||||
<!-- xmlstarlet: 7, last pushed 15 days ago -->
|
|
||||||
<!-- CorrectionLib: 6, last pushed 10 days ago -->
|
|
||||||
<!-- SiPM: 4, last pushed 28 days ago -->
|
|
||||||
|
|
||||||
<!-- END bin/projects.py -->
|
<!-- END bin/projects.py -->
|
||||||
|
|
||||||
> Add your repo here! Let us know on [GitHub Discussions](https://github.com/pypa/cibuildwheel/discussions/485), or send a PR, adding your information to `docs/data/projects.yml`.
|
> ℹ️ That's just a handful, there are many more! Check out the [Working Examples](https://cibuildwheel.readthedocs.io/en/stable/working-examples) page in the docs.
|
||||||
>
|
|
||||||
> <sup>I'd like to include notes here to indicate why an example might be interesting to cibuildwheel users - the styles/technologies/techniques used in each. Please include that in future additions!</sup>
|
|
||||||
|
|
||||||
<!--working-examples-end-->
|
|
||||||
|
|
||||||
Legal note
|
Legal note
|
||||||
----------
|
----------
|
||||||
@@ -352,7 +184,23 @@ This is similar to static linking, so it might have some licence implications. C
|
|||||||
Changelog
|
Changelog
|
||||||
=========
|
=========
|
||||||
|
|
||||||
<!--changelog-start-->
|
<!-- START bin/update_readme_changelog.py -->
|
||||||
|
|
||||||
|
<!-- this section was generated by bin/update_readme_changelog.py -- do not edit manually -->
|
||||||
|
|
||||||
|
### v2.1.3
|
||||||
|
|
||||||
|
_6 October 2021_
|
||||||
|
|
||||||
|
- 🛠 Updated CPython 3.10 to the 3.10.0 final release
|
||||||
|
|
||||||
|
### v2.1.2
|
||||||
|
|
||||||
|
_14 September 2021_
|
||||||
|
|
||||||
|
- 🛠 Updated CPython 3.10 to 3.10.0rc2
|
||||||
|
- 📚 Multiple docs updates
|
||||||
|
- 🐛 Improved warnings when built binaries are bundled into the container on Linux. (#807)
|
||||||
|
|
||||||
### v2.1.1
|
### v2.1.1
|
||||||
|
|
||||||
@@ -382,548 +230,15 @@ _16 July 2021_
|
|||||||
- 🛠 Use the unified pypa/manylinux images to build PyPy (#671)
|
- 🛠 Use the unified pypa/manylinux images to build PyPy (#671)
|
||||||
- 🐛 Numerous bug fixes & docs improvements
|
- 🐛 Numerous bug fixes & docs improvements
|
||||||
|
|
||||||
### v1.12.0
|
<!-- END bin/update_readme_changelog.py -->
|
||||||
|
|
||||||
_22 June 2021_
|
---
|
||||||
|
|
||||||
- ✨ Adds support building macOS universal2/arm64 wheels on Python 3.8.
|
That's the last few versions.
|
||||||
|
|
||||||
### v1.11.1
|
ℹ️ **Want more changelog? Head over to [the changelog page in the docs](https://cibuildwheel.readthedocs.io/en/stable/changelog/).**
|
||||||
|
|
||||||
_28 May 2021_
|
---
|
||||||
|
|
||||||
- ✨ cibuildwheel is now part of the PyPA!
|
|
||||||
- 📚 Minor docs changes, fixing links related to the above transition
|
|
||||||
- 🛠 Update manylinux pins to the last version containing Python 2.7 and 3.5. (#674)
|
|
||||||
|
|
||||||
### v1.11.0
|
|
||||||
|
|
||||||
_1 May 2021_
|
|
||||||
|
|
||||||
- 📚 Lots of docs improvements! (#650, #623, #616, #609, #606)
|
|
||||||
- 🐛 Fix nuget "Package is not found" error on Windows. (#653)
|
|
||||||
- ⚠️ cibuildwheel will no longer build Windows 2.7 wheels, unless you specify a custom toolchain using `DISTUTILS_USE_SDK=1` and `MSSdk=1`. This is because Microsoft have stopped distributing Visual C++ Compiler for Python 2.7. See [this FAQ entry](https://cibuildwheel.readthedocs.io/en/stable/faq/#windows-and-python-27) for more details. (#649)
|
|
||||||
- 🐛 Fix crash on Windows due to missing `which` command (#641).
|
|
||||||
|
|
||||||
### v1.10.0
|
|
||||||
|
|
||||||
_22 Feb 2021_
|
|
||||||
|
|
||||||
- ✨ Added `manylinux_2_24` support. To use these new Debian-based manylinux
|
|
||||||
images, set your [manylinux image](https://cibuildwheel.readthedocs.io/en/stable/options/#manylinux-image)
|
|
||||||
options to `manylinux_2_24`.
|
|
||||||
- 🛠 On macOS, we now set `MACOSX_DEPLOYMENT_TARGET` in before running
|
|
||||||
`CIBW_BEFORE_ALL`. This is useful when using `CIBW_BEFORE_ALL` to build a
|
|
||||||
shared library.
|
|
||||||
- 🛠 An empty `CIBW_BUILD` option is now the same as being unset i.e, `*`.
|
|
||||||
This makes some build matrix configuration easier. (#588)
|
|
||||||
- 📚 Neatened up documentation - added tabs to a few places (#576), fixed some
|
|
||||||
formatting issues.
|
|
||||||
|
|
||||||
### v1.9.0
|
|
||||||
|
|
||||||
_5 February 2021_
|
|
||||||
|
|
||||||
- 🌟 Added support for Apple Silicon wheels on macOS! You can now
|
|
||||||
cross-compile `universal2` and `arm64` wheels on your existing macOS Intel
|
|
||||||
runners, by setting
|
|
||||||
[CIBW_ARCHS_MACOS](https://cibuildwheel.readthedocs.io/en/stable/options/#archs).
|
|
||||||
Xcode 12.2 or later is required, but you don't need macOS 11.0 - you can
|
|
||||||
still build on macOS 10.15. See
|
|
||||||
[this FAQ entry](https://cibuildwheel.readthedocs.io/en/stable/faq/#apple-silicon)
|
|
||||||
for more information. (#484)
|
|
||||||
- 🌟 Added auto-detection of your package's Python compatibility, via declared
|
|
||||||
[`requires-python`](https://www.python.org/dev/peps/pep-0621/#requires-python)
|
|
||||||
in your `pyproject.toml`, or
|
|
||||||
[`python_requires`](https://packaging.python.org/guides/distributing-packages-using-setuptools/#python-requires)
|
|
||||||
in `setup.cfg` or `setup.py`. If your project has these set, cibuildwheel
|
|
||||||
will automatically skip builds on versions of Python that your package
|
|
||||||
doesn't support. Hopefully this makes the first-run experience of
|
|
||||||
cibuildwheel a bit easier. If you need to override this for any reason,
|
|
||||||
look at [`CIBW_PROJECT_REQUIRES_PYTHON`](https://cibuildwheel.readthedocs.io/en/stable/options/#requires-python).
|
|
||||||
(#536)
|
|
||||||
- 🌟 cibuildwheel can now be invoked as a native GitHub Action! You can now
|
|
||||||
invoke cibuildwheel in a GHA build step like:
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
- name: Build wheels
|
|
||||||
uses: pypa/cibuildwheel@version # e.g. v1.9.0
|
|
||||||
with:
|
|
||||||
output-dir: wheelhouse
|
|
||||||
# env:
|
|
||||||
# CIBW_SOME_OPTION: value
|
|
||||||
```
|
|
||||||
|
|
||||||
This saves a bit of boilerplate, and you can [use Dependabot to keep the
|
|
||||||
pinned version up-to-date](https://cibuildwheel.readthedocs.io/en/stable/faq/#automatic-updates).
|
|
||||||
|
|
||||||
- ✨ Added `auto64` and `auto32` shortcuts to the
|
|
||||||
[CIBW_ARCHS](https://cibuildwheel.readthedocs.io/en/stable/options/#archs)
|
|
||||||
option. (#553)
|
|
||||||
- ✨ cibuildwheel now prints a list of the wheels built at the end of each
|
|
||||||
run. (#570)
|
|
||||||
- 📚 Lots of minor docs improvements.
|
|
||||||
|
|
||||||
### 1.8.0
|
|
||||||
|
|
||||||
_22 January 2021_
|
|
||||||
|
|
||||||
- 🌟 Added support for emulated builds! You can now build manylinux wheels on
|
|
||||||
ARM64`aarch64`, as well as `ppc64le` and 's390x'. To build under emulation,
|
|
||||||
register QEMU via binfmt_misc and set the
|
|
||||||
[`CIBW_ARCHS_LINUX`](https://cibuildwheel.readthedocs.io/en/stable/options/#archs)
|
|
||||||
option to the architectures you want to run. See
|
|
||||||
[this FAQ entry](https://cibuildwheel.readthedocs.io/en/stable/faq/#emulation)
|
|
||||||
for more information. (#482)
|
|
||||||
- ✨ Added `CIBW_TEST_SKIP` option. This allows you to choose certain builds
|
|
||||||
whose tests you'd like to skip. This might be useful when running a slow
|
|
||||||
test suite under emulation, for example. (#537)
|
|
||||||
- ✨ Added `curly-{brace,bracket,paren}` style globbing to `CIBW_BUILD` and
|
|
||||||
`CIBW_SKIP`. This gives more expressivity, letting you do things like
|
|
||||||
`CIBW_BUILD=cp39-manylinux_{aarch64,ppc64le}`. (#527)
|
|
||||||
- 🛠 cibuildwheel will now exit with an error if it's called with options that
|
|
||||||
skip all builds on a platform. This feature can be disabled by adding
|
|
||||||
`--allow-empty` on the command line. (#545)
|
|
||||||
|
|
||||||
### 1.7.4
|
|
||||||
|
|
||||||
_2 January 2021_
|
|
||||||
|
|
||||||
- 🐛 Fix the PyPy virtualenv patch to work on macOS 10.14 (#506)
|
|
||||||
|
|
||||||
### 1.7.3
|
|
||||||
|
|
||||||
_1 January 2021_
|
|
||||||
|
|
||||||
- 🛠 Added a patch for Pypy to ensure header files are available for building
|
|
||||||
in a virtualenv. (#502)
|
|
||||||
- 🛠 Some preparatory work towards using cibuildwheel as a GitHub Action.
|
|
||||||
Check out
|
|
||||||
[the FAQ](https://cibuildwheel.readthedocs.io/en/stable/faq/#option-1-github-action)
|
|
||||||
for information on how to use it. We'll be fully updating the docs to this
|
|
||||||
approach in a subsequent release (#494)
|
|
||||||
|
|
||||||
### 1.7.2
|
|
||||||
|
|
||||||
_21 December 2020_
|
|
||||||
|
|
||||||
- 🛠 Update dependencies, notably wheel==0.36.2 and pip==20.3.3, and CPython to
|
|
||||||
their latest bugfix releases (#489)
|
|
||||||
- 📚 Switch to a GitHub example in the README (#479)
|
|
||||||
- 📚 Create Working Examples table, with many projects that use cibuildwheel (#474)
|
|
||||||
- 📚 Import Working Examples table and Changelog to docs
|
|
||||||
|
|
||||||
### 1.7.1
|
|
||||||
|
|
||||||
_3 December 2020_
|
|
||||||
|
|
||||||
- 🛠 Update manylinux2010 image to resolve issues with 'yum' repositories
|
|
||||||
(#472)
|
|
||||||
|
|
||||||
### 1.7.0
|
|
||||||
|
|
||||||
_26 November 2020_
|
|
||||||
|
|
||||||
- ✨ New logging format, that uses 'fold groups' in CI services that support
|
|
||||||
it. (#458)
|
|
||||||
- 🛠 Update PyPy to 7.3.3 (#460)
|
|
||||||
- 🐛 Fix a bug where CIBW_BEFORE_ALL runs with a very old version of Python on
|
|
||||||
Linux. (#464)
|
|
||||||
|
|
||||||
### 1.6.4
|
|
||||||
|
|
||||||
_31 October 2020_
|
|
||||||
|
|
||||||
- 🐛 Fix crash on Appveyor during nuget install due to old system CA
|
|
||||||
certificates. We now use certifi's CA certs to download files. (#455)
|
|
||||||
|
|
||||||
### 1.6.3
|
|
||||||
|
|
||||||
_12 October 2020_
|
|
||||||
|
|
||||||
- 🐛 Fix missing SSL certificates on macOS (#447)
|
|
||||||
- 🛠 Update OpenSSL Python 3.5 patch to 1.1.1h on macOS (#449)
|
|
||||||
|
|
||||||
### 1.6.2
|
|
||||||
|
|
||||||
_9 October 2020_
|
|
||||||
|
|
||||||
- ✨ Python 3.9 updated to the final release version - v3.9.0 (#440)
|
|
||||||
- 🛠 Pypy updated to v7.3.2, adding alpha support for Python 3.7 (#430)
|
|
||||||
|
|
||||||
### 1.6.1
|
|
||||||
|
|
||||||
_20 September 2020_
|
|
||||||
|
|
||||||
- 🛠 Add PPC64LE manylinux image supporting Python 3.9. (#436)
|
|
||||||
- 📚 Add project URLs to PyPI listing (#428)
|
|
||||||
|
|
||||||
### 1.6.0
|
|
||||||
|
|
||||||
_9 September 2020_
|
|
||||||
|
|
||||||
- 🌟 Add Python 3.9 support! This initial support uses release candidate
|
|
||||||
builds. You can start publishing wheels for Python 3.9 now, ahead of
|
|
||||||
the official release. (#382)
|
|
||||||
|
|
||||||
Minor note - if you're building PPC64LE wheels, the manylinux image pinned
|
|
||||||
by this version is
|
|
||||||
[still on Python 3.9b3](https://github.com/pypa/manylinux/issues/758), not a
|
|
||||||
release candidate. We'd advise holding off on distributing 3.9 ppc64le wheels
|
|
||||||
until a subsequent version of cibuildwheel.
|
|
||||||
|
|
||||||
- 🌟 Add Gitlab CI support. Gitlab CI can now build Linux wheels, using
|
|
||||||
cibuildwheel. (#419)
|
|
||||||
- 🐛 Fix a bug that causes pyproject.toml dependencies to fail to install on
|
|
||||||
Windows (#420)
|
|
||||||
- 📚 Added some information about Windows VC++ runtimes and how they relate
|
|
||||||
to wheels.
|
|
||||||
|
|
||||||
### 1.5.5
|
|
||||||
|
|
||||||
_22 July 2020_
|
|
||||||
|
|
||||||
- 🐛 Fix a bug that would cause command substitutions in CIBW_ENVIRONMENT to
|
|
||||||
produce no output on Linux (#411)
|
|
||||||
- 🐛 Fix regression (introduced in 1.5.3) which caused BEFORE_BUILD and
|
|
||||||
BEFORE_ALL to be executed in the wrong directory (#410)
|
|
||||||
|
|
||||||
### 1.5.4
|
|
||||||
|
|
||||||
_19 June 2020_
|
|
||||||
|
|
||||||
- 🐛 Fix a bug that would cause command substitutions in CIBW_ENVIRONMENT
|
|
||||||
variables to not interpret quotes in commands correctly (#406, #408)
|
|
||||||
|
|
||||||
### 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/pypa/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!
|
|
||||||
|
|
||||||
<!--changelog-end-->
|
|
||||||
|
|
||||||
Contributing
|
Contributing
|
||||||
============
|
============
|
||||||
|
|||||||
@@ -136,6 +136,25 @@ def bump_version() -> None:
|
|||||||
while input('Type "done" to continue: ').strip().lower() != "done":
|
while input('Type "done" to continue: ').strip().lower() != "done":
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
# run pre-commit to update the README changelog
|
||||||
|
subprocess.run(
|
||||||
|
[
|
||||||
|
"pre-commit",
|
||||||
|
"run",
|
||||||
|
"--files=docs/changelog.md",
|
||||||
|
]
|
||||||
|
)
|
||||||
|
|
||||||
|
# run pre-commit to check that no errors occurred on the second run
|
||||||
|
subprocess.run(
|
||||||
|
[
|
||||||
|
"pre-commit",
|
||||||
|
"run",
|
||||||
|
"--files=docs/changelog.md",
|
||||||
|
],
|
||||||
|
check=True,
|
||||||
|
)
|
||||||
|
|
||||||
subprocess.run(
|
subprocess.run(
|
||||||
[
|
[
|
||||||
"git",
|
"git",
|
||||||
|
|||||||
+66
-28
@@ -5,7 +5,7 @@ Convert a yaml project list into a nice table.
|
|||||||
|
|
||||||
Suggested usage:
|
Suggested usage:
|
||||||
|
|
||||||
./bin/projects.py docs/data/projects.yml --online --auth $GITHUB_API_TOKEN --readme README.md
|
./bin/projects.py docs/data/projects.yml --online --auth $GITHUB_API_TOKEN
|
||||||
git diff
|
git diff
|
||||||
"""
|
"""
|
||||||
|
|
||||||
@@ -139,28 +139,35 @@ def fetch_icon(icon_name: str) -> None:
|
|||||||
f.write(svgElement.toxml())
|
f.write(svgElement.toxml())
|
||||||
|
|
||||||
|
|
||||||
def path_for_icon(icon_name: str) -> Path:
|
def path_for_icon(icon_name: str, relative_to: Path | None = None) -> Path:
|
||||||
return Path(".") / "docs" / "data" / "readme_icons" / f"{icon_name}.svg"
|
from_path = Path.cwd() if relative_to is None else relative_to.parent
|
||||||
|
|
||||||
|
absolute_path = PROJECT_ROOT / "docs" / "data" / "readme_icons" / f"{icon_name}.svg"
|
||||||
|
|
||||||
|
return absolute_path.resolve().relative_to(from_path.resolve())
|
||||||
|
|
||||||
|
|
||||||
def str_projects(
|
def get_projects(
|
||||||
config: list[dict[str, Any]],
|
config: list[dict[str, Any]],
|
||||||
*,
|
*,
|
||||||
online: bool = True,
|
online: bool = True,
|
||||||
auth: str | None = None,
|
auth: str | None = None,
|
||||||
) -> str:
|
) -> list[Project]:
|
||||||
io = StringIO()
|
|
||||||
print = functools.partial(builtins.print, file=io)
|
|
||||||
|
|
||||||
if online:
|
if online:
|
||||||
for icon in ICONS:
|
for icon in ICONS:
|
||||||
fetch_icon(icon)
|
fetch_icon(icon)
|
||||||
|
|
||||||
github = Github(auth) if online else None
|
github = Github(auth) if online else None
|
||||||
|
|
||||||
projects = sorted((Project(item, github) for item in config), reverse=online)
|
return sorted((Project(item, github) for item in config), reverse=online)
|
||||||
|
|
||||||
|
|
||||||
|
def render_projects(projects: list[Project], *, dest_path: Path, include_info: bool = True):
|
||||||
|
io = StringIO()
|
||||||
|
print = functools.partial(builtins.print, file=io)
|
||||||
|
|
||||||
print(Project.header())
|
print(Project.header())
|
||||||
|
|
||||||
for project in projects:
|
for project in projects:
|
||||||
print(project.table_row())
|
print(project.table_row())
|
||||||
|
|
||||||
@@ -170,42 +177,73 @@ def str_projects(
|
|||||||
|
|
||||||
print()
|
print()
|
||||||
for icon in ICONS:
|
for icon in ICONS:
|
||||||
print(f"[{icon} icon]: {path_for_icon(icon).as_posix()}")
|
print(f"[{icon} icon]: {path_for_icon(icon, relative_to=dest_path).as_posix()}")
|
||||||
|
|
||||||
print()
|
if include_info:
|
||||||
for project in projects:
|
print()
|
||||||
print(project.info())
|
for project in projects:
|
||||||
|
print(project.info())
|
||||||
|
|
||||||
return io.getvalue()
|
return io.getvalue()
|
||||||
|
|
||||||
|
|
||||||
@click.command(help="Try ./bin/projects.py docs/data/projects.yml --readme README.md")
|
def insert_projects_table(
|
||||||
|
file: Path,
|
||||||
|
*,
|
||||||
|
projects: list[Project],
|
||||||
|
input_filename: str,
|
||||||
|
include_info: bool = True,
|
||||||
|
):
|
||||||
|
text = file.read_text()
|
||||||
|
projects_table = render_projects(projects, include_info=include_info, dest_path=file)
|
||||||
|
|
||||||
|
start_str = "<!-- START bin/projects.py -->\n"
|
||||||
|
|
||||||
|
start = text.find(start_str)
|
||||||
|
assert start != -1
|
||||||
|
|
||||||
|
end = text.find("<!-- END bin/projects.py -->\n")
|
||||||
|
assert end != -1
|
||||||
|
|
||||||
|
generated_note = f"<!-- this section is generated by bin/projects.py. Don't edit it directly, instead, edit {input_filename} -->"
|
||||||
|
new_text = (
|
||||||
|
f"{text[:start + len(start_str)]}\n{generated_note}\n\n{projects_table}\n{text[end:]}"
|
||||||
|
)
|
||||||
|
|
||||||
|
file.write_text(new_text)
|
||||||
|
|
||||||
|
|
||||||
|
PROJECT_ROOT = Path(__file__).parent / ".."
|
||||||
|
README_FILE = PROJECT_ROOT / "README.md"
|
||||||
|
DOCS_PAGE = PROJECT_ROOT / "docs" / "working-examples.md"
|
||||||
|
|
||||||
|
|
||||||
|
@click.command(help="Try ./bin/projects.py docs/data/projects.yml")
|
||||||
@click.argument("input", type=click.File("r"))
|
@click.argument("input", type=click.File("r"))
|
||||||
@click.option("--online/--no-online", default=True, help="Get info from GitHub")
|
@click.option("--online/--no-online", default=True, help="Get info from GitHub")
|
||||||
@click.option("--auth", help="GitHub authentication token")
|
@click.option("--auth", help="GitHub authentication token")
|
||||||
@click.option("--readme", type=click.File("r+"), help="Modify a readme file if given")
|
@click.option(
|
||||||
|
"--dry-run", default=False, help="Print the output, rather than writing it to files in the repo"
|
||||||
|
)
|
||||||
def projects(
|
def projects(
|
||||||
input: TextIO,
|
input: TextIO,
|
||||||
online: bool,
|
online: bool,
|
||||||
auth: str | None,
|
auth: str | None,
|
||||||
readme: TextIO | None,
|
dry_run: bool,
|
||||||
) -> None:
|
) -> None:
|
||||||
config = yaml.safe_load(input)
|
config = yaml.safe_load(input)
|
||||||
output = str_projects(config, online=online, auth=auth)
|
projects = get_projects(config, online=online, auth=auth)
|
||||||
|
|
||||||
if readme is None:
|
if dry_run:
|
||||||
|
output = render_projects(projects, dest_path=README_FILE)
|
||||||
print(output)
|
print(output)
|
||||||
else:
|
else:
|
||||||
text = readme.read()
|
insert_projects_table(
|
||||||
start_str = "<!-- START bin/projects.py -->\n"
|
README_FILE, projects=projects[:10], input_filename=input.name, include_info=False
|
||||||
start = text.find(start_str)
|
)
|
||||||
end = text.find("<!-- END bin/projects.py -->\n")
|
insert_projects_table(
|
||||||
generated_note = f"<!-- this section is generated by bin/projects.py. Don't edit it directly, instead, edit {input.name} -->"
|
DOCS_PAGE, projects=projects, input_filename=input.name, include_info=True
|
||||||
new_text = f"{text[:start + len(start_str)]}\n{generated_note}\n\n{output}\n{text[end:]}"
|
)
|
||||||
|
|
||||||
readme.seek(0)
|
|
||||||
readme.write(new_text)
|
|
||||||
readme.truncate()
|
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
|
|||||||
Executable
+47
@@ -0,0 +1,47 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
|
||||||
|
import re
|
||||||
|
import sys
|
||||||
|
from pathlib import Path
|
||||||
|
|
||||||
|
PROJECT_ROOT = Path(__file__).parent / ".."
|
||||||
|
CHANGELOG_FILE = PROJECT_ROOT / "docs" / "changelog.md"
|
||||||
|
README_FILE = PROJECT_ROOT / "README.md"
|
||||||
|
|
||||||
|
# https://regexr.com/622ds
|
||||||
|
FIRST_5_CHANGELOG_ENTRIES_REGEX = re.compile(r"""(^###.*?(?=###)){5}""", re.DOTALL | re.MULTILINE)
|
||||||
|
|
||||||
|
# https://regexr.com/622e5
|
||||||
|
README_CHANGELOG_SECTION = re.compile(
|
||||||
|
r"""(?<=<!-- START bin\/update_readme_changelog.py -->\n).*(?=<!-- END bin\/update_readme_changelog.py -->)""",
|
||||||
|
re.DOTALL,
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
def main():
|
||||||
|
changelog_text = CHANGELOG_FILE.read_text()
|
||||||
|
readme_text = README_FILE.read_text()
|
||||||
|
|
||||||
|
mini_changelog_match = FIRST_5_CHANGELOG_ENTRIES_REGEX.search(changelog_text)
|
||||||
|
assert mini_changelog_match, "Failed to find the first few changelog entries"
|
||||||
|
|
||||||
|
mini_changelog = "\n".join(
|
||||||
|
[
|
||||||
|
"",
|
||||||
|
"<!-- this section was generated by bin/update_readme_changelog.py -- do not edit manually -->",
|
||||||
|
"",
|
||||||
|
mini_changelog_match.group(0).strip(),
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
]
|
||||||
|
)
|
||||||
|
|
||||||
|
if not re.search(README_CHANGELOG_SECTION, readme_text):
|
||||||
|
sys.exit("Changelog section not found in README")
|
||||||
|
|
||||||
|
readme_text = re.sub(README_CHANGELOG_SECTION, mini_changelog, readme_text)
|
||||||
|
README_FILE.write_text(readme_text)
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
main()
|
||||||
@@ -1 +1 @@
|
|||||||
__version__ = "2.1.1"
|
__version__ = "2.1.3"
|
||||||
|
|||||||
+20
-4
@@ -306,18 +306,27 @@ def build(options: BuildOptions) -> None:
|
|||||||
log.step_end_with_error(
|
log.step_end_with_error(
|
||||||
f"Command {error.cmd} failed with code {error.returncode}. {error.stdout}"
|
f"Command {error.cmd} failed with code {error.returncode}. {error.stdout}"
|
||||||
)
|
)
|
||||||
troubleshoot(options.package_dir, error)
|
troubleshoot(options, error)
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
|
|
||||||
|
|
||||||
def troubleshoot(package_dir: Path, error: Exception) -> None:
|
def _matches_prepared_command(error_cmd: List[str], command_template: str) -> bool:
|
||||||
|
if len(error_cmd) < 3 or error_cmd[0:2] != ["sh", "-c"]:
|
||||||
|
return False
|
||||||
|
command_prefix = command_template.split("{", maxsplit=1)[0].strip()
|
||||||
|
return error_cmd[2].startswith(command_prefix)
|
||||||
|
|
||||||
|
|
||||||
|
def troubleshoot(options: BuildOptions, error: Exception) -> None:
|
||||||
|
|
||||||
if isinstance(error, subprocess.CalledProcessError) and (
|
if isinstance(error, subprocess.CalledProcessError) and (
|
||||||
error.cmd[0:4] == ["python", "-m", "pip", "wheel"]
|
error.cmd[0:4] == ["python", "-m", "pip", "wheel"]
|
||||||
or error.cmd[0:3] == ["python", "-m", "build"]
|
or error.cmd[0:3] == ["python", "-m", "build"]
|
||||||
|
or _matches_prepared_command(error.cmd, options.repair_command)
|
||||||
):
|
):
|
||||||
# the wheel build step failed
|
# the wheel build step failed
|
||||||
print("Checking for common errors...")
|
print("Checking for common errors...")
|
||||||
so_files = list(package_dir.glob("**/*.so"))
|
so_files = list(options.package_dir.glob("**/*.so"))
|
||||||
|
|
||||||
if so_files:
|
if so_files:
|
||||||
print(
|
print(
|
||||||
@@ -326,10 +335,17 @@ def troubleshoot(package_dir: Path, error: Exception) -> None:
|
|||||||
NOTE: Shared object (.so) files found in this project.
|
NOTE: Shared object (.so) files found in this project.
|
||||||
|
|
||||||
These files might be built against the wrong OS, causing problems with
|
These files might be built against the wrong OS, causing problems with
|
||||||
auditwheel.
|
auditwheel. If possible, run cibuildwheel in a clean checkout.
|
||||||
|
|
||||||
If you're using Cython and have previously done an in-place build,
|
If you're using Cython and have previously done an in-place build,
|
||||||
remove those build files (*.so and *.c) before starting cibuildwheel.
|
remove those build files (*.so and *.c) before starting cibuildwheel.
|
||||||
|
|
||||||
|
setuptools uses the build/ folder to store its build cache. It
|
||||||
|
may be necessary to remove those build files (*.so and *.o) before
|
||||||
|
starting cibuildwheel.
|
||||||
|
|
||||||
|
Files that belong to a virtual environment are probably not an issue
|
||||||
|
unless you used a custom command telling cibuildwheel to activate it.
|
||||||
"""
|
"""
|
||||||
),
|
),
|
||||||
file=sys.stderr,
|
file=sys.stderr,
|
||||||
|
|||||||
@@ -37,12 +37,12 @@ python_configurations = [
|
|||||||
{ identifier = "cp38-macosx_x86_64", version = "3.8", url = "https://www.python.org/ftp/python/3.8.10/python-3.8.10-macosx10.9.pkg" },
|
{ identifier = "cp38-macosx_x86_64", version = "3.8", url = "https://www.python.org/ftp/python/3.8.10/python-3.8.10-macosx10.9.pkg" },
|
||||||
{ identifier = "cp38-macosx_arm64", version = "3.8", url = "https://www.python.org/ftp/python/3.8.10/python-3.8.10-macosx10.9.pkg" },
|
{ identifier = "cp38-macosx_arm64", version = "3.8", url = "https://www.python.org/ftp/python/3.8.10/python-3.8.10-macosx10.9.pkg" },
|
||||||
{ identifier = "cp38-macosx_universal2", version = "3.8", url = "https://www.python.org/ftp/python/3.8.10/python-3.8.10-macosx10.9.pkg" },
|
{ identifier = "cp38-macosx_universal2", version = "3.8", url = "https://www.python.org/ftp/python/3.8.10/python-3.8.10-macosx10.9.pkg" },
|
||||||
{ identifier = "cp39-macosx_x86_64", version = "3.9", url = "https://www.python.org/ftp/python/3.9.6/python-3.9.6-macos11.pkg" },
|
{ identifier = "cp39-macosx_x86_64", version = "3.9", url = "https://www.python.org/ftp/python/3.9.7/python-3.9.7-macos11.pkg" },
|
||||||
{ identifier = "cp39-macosx_arm64", version = "3.9", url = "https://www.python.org/ftp/python/3.9.6/python-3.9.6-macos11.pkg" },
|
{ identifier = "cp39-macosx_arm64", version = "3.9", url = "https://www.python.org/ftp/python/3.9.7/python-3.9.7-macos11.pkg" },
|
||||||
{ identifier = "cp39-macosx_universal2", version = "3.9", url = "https://www.python.org/ftp/python/3.9.6/python-3.9.6-macos11.pkg" },
|
{ identifier = "cp39-macosx_universal2", version = "3.9", url = "https://www.python.org/ftp/python/3.9.7/python-3.9.7-macos11.pkg" },
|
||||||
{ identifier = "cp310-macosx_x86_64", version = "3.10", url = "https://www.python.org/ftp/python/3.10.0/python-3.10.0rc1-macos11.pkg" },
|
{ identifier = "cp310-macosx_x86_64", version = "3.10", url = "https://www.python.org/ftp/python/3.10.0/python-3.10.0-macos11.pkg" },
|
||||||
{ identifier = "cp310-macosx_arm64", version = "3.10", url = "https://www.python.org/ftp/python/3.10.0/python-3.10.0rc1-macos11.pkg" },
|
{ identifier = "cp310-macosx_arm64", version = "3.10", url = "https://www.python.org/ftp/python/3.10.0/python-3.10.0-macos11.pkg" },
|
||||||
{ identifier = "cp310-macosx_universal2", version = "3.10", url = "https://www.python.org/ftp/python/3.10.0/python-3.10.0rc1-macos11.pkg" },
|
{ identifier = "cp310-macosx_universal2", version = "3.10", url = "https://www.python.org/ftp/python/3.10.0/python-3.10.0-macos11.pkg" },
|
||||||
{ identifier = "pp37-macosx_x86_64", version = "3.7", url = "https://downloads.python.org/pypy/pypy3.7-v7.3.5-osx64.tar.bz2" },
|
{ identifier = "pp37-macosx_x86_64", version = "3.7", url = "https://downloads.python.org/pypy/pypy3.7-v7.3.5-osx64.tar.bz2" },
|
||||||
]
|
]
|
||||||
|
|
||||||
@@ -54,9 +54,9 @@ python_configurations = [
|
|||||||
{ identifier = "cp37-win_amd64", version = "3.7.9", arch = "64" },
|
{ identifier = "cp37-win_amd64", version = "3.7.9", arch = "64" },
|
||||||
{ identifier = "cp38-win32", version = "3.8.10", arch = "32" },
|
{ identifier = "cp38-win32", version = "3.8.10", arch = "32" },
|
||||||
{ identifier = "cp38-win_amd64", version = "3.8.10", arch = "64" },
|
{ identifier = "cp38-win_amd64", version = "3.8.10", arch = "64" },
|
||||||
{ identifier = "cp39-win32", version = "3.9.6", arch = "32" },
|
{ identifier = "cp39-win32", version = "3.9.7", arch = "32" },
|
||||||
{ identifier = "cp39-win_amd64", version = "3.9.6", arch = "64" },
|
{ identifier = "cp39-win_amd64", version = "3.9.7", arch = "64" },
|
||||||
{ identifier = "cp310-win32", version = "3.10.0-rc1", arch = "32" },
|
{ identifier = "cp310-win32", version = "3.10.0", arch = "32" },
|
||||||
{ identifier = "cp310-win_amd64", version = "3.10.0-rc1", arch = "64" },
|
{ identifier = "cp310-win_amd64", version = "3.10.0", arch = "64" },
|
||||||
{ identifier = "pp37-win_amd64", version = "3.7", arch = "64", url = "https://downloads.python.org/pypy/pypy3.7-v7.3.5-win64.zip" },
|
{ identifier = "pp37-win_amd64", version = "3.7", arch = "64", url = "https://downloads.python.org/pypy/pypy3.7-v7.3.5-win64.zip" },
|
||||||
]
|
]
|
||||||
|
|||||||
@@ -6,41 +6,39 @@
|
|||||||
#
|
#
|
||||||
backports.entry-points-selectable==1.1.0
|
backports.entry-points-selectable==1.1.0
|
||||||
# via virtualenv
|
# via virtualenv
|
||||||
delocate==0.9.0
|
delocate==0.10.0
|
||||||
# via -r cibuildwheel/resources/constraints.in
|
# via -r cibuildwheel/resources/constraints.in
|
||||||
distlib==0.3.2
|
distlib==0.3.3
|
||||||
# via virtualenv
|
# via virtualenv
|
||||||
filelock==3.0.12
|
filelock==3.3.0
|
||||||
# via virtualenv
|
# via virtualenv
|
||||||
importlib-metadata==4.6.3
|
importlib-metadata==4.8.1
|
||||||
# via
|
# via
|
||||||
# backports.entry-points-selectable
|
# backports.entry-points-selectable
|
||||||
# virtualenv
|
# virtualenv
|
||||||
importlib-resources==5.2.2
|
importlib-resources==5.2.2
|
||||||
# via virtualenv
|
# via virtualenv
|
||||||
platformdirs==2.2.0
|
platformdirs==2.4.0
|
||||||
# via virtualenv
|
# via virtualenv
|
||||||
six==1.16.0
|
six==1.16.0
|
||||||
# via
|
# via virtualenv
|
||||||
# delocate
|
typing-extensions==3.10.0.2
|
||||||
# virtualenv
|
|
||||||
typing-extensions==3.10.0.0
|
|
||||||
# via
|
# via
|
||||||
# delocate
|
# delocate
|
||||||
# importlib-metadata
|
# importlib-metadata
|
||||||
virtualenv==20.7.0
|
virtualenv==20.8.1
|
||||||
# via -r cibuildwheel/resources/constraints.in
|
# via -r cibuildwheel/resources/constraints.in
|
||||||
wheel==0.36.2
|
wheel==0.37.0
|
||||||
# via
|
# via
|
||||||
# -r cibuildwheel/resources/constraints.in
|
# -r cibuildwheel/resources/constraints.in
|
||||||
# delocate
|
# delocate
|
||||||
zipp==3.5.0
|
zipp==3.6.0
|
||||||
# via
|
# via
|
||||||
# importlib-metadata
|
# importlib-metadata
|
||||||
# importlib-resources
|
# importlib-resources
|
||||||
|
|
||||||
# The following packages are considered to be unsafe in a requirements file:
|
# The following packages are considered to be unsafe in a requirements file:
|
||||||
pip==21.2.3
|
pip==21.2.4
|
||||||
# via -r cibuildwheel/resources/constraints.in
|
# via -r cibuildwheel/resources/constraints.in
|
||||||
setuptools==57.4.0
|
setuptools==58.2.0
|
||||||
# via -r cibuildwheel/resources/constraints.in
|
# via -r cibuildwheel/resources/constraints.in
|
||||||
|
|||||||
@@ -6,37 +6,35 @@
|
|||||||
#
|
#
|
||||||
backports.entry-points-selectable==1.1.0
|
backports.entry-points-selectable==1.1.0
|
||||||
# via virtualenv
|
# via virtualenv
|
||||||
delocate==0.9.0
|
delocate==0.10.0
|
||||||
# via -r cibuildwheel/resources/constraints.in
|
# via -r cibuildwheel/resources/constraints.in
|
||||||
distlib==0.3.2
|
distlib==0.3.3
|
||||||
# via virtualenv
|
# via virtualenv
|
||||||
filelock==3.0.12
|
filelock==3.3.0
|
||||||
# via virtualenv
|
# via virtualenv
|
||||||
importlib-metadata==4.6.3
|
importlib-metadata==4.8.1
|
||||||
# via
|
# via
|
||||||
# backports.entry-points-selectable
|
# backports.entry-points-selectable
|
||||||
# virtualenv
|
# virtualenv
|
||||||
platformdirs==2.2.0
|
platformdirs==2.4.0
|
||||||
# via virtualenv
|
# via virtualenv
|
||||||
six==1.16.0
|
six==1.16.0
|
||||||
# via
|
# via virtualenv
|
||||||
# delocate
|
typing-extensions==3.10.0.2
|
||||||
# virtualenv
|
|
||||||
typing-extensions==3.10.0.0
|
|
||||||
# via
|
# via
|
||||||
# delocate
|
# delocate
|
||||||
# importlib-metadata
|
# importlib-metadata
|
||||||
virtualenv==20.7.0
|
virtualenv==20.8.1
|
||||||
# via -r cibuildwheel/resources/constraints.in
|
# via -r cibuildwheel/resources/constraints.in
|
||||||
wheel==0.36.2
|
wheel==0.37.0
|
||||||
# via
|
# via
|
||||||
# -r cibuildwheel/resources/constraints.in
|
# -r cibuildwheel/resources/constraints.in
|
||||||
# delocate
|
# delocate
|
||||||
zipp==3.5.0
|
zipp==3.6.0
|
||||||
# via importlib-metadata
|
# via importlib-metadata
|
||||||
|
|
||||||
# The following packages are considered to be unsafe in a requirements file:
|
# The following packages are considered to be unsafe in a requirements file:
|
||||||
pip==21.2.3
|
pip==21.2.4
|
||||||
# via -r cibuildwheel/resources/constraints.in
|
# via -r cibuildwheel/resources/constraints.in
|
||||||
setuptools==57.4.0
|
setuptools==58.2.0
|
||||||
# via -r cibuildwheel/resources/constraints.in
|
# via -r cibuildwheel/resources/constraints.in
|
||||||
|
|||||||
@@ -6,29 +6,27 @@
|
|||||||
#
|
#
|
||||||
backports.entry-points-selectable==1.1.0
|
backports.entry-points-selectable==1.1.0
|
||||||
# via virtualenv
|
# via virtualenv
|
||||||
delocate==0.9.0
|
delocate==0.10.0
|
||||||
# via -r cibuildwheel/resources/constraints.in
|
# via -r cibuildwheel/resources/constraints.in
|
||||||
distlib==0.3.2
|
distlib==0.3.3
|
||||||
# via virtualenv
|
# via virtualenv
|
||||||
filelock==3.0.12
|
filelock==3.3.0
|
||||||
# via virtualenv
|
# via virtualenv
|
||||||
platformdirs==2.2.0
|
platformdirs==2.4.0
|
||||||
# via virtualenv
|
# via virtualenv
|
||||||
six==1.16.0
|
six==1.16.0
|
||||||
# via
|
# via virtualenv
|
||||||
# delocate
|
typing-extensions==3.10.0.2
|
||||||
# virtualenv
|
|
||||||
typing-extensions==3.10.0.0
|
|
||||||
# via delocate
|
# via delocate
|
||||||
virtualenv==20.7.0
|
virtualenv==20.8.1
|
||||||
# via -r cibuildwheel/resources/constraints.in
|
# via -r cibuildwheel/resources/constraints.in
|
||||||
wheel==0.36.2
|
wheel==0.37.0
|
||||||
# via
|
# via
|
||||||
# -r cibuildwheel/resources/constraints.in
|
# -r cibuildwheel/resources/constraints.in
|
||||||
# delocate
|
# delocate
|
||||||
|
|
||||||
# The following packages are considered to be unsafe in a requirements file:
|
# The following packages are considered to be unsafe in a requirements file:
|
||||||
pip==21.2.3
|
pip==21.2.4
|
||||||
# via -r cibuildwheel/resources/constraints.in
|
# via -r cibuildwheel/resources/constraints.in
|
||||||
setuptools==57.4.0
|
setuptools==58.2.0
|
||||||
# via -r cibuildwheel/resources/constraints.in
|
# via -r cibuildwheel/resources/constraints.in
|
||||||
|
|||||||
@@ -6,29 +6,27 @@
|
|||||||
#
|
#
|
||||||
backports.entry-points-selectable==1.1.0
|
backports.entry-points-selectable==1.1.0
|
||||||
# via virtualenv
|
# via virtualenv
|
||||||
delocate==0.9.0
|
delocate==0.10.0
|
||||||
# via -r cibuildwheel/resources/constraints.in
|
# via -r cibuildwheel/resources/constraints.in
|
||||||
distlib==0.3.2
|
distlib==0.3.3
|
||||||
# via virtualenv
|
# via virtualenv
|
||||||
filelock==3.0.12
|
filelock==3.3.0
|
||||||
# via virtualenv
|
# via virtualenv
|
||||||
platformdirs==2.2.0
|
platformdirs==2.4.0
|
||||||
# via virtualenv
|
# via virtualenv
|
||||||
six==1.16.0
|
six==1.16.0
|
||||||
# via
|
# via virtualenv
|
||||||
# delocate
|
typing-extensions==3.10.0.2
|
||||||
# virtualenv
|
|
||||||
typing-extensions==3.10.0.0
|
|
||||||
# via delocate
|
# via delocate
|
||||||
virtualenv==20.7.0
|
virtualenv==20.8.1
|
||||||
# via -r cibuildwheel/resources/constraints.in
|
# via -r cibuildwheel/resources/constraints.in
|
||||||
wheel==0.36.2
|
wheel==0.37.0
|
||||||
# via
|
# via
|
||||||
# -r cibuildwheel/resources/constraints.in
|
# -r cibuildwheel/resources/constraints.in
|
||||||
# delocate
|
# delocate
|
||||||
|
|
||||||
# The following packages are considered to be unsafe in a requirements file:
|
# The following packages are considered to be unsafe in a requirements file:
|
||||||
pip==21.2.3
|
pip==21.2.4
|
||||||
# via -r cibuildwheel/resources/constraints.in
|
# via -r cibuildwheel/resources/constraints.in
|
||||||
setuptools==57.4.0
|
setuptools==58.2.0
|
||||||
# via -r cibuildwheel/resources/constraints.in
|
# via -r cibuildwheel/resources/constraints.in
|
||||||
|
|||||||
@@ -6,29 +6,27 @@
|
|||||||
#
|
#
|
||||||
backports.entry-points-selectable==1.1.0
|
backports.entry-points-selectable==1.1.0
|
||||||
# via virtualenv
|
# via virtualenv
|
||||||
delocate==0.9.0
|
delocate==0.10.0
|
||||||
# via -r cibuildwheel/resources/constraints.in
|
# via -r cibuildwheel/resources/constraints.in
|
||||||
distlib==0.3.2
|
distlib==0.3.3
|
||||||
# via virtualenv
|
# via virtualenv
|
||||||
filelock==3.0.12
|
filelock==3.3.0
|
||||||
# via virtualenv
|
# via virtualenv
|
||||||
platformdirs==2.2.0
|
platformdirs==2.4.0
|
||||||
# via virtualenv
|
# via virtualenv
|
||||||
six==1.16.0
|
six==1.16.0
|
||||||
# via
|
# via virtualenv
|
||||||
# delocate
|
typing-extensions==3.10.0.2
|
||||||
# virtualenv
|
|
||||||
typing-extensions==3.10.0.0
|
|
||||||
# via delocate
|
# via delocate
|
||||||
virtualenv==20.7.0
|
virtualenv==20.8.1
|
||||||
# via -r cibuildwheel/resources/constraints.in
|
# via -r cibuildwheel/resources/constraints.in
|
||||||
wheel==0.36.2
|
wheel==0.37.0
|
||||||
# via
|
# via
|
||||||
# -r cibuildwheel/resources/constraints.in
|
# -r cibuildwheel/resources/constraints.in
|
||||||
# delocate
|
# delocate
|
||||||
|
|
||||||
# The following packages are considered to be unsafe in a requirements file:
|
# The following packages are considered to be unsafe in a requirements file:
|
||||||
pip==21.2.3
|
pip==21.2.4
|
||||||
# via -r cibuildwheel/resources/constraints.in
|
# via -r cibuildwheel/resources/constraints.in
|
||||||
setuptools==57.4.0
|
setuptools==58.2.0
|
||||||
# via -r cibuildwheel/resources/constraints.in
|
# via -r cibuildwheel/resources/constraints.in
|
||||||
|
|||||||
@@ -1,38 +1,43 @@
|
|||||||
[x86_64]
|
[x86_64]
|
||||||
manylinux1 = quay.io/pypa/manylinux1_x86_64:2021-08-01-f71d505
|
manylinux1 = quay.io/pypa/manylinux1_x86_64:2021-10-02-5ba76a5
|
||||||
manylinux2010 = quay.io/pypa/manylinux2010_x86_64:2021-08-03-e7edb37
|
manylinux2010 = quay.io/pypa/manylinux2010_x86_64:2021-10-06-94da8f1
|
||||||
manylinux2014 = quay.io/pypa/manylinux2014_x86_64:2021-08-03-e7edb37
|
manylinux2014 = quay.io/pypa/manylinux2014_x86_64:2021-10-06-94da8f1
|
||||||
manylinux_2_24 = quay.io/pypa/manylinux_2_24_x86_64:2021-08-03-e7edb37
|
manylinux_2_24 = quay.io/pypa/manylinux_2_24_x86_64:2021-10-06-94da8f1
|
||||||
|
musllinux_1_1 = quay.io/pypa/musllinux_1_1_x86_64:2021-10-06-94da8f1
|
||||||
|
|
||||||
[i686]
|
[i686]
|
||||||
manylinux1 = quay.io/pypa/manylinux1_i686:2021-08-01-f71d505
|
manylinux1 = quay.io/pypa/manylinux1_i686:2021-10-02-5ba76a5
|
||||||
manylinux2010 = quay.io/pypa/manylinux2010_i686:2021-08-03-e7edb37
|
manylinux2010 = quay.io/pypa/manylinux2010_i686:2021-10-06-94da8f1
|
||||||
manylinux2014 = quay.io/pypa/manylinux2014_i686:2021-08-03-e7edb37
|
manylinux2014 = quay.io/pypa/manylinux2014_i686:2021-10-06-94da8f1
|
||||||
manylinux_2_24 = quay.io/pypa/manylinux_2_24_i686:2021-08-03-e7edb37
|
manylinux_2_24 = quay.io/pypa/manylinux_2_24_i686:2021-10-06-94da8f1
|
||||||
|
musllinux_1_1 = quay.io/pypa/musllinux_1_1_i686:2021-10-06-94da8f1
|
||||||
|
|
||||||
[pypy_x86_64]
|
[pypy_x86_64]
|
||||||
manylinux2010 = quay.io/pypa/manylinux2010_x86_64:2021-08-03-e7edb37
|
manylinux2010 = quay.io/pypa/manylinux2010_x86_64:2021-10-06-94da8f1
|
||||||
manylinux2014 = quay.io/pypa/manylinux2014_x86_64:2021-08-03-e7edb37
|
manylinux2014 = quay.io/pypa/manylinux2014_x86_64:2021-10-06-94da8f1
|
||||||
manylinux_2_24 = quay.io/pypa/manylinux_2_24_x86_64:2021-08-03-e7edb37
|
manylinux_2_24 = quay.io/pypa/manylinux_2_24_x86_64:2021-10-06-94da8f1
|
||||||
|
|
||||||
[pypy_i686]
|
[pypy_i686]
|
||||||
manylinux2010 = quay.io/pypa/manylinux2010_i686:2021-08-03-e7edb37
|
manylinux2010 = quay.io/pypa/manylinux2010_i686:2021-10-06-94da8f1
|
||||||
manylinux2014 = quay.io/pypa/manylinux2014_i686:2021-08-03-e7edb37
|
manylinux2014 = quay.io/pypa/manylinux2014_i686:2021-10-06-94da8f1
|
||||||
manylinux_2_24 = quay.io/pypa/manylinux_2_24_i686:2021-08-03-e7edb37
|
manylinux_2_24 = quay.io/pypa/manylinux_2_24_i686:2021-10-06-94da8f1
|
||||||
|
|
||||||
[aarch64]
|
[aarch64]
|
||||||
manylinux2014 = quay.io/pypa/manylinux2014_aarch64:2021-08-03-e7edb37
|
manylinux2014 = quay.io/pypa/manylinux2014_aarch64:2021-10-06-94da8f1
|
||||||
manylinux_2_24 = quay.io/pypa/manylinux_2_24_aarch64:2021-08-03-e7edb37
|
manylinux_2_24 = quay.io/pypa/manylinux_2_24_aarch64:2021-10-06-94da8f1
|
||||||
|
musllinux_1_1 = quay.io/pypa/musllinux_1_1_aarch64:2021-10-06-94da8f1
|
||||||
|
|
||||||
[ppc64le]
|
[ppc64le]
|
||||||
manylinux2014 = quay.io/pypa/manylinux2014_ppc64le:2021-08-03-e7edb37
|
manylinux2014 = quay.io/pypa/manylinux2014_ppc64le:2021-10-06-94da8f1
|
||||||
manylinux_2_24 = quay.io/pypa/manylinux_2_24_ppc64le:2021-08-03-e7edb37
|
manylinux_2_24 = quay.io/pypa/manylinux_2_24_ppc64le:2021-10-06-94da8f1
|
||||||
|
musllinux_1_1 = quay.io/pypa/musllinux_1_1_ppc64le:2021-10-06-94da8f1
|
||||||
|
|
||||||
[s390x]
|
[s390x]
|
||||||
manylinux2014 = quay.io/pypa/manylinux2014_s390x:2021-08-03-e7edb37
|
manylinux2014 = quay.io/pypa/manylinux2014_s390x:2021-10-06-94da8f1
|
||||||
manylinux_2_24 = quay.io/pypa/manylinux_2_24_s390x:2021-08-03-e7edb37
|
manylinux_2_24 = quay.io/pypa/manylinux_2_24_s390x:2021-10-06-94da8f1
|
||||||
|
musllinux_1_1 = quay.io/pypa/musllinux_1_1_s390x:2021-10-06-94da8f1
|
||||||
|
|
||||||
[pypy_aarch64]
|
[pypy_aarch64]
|
||||||
manylinux2014 = quay.io/pypa/manylinux2014_aarch64:2021-08-03-e7edb37
|
manylinux2014 = quay.io/pypa/manylinux2014_aarch64:2021-10-06-94da8f1
|
||||||
manylinux_2_24 = quay.io/pypa/manylinux_2_24_aarch64:2021-08-03-e7edb37
|
manylinux_2_24 = quay.io/pypa/manylinux_2_24_aarch64:2021-10-06-94da8f1
|
||||||
|
|
||||||
|
|||||||
+582
-5
@@ -2,11 +2,588 @@
|
|||||||
title: Changelog
|
title: Changelog
|
||||||
---
|
---
|
||||||
|
|
||||||
{%
|
### v2.1.3
|
||||||
include-markdown "../README.md"
|
|
||||||
start="<!--changelog-start-->"
|
_6 October 2021_
|
||||||
end="<!--changelog-end-->"
|
|
||||||
%}
|
- 🛠 Updated CPython 3.10 to the 3.10.0 final release
|
||||||
|
|
||||||
|
### v2.1.2
|
||||||
|
|
||||||
|
_14 September 2021_
|
||||||
|
|
||||||
|
- 🛠 Updated CPython 3.10 to 3.10.0rc2
|
||||||
|
- 📚 Multiple docs updates
|
||||||
|
- 🐛 Improved warnings when built binaries are bundled into the container on Linux. (#807)
|
||||||
|
|
||||||
|
### v2.1.1
|
||||||
|
|
||||||
|
_7 August 2021_
|
||||||
|
|
||||||
|
- ✨ Corresponding with the release of CPython 3.10.0rc1, which is ABI stable, cibuildwheel now builds CPython 3.10 by default - without the CIBW_PRERELEASE_PYTHONS flag.
|
||||||
|
|
||||||
|
<sup>Note: v2.1.0 was a bad release, it was yanked from PyPI.</sup>
|
||||||
|
|
||||||
|
### v2.0.1
|
||||||
|
|
||||||
|
_25 July 2021_
|
||||||
|
|
||||||
|
- 📚 Docs improvements (#767)
|
||||||
|
- 🛠 Dependency updates, including delocate 0.9.0.
|
||||||
|
|
||||||
|
### v2.0.0 🎉
|
||||||
|
|
||||||
|
_16 July 2021_
|
||||||
|
|
||||||
|
- 🌟 You can now configure cibuildwheel options inside your project's `pyproject.toml`! Environment variables still work of course. Check out the [documentation](https://cibuildwheel.readthedocs.io/en/stable/options/#setting-options) for more info.
|
||||||
|
- 🌟 Added support for building wheels with [build](https://github.com/pypa/build), as well as pip. This feature is controlled with the [`CIBW_BUILD_FRONTEND`](https://cibuildwheel.readthedocs.io/en/stable/options/#build-frontend) option.
|
||||||
|
- 🌟 Added the ability to test building wheels on CPython 3.10! Because CPython 3.10 is in beta, these wheels should not be distributed, because they might not be compatible with the final release, but it's available to build for testing purposes. Use the flag [`--prerelease-pythons` or `CIBW_PRERELEASE_PYTHONS`](https://cibuildwheel.readthedocs.io/en/stable/options/#prerelease-pythons) to test. (#675) This version of cibuildwheel includes CPython 3.10.0b4.
|
||||||
|
- ⚠️ **Removed support for building Python 2.7 and Python 3.5 wheels**, for both CPython and PyPy. If you still need to build on these versions, please use the latest v1.x version. (#596)
|
||||||
|
- ✨ Added the ability to build CPython 3.8 wheels for Apple Silicon. (#704)
|
||||||
|
- 🛠 Update to the latest build dependencies, including Auditwheel 4. (#633)
|
||||||
|
- 🛠 Use the unified pypa/manylinux images to build PyPy (#671)
|
||||||
|
- 🐛 Numerous bug fixes & docs improvements
|
||||||
|
|
||||||
|
### v1.12.0
|
||||||
|
|
||||||
|
_22 June 2021_
|
||||||
|
|
||||||
|
- ✨ Adds support building macOS universal2/arm64 wheels on Python 3.8.
|
||||||
|
|
||||||
|
### v1.11.1
|
||||||
|
|
||||||
|
_28 May 2021_
|
||||||
|
|
||||||
|
- ✨ cibuildwheel is now part of the PyPA!
|
||||||
|
- 📚 Minor docs changes, fixing links related to the above transition
|
||||||
|
- 🛠 Update manylinux pins to the last version containing Python 2.7 and 3.5. (#674)
|
||||||
|
|
||||||
|
### v1.11.0
|
||||||
|
|
||||||
|
_1 May 2021_
|
||||||
|
|
||||||
|
- 📚 Lots of docs improvements! (#650, #623, #616, #609, #606)
|
||||||
|
- 🐛 Fix nuget "Package is not found" error on Windows. (#653)
|
||||||
|
- ⚠️ cibuildwheel will no longer build Windows 2.7 wheels, unless you specify a custom toolchain using `DISTUTILS_USE_SDK=1` and `MSSdk=1`. This is because Microsoft have stopped distributing Visual C++ Compiler for Python 2.7. See [this FAQ entry](https://cibuildwheel.readthedocs.io/en/stable/faq/#windows-and-python-27) for more details. (#649)
|
||||||
|
- 🐛 Fix crash on Windows due to missing `which` command (#641).
|
||||||
|
|
||||||
|
### v1.10.0
|
||||||
|
|
||||||
|
_22 Feb 2021_
|
||||||
|
|
||||||
|
- ✨ Added `manylinux_2_24` support. To use these new Debian-based manylinux
|
||||||
|
images, set your [manylinux image](https://cibuildwheel.readthedocs.io/en/stable/options/#manylinux-image)
|
||||||
|
options to `manylinux_2_24`.
|
||||||
|
- 🛠 On macOS, we now set `MACOSX_DEPLOYMENT_TARGET` in before running
|
||||||
|
`CIBW_BEFORE_ALL`. This is useful when using `CIBW_BEFORE_ALL` to build a
|
||||||
|
shared library.
|
||||||
|
- 🛠 An empty `CIBW_BUILD` option is now the same as being unset i.e, `*`.
|
||||||
|
This makes some build matrix configuration easier. (#588)
|
||||||
|
- 📚 Neatened up documentation - added tabs to a few places (#576), fixed some
|
||||||
|
formatting issues.
|
||||||
|
|
||||||
|
### v1.9.0
|
||||||
|
|
||||||
|
_5 February 2021_
|
||||||
|
|
||||||
|
- 🌟 Added support for Apple Silicon wheels on macOS! You can now
|
||||||
|
cross-compile `universal2` and `arm64` wheels on your existing macOS Intel
|
||||||
|
runners, by setting
|
||||||
|
[CIBW_ARCHS_MACOS](https://cibuildwheel.readthedocs.io/en/stable/options/#archs).
|
||||||
|
Xcode 12.2 or later is required, but you don't need macOS 11.0 - you can
|
||||||
|
still build on macOS 10.15. See
|
||||||
|
[this FAQ entry](https://cibuildwheel.readthedocs.io/en/stable/faq/#apple-silicon)
|
||||||
|
for more information. (#484)
|
||||||
|
- 🌟 Added auto-detection of your package's Python compatibility, via declared
|
||||||
|
[`requires-python`](https://www.python.org/dev/peps/pep-0621/#requires-python)
|
||||||
|
in your `pyproject.toml`, or
|
||||||
|
[`python_requires`](https://packaging.python.org/guides/distributing-packages-using-setuptools/#python-requires)
|
||||||
|
in `setup.cfg` or `setup.py`. If your project has these set, cibuildwheel
|
||||||
|
will automatically skip builds on versions of Python that your package
|
||||||
|
doesn't support. Hopefully this makes the first-run experience of
|
||||||
|
cibuildwheel a bit easier. If you need to override this for any reason,
|
||||||
|
look at [`CIBW_PROJECT_REQUIRES_PYTHON`](https://cibuildwheel.readthedocs.io/en/stable/options/#requires-python).
|
||||||
|
(#536)
|
||||||
|
- 🌟 cibuildwheel can now be invoked as a native GitHub Action! You can now
|
||||||
|
invoke cibuildwheel in a GHA build step like:
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
- name: Build wheels
|
||||||
|
uses: pypa/cibuildwheel@version # e.g. v1.9.0
|
||||||
|
with:
|
||||||
|
output-dir: wheelhouse
|
||||||
|
# env:
|
||||||
|
# CIBW_SOME_OPTION: value
|
||||||
|
```
|
||||||
|
|
||||||
|
This saves a bit of boilerplate, and you can [use Dependabot to keep the
|
||||||
|
pinned version up-to-date](https://cibuildwheel.readthedocs.io/en/stable/faq/#automatic-updates).
|
||||||
|
|
||||||
|
- ✨ Added `auto64` and `auto32` shortcuts to the
|
||||||
|
[CIBW_ARCHS](https://cibuildwheel.readthedocs.io/en/stable/options/#archs)
|
||||||
|
option. (#553)
|
||||||
|
- ✨ cibuildwheel now prints a list of the wheels built at the end of each
|
||||||
|
run. (#570)
|
||||||
|
- 📚 Lots of minor docs improvements.
|
||||||
|
|
||||||
|
### 1.8.0
|
||||||
|
|
||||||
|
_22 January 2021_
|
||||||
|
|
||||||
|
- 🌟 Added support for emulated builds! You can now build manylinux wheels on
|
||||||
|
ARM64`aarch64`, as well as `ppc64le` and 's390x'. To build under emulation,
|
||||||
|
register QEMU via binfmt_misc and set the
|
||||||
|
[`CIBW_ARCHS_LINUX`](https://cibuildwheel.readthedocs.io/en/stable/options/#archs)
|
||||||
|
option to the architectures you want to run. See
|
||||||
|
[this FAQ entry](https://cibuildwheel.readthedocs.io/en/stable/faq/#emulation)
|
||||||
|
for more information. (#482)
|
||||||
|
- ✨ Added `CIBW_TEST_SKIP` option. This allows you to choose certain builds
|
||||||
|
whose tests you'd like to skip. This might be useful when running a slow
|
||||||
|
test suite under emulation, for example. (#537)
|
||||||
|
- ✨ Added `curly-{brace,bracket,paren}` style globbing to `CIBW_BUILD` and
|
||||||
|
`CIBW_SKIP`. This gives more expressivity, letting you do things like
|
||||||
|
`CIBW_BUILD=cp39-manylinux_{aarch64,ppc64le}`. (#527)
|
||||||
|
- 🛠 cibuildwheel will now exit with an error if it's called with options that
|
||||||
|
skip all builds on a platform. This feature can be disabled by adding
|
||||||
|
`--allow-empty` on the command line. (#545)
|
||||||
|
|
||||||
|
### 1.7.4
|
||||||
|
|
||||||
|
_2 January 2021_
|
||||||
|
|
||||||
|
- 🐛 Fix the PyPy virtualenv patch to work on macOS 10.14 (#506)
|
||||||
|
|
||||||
|
### 1.7.3
|
||||||
|
|
||||||
|
_1 January 2021_
|
||||||
|
|
||||||
|
- 🛠 Added a patch for Pypy to ensure header files are available for building
|
||||||
|
in a virtualenv. (#502)
|
||||||
|
- 🛠 Some preparatory work towards using cibuildwheel as a GitHub Action.
|
||||||
|
Check out
|
||||||
|
[the FAQ](https://cibuildwheel.readthedocs.io/en/stable/faq/#option-1-github-action)
|
||||||
|
for information on how to use it. We'll be fully updating the docs to this
|
||||||
|
approach in a subsequent release (#494)
|
||||||
|
|
||||||
|
### 1.7.2
|
||||||
|
|
||||||
|
_21 December 2020_
|
||||||
|
|
||||||
|
- 🛠 Update dependencies, notably wheel==0.36.2 and pip==20.3.3, and CPython to
|
||||||
|
their latest bugfix releases (#489)
|
||||||
|
- 📚 Switch to a GitHub example in the README (#479)
|
||||||
|
- 📚 Create Working Examples table, with many projects that use cibuildwheel (#474)
|
||||||
|
- 📚 Import Working Examples table and Changelog to docs
|
||||||
|
|
||||||
|
### 1.7.1
|
||||||
|
|
||||||
|
_3 December 2020_
|
||||||
|
|
||||||
|
- 🛠 Update manylinux2010 image to resolve issues with 'yum' repositories
|
||||||
|
(#472)
|
||||||
|
|
||||||
|
### 1.7.0
|
||||||
|
|
||||||
|
_26 November 2020_
|
||||||
|
|
||||||
|
- ✨ New logging format, that uses 'fold groups' in CI services that support
|
||||||
|
it. (#458)
|
||||||
|
- 🛠 Update PyPy to 7.3.3 (#460)
|
||||||
|
- 🐛 Fix a bug where CIBW_BEFORE_ALL runs with a very old version of Python on
|
||||||
|
Linux. (#464)
|
||||||
|
|
||||||
|
### 1.6.4
|
||||||
|
|
||||||
|
_31 October 2020_
|
||||||
|
|
||||||
|
- 🐛 Fix crash on Appveyor during nuget install due to old system CA
|
||||||
|
certificates. We now use certifi's CA certs to download files. (#455)
|
||||||
|
|
||||||
|
### 1.6.3
|
||||||
|
|
||||||
|
_12 October 2020_
|
||||||
|
|
||||||
|
- 🐛 Fix missing SSL certificates on macOS (#447)
|
||||||
|
- 🛠 Update OpenSSL Python 3.5 patch to 1.1.1h on macOS (#449)
|
||||||
|
|
||||||
|
### 1.6.2
|
||||||
|
|
||||||
|
_9 October 2020_
|
||||||
|
|
||||||
|
- ✨ Python 3.9 updated to the final release version - v3.9.0 (#440)
|
||||||
|
- 🛠 Pypy updated to v7.3.2, adding alpha support for Python 3.7 (#430)
|
||||||
|
|
||||||
|
### 1.6.1
|
||||||
|
|
||||||
|
_20 September 2020_
|
||||||
|
|
||||||
|
- 🛠 Add PPC64LE manylinux image supporting Python 3.9. (#436)
|
||||||
|
- 📚 Add project URLs to PyPI listing (#428)
|
||||||
|
|
||||||
|
### 1.6.0
|
||||||
|
|
||||||
|
_9 September 2020_
|
||||||
|
|
||||||
|
- 🌟 Add Python 3.9 support! This initial support uses release candidate
|
||||||
|
builds. You can start publishing wheels for Python 3.9 now, ahead of
|
||||||
|
the official release. (#382)
|
||||||
|
|
||||||
|
Minor note - if you're building PPC64LE wheels, the manylinux image pinned
|
||||||
|
by this version is
|
||||||
|
[still on Python 3.9b3](https://github.com/pypa/manylinux/issues/758), not a
|
||||||
|
release candidate. We'd advise holding off on distributing 3.9 ppc64le wheels
|
||||||
|
until a subsequent version of cibuildwheel.
|
||||||
|
|
||||||
|
- 🌟 Add Gitlab CI support. Gitlab CI can now build Linux wheels, using
|
||||||
|
cibuildwheel. (#419)
|
||||||
|
- 🐛 Fix a bug that causes pyproject.toml dependencies to fail to install on
|
||||||
|
Windows (#420)
|
||||||
|
- 📚 Added some information about Windows VC++ runtimes and how they relate
|
||||||
|
to wheels.
|
||||||
|
|
||||||
|
### 1.5.5
|
||||||
|
|
||||||
|
_22 July 2020_
|
||||||
|
|
||||||
|
- 🐛 Fix a bug that would cause command substitutions in CIBW_ENVIRONMENT to
|
||||||
|
produce no output on Linux (#411)
|
||||||
|
- 🐛 Fix regression (introduced in 1.5.3) which caused BEFORE_BUILD and
|
||||||
|
BEFORE_ALL to be executed in the wrong directory (#410)
|
||||||
|
|
||||||
|
### 1.5.4
|
||||||
|
|
||||||
|
_19 June 2020_
|
||||||
|
|
||||||
|
- 🐛 Fix a bug that would cause command substitutions in CIBW_ENVIRONMENT
|
||||||
|
variables to not interpret quotes in commands correctly (#406, #408)
|
||||||
|
|
||||||
|
### 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/pypa/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!
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
// undo the scrollTop that the theme did on this page, as there are loads
|
// undo the scrollTop that the theme did on this page, as there are loads
|
||||||
|
|||||||
@@ -102,7 +102,7 @@
|
|||||||
|
|
||||||
- name: pikepdf
|
- name: pikepdf
|
||||||
gh: pikepdf/pikepdf
|
gh: pikepdf/pikepdf
|
||||||
ci: [azurepipelines]
|
ci: [github]
|
||||||
os: [windows, apple, linux]
|
os: [windows, apple, linux]
|
||||||
|
|
||||||
- name: fathon
|
- name: fathon
|
||||||
@@ -376,3 +376,10 @@
|
|||||||
ci: [github, travisci]
|
ci: [github, travisci]
|
||||||
os: [apple, linux, windows]
|
os: [apple, linux, windows]
|
||||||
notes: Multitagged binary builds for all supported platforms, using cibw 2 config configuration.
|
notes: Multitagged binary builds for all supported platforms, using cibw 2 config configuration.
|
||||||
|
|
||||||
|
- name: tgcalls
|
||||||
|
gh: MarshalX/tgcalls
|
||||||
|
pypi: pytgcalls
|
||||||
|
ci: [github]
|
||||||
|
os: [apple, windows]
|
||||||
|
notes: Python `pybind11` binding to Telegram's WebRTC library with third party dependencies like `OpenSSL`, `MozJPEG`, `FFmpeg`, etc.
|
||||||
|
|||||||
+9
-3
@@ -10,6 +10,14 @@ p {
|
|||||||
line-height: 26px;
|
line-height: 26px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pre {
|
||||||
|
margin: 1em 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
pre:first-child {
|
||||||
|
margin-top: 0;
|
||||||
|
}
|
||||||
|
|
||||||
code {
|
code {
|
||||||
font-size: 85%;
|
font-size: 85%;
|
||||||
background-color: rgba(27,31,35,.05);
|
background-color: rgba(27,31,35,.05);
|
||||||
@@ -22,6 +30,7 @@ code {
|
|||||||
|
|
||||||
code, pre, tt {
|
code, pre, tt {
|
||||||
font-family: SFMono-Regular, Consolas, Liberation Mono, Menlo, monospace;
|
font-family: SFMono-Regular, Consolas, Liberation Mono, Menlo, monospace;
|
||||||
|
line-height: 1.4;
|
||||||
}
|
}
|
||||||
|
|
||||||
pre code, pre code.hljs {
|
pre code, pre code.hljs {
|
||||||
@@ -216,6 +225,3 @@ h1, h2, h3, h4, h5, h6 {
|
|||||||
padding-right: 0;
|
padding-right: 0;
|
||||||
margin-bottom: 0.5em;
|
margin-bottom: 0.5em;
|
||||||
}
|
}
|
||||||
.tabs.examples pre:first-child {
|
|
||||||
margin-top: 0;
|
|
||||||
}
|
|
||||||
|
|||||||
+166
-93
@@ -2,35 +2,23 @@
|
|||||||
title: Tips and tricks
|
title: Tips and tricks
|
||||||
---
|
---
|
||||||
|
|
||||||
### Troubleshooting
|
## Tips
|
||||||
|
|
||||||
If your wheel didn't compile, check the list below for some debugging tips.
|
|
||||||
|
|
||||||
- A mistake in your config. To quickly test your config without doing a git push and waiting for your code to build on CI, you can test the Linux build in a Docker container. On Mac or Linux, with Docker running, try `cibuildwheel --platform linux`. You'll have to bring your config into the current environment first.
|
|
||||||
|
|
||||||
- Missing dependency. You might need to install something on the build machine. You can do this in `.travis.yml`, `appveyor.yml`, or `.circleci/config.yml`, with apt-get, brew or choco. Given how the Linux build works, you'll need to use the [`CIBW_BEFORE_BUILD`](options.md#before-build) option.
|
|
||||||
|
|
||||||
- Windows: missing C feature. The Windows C compiler doesn't support C language features invented after 1990, so you'll have to backport your C code to C90. For me, this mostly involved putting my variable declarations at the top of the function like an animal.
|
|
||||||
|
|
||||||
- MacOS: calling cibuildwheel from a python3 script and getting a `ModuleNotFoundError`? Due to a (fixed) [bug](https://bugs.python.org/issue22490) in CPython, you'll need to [unset the `__PYVENV_LAUNCHER__` variable](https://github.com/pypa/cibuildwheel/issues/133#issuecomment-478288597) before activating a venv.
|
|
||||||
|
|
||||||
### Building Python 2.7 / PyPy2 wheels
|
|
||||||
|
|
||||||
See the [cibuildwheel version 1 docs](https://cibuildwheel.readthedocs.io/en/1.x/) for information about building Python 2.7 or PyPy2 wheels. There are lots of tricks and workaround there that are no longer required for Python 3 in cibuildwheel 2.
|
|
||||||
|
|
||||||
### Linux builds on Docker
|
### Linux builds on Docker
|
||||||
|
|
||||||
Linux wheels are built in the [`manylinux` docker images](https://github.com/pypa/manylinux) to provide binary compatible wheels on Linux, according to [PEP 571](https://www.python.org/dev/peps/pep-0571/). Because of this, when building with `cibuildwheel` on Linux, a few things should be taken into account:
|
Linux wheels are built in the [`manylinux` docker images](https://github.com/pypa/manylinux) to provide binary compatible wheels on Linux, according to [PEP 571](https://www.python.org/dev/peps/pep-0571/). Because of this, when building with `cibuildwheel` on Linux, a few things should be taken into account:
|
||||||
|
|
||||||
- Programs and libraries are not installed on the Travis CI Ubuntu host, but rather should be installed inside of the Docker image (using `yum` for `manylinux2010` or `manylinux2014`, and `apt-get` for `manylinux_2_24`) or manually. The same goes for environment variables that are potentially needed to customize the wheel building. `cibuildwheel` supports this by providing the `CIBW_ENVIRONMENT` and `CIBW_BEFORE_BUILD` options to setup the build environment inside the running Docker image. See [the options docs](options.md#build-environment) for details on these options.
|
- Programs and libraries are not installed on the CI runner host, but rather should be installed inside of the Docker image - using `yum` for `manylinux2010` or `manylinux2014`, and `apt-get` for `manylinux_2_24`, or manually. The same goes for environment variables that are potentially needed to customize the wheel building.
|
||||||
|
|
||||||
- The project directory is mounted in the running Docker instance as `/project`, the output directory for the wheels as `/output`. In general, this is handled transparently by `cibuildwheel`. For a more finegrained level of control however, the root of the host file system is mounted as `/host`, allowing for example to access shared files, caches, etc. on the host file system. Note that this is not available on CircleCI due to their Docker policies.
|
`cibuildwheel` supports this by providing the [`CIBW_ENVIRONMENT`](options.md#environment) and [`CIBW_BEFORE_ALL`](options.md#before-all) options to setup the build environment inside the running Docker image.
|
||||||
|
|
||||||
- Alternative dockers images can be specified with the `CIBW_MANYLINUX_X86_64_IMAGE`, `CIBW_MANYLINUX_I686_IMAGE`, and `CIBW_MANYLINUX_PYPY_X86_64_IMAGE` options to allow for a custom, preconfigured build environment for the Linux builds. See [options](options.md#manylinux-image) for more details.
|
- The project directory is mounted in the running Docker instance as `/project`, the output directory for the wheels as `/output`. In general, this is handled transparently by `cibuildwheel`. For a more finegrained level of control however, the root of the host file system is mounted as `/host`, allowing for example to access shared files, caches, etc. on the host file system. Note that `/host` is not available on CircleCI due to their Docker policies.
|
||||||
|
|
||||||
|
- Alternative Docker images can be specified with the `CIBW_MANYLINUX_*_IMAGE` options to allow for a custom, preconfigured build environment for the Linux builds. See [options](options.md#manylinux-image) for more details.
|
||||||
|
|
||||||
### Building macOS wheels for Apple Silicon {: #apple-silicon}
|
### Building macOS wheels for Apple Silicon {: #apple-silicon}
|
||||||
|
|
||||||
`cibuildwheel` supports cross-compiling `universal2` and `arm64` wheels on `x86_64` runners. With the introduction of Apple Silicon, you now have several choices for wheels for Python 3.9+:
|
`cibuildwheel` supports cross-compiling `universal2` and `arm64` wheels on `x86_64` runners. With the introduction of Apple Silicon, you now have several choices for wheels for Python 3.8+:
|
||||||
|
|
||||||
#### `x86_64`
|
#### `x86_64`
|
||||||
|
|
||||||
@@ -89,6 +77,7 @@ by default, and require opt-in by setting `CIBW_ARCHS_MACOS`.
|
|||||||
Here's an example GitHub Actions workflow with a job that builds for Apple Silicon:
|
Here's an example GitHub Actions workflow with a job that builds for Apple Silicon:
|
||||||
|
|
||||||
> .github/workflows/build_macos.yml
|
> .github/workflows/build_macos.yml
|
||||||
|
|
||||||
```yml
|
```yml
|
||||||
{% include "../examples/github-apple-silicon.yml" %}
|
{% include "../examples/github-apple-silicon.yml" %}
|
||||||
```
|
```
|
||||||
@@ -114,33 +103,6 @@ Linux), and the other architectures are emulated automatically.
|
|||||||
{% include "../examples/github-with-qemu.yml" %}
|
{% include "../examples/github-with-qemu.yml" %}
|
||||||
```
|
```
|
||||||
|
|
||||||
### Building Apple Silicon wheels on Intel {: #apple-silicon}
|
|
||||||
|
|
||||||
`cibuildwheel` supports cross-compiling `universal2` and `arm64` wheels on `x86_64` runners.
|
|
||||||
|
|
||||||
These wheels are not built by default, but can be enabled by setting the [`CIBW_ARCHS_MACOS` option](options.md#archs) to `x86_64 arm64 universal2`. Cross-compilation is provided by the Xcode toolchain.
|
|
||||||
|
|
||||||
!!! important
|
|
||||||
When cross-compiling on Intel, it is not possible to test `arm64` and the `arm64` part of a `universal2` wheel.
|
|
||||||
|
|
||||||
`cibuildwheel` will raise a warning to notify you of this - these warnings be be silenced by skipping testing on these platforms: `CIBW_TEST_SKIP: *_arm64 *_universal2:arm64`.
|
|
||||||
|
|
||||||
Hopefully, this is a temporary situation. Once we have widely available Apple Silicon CI runners, we can build and test `arm64` and `universal2` wheels more natively. That's why `universal2` wheels are not yet built by default, and require opt-in by setting `CIBW_ARCHS_MACOS`.
|
|
||||||
|
|
||||||
!!! note
|
|
||||||
Your runner image needs Xcode Command Line Tools 12.2 or later to build `universal2` and `arm64`.
|
|
||||||
|
|
||||||
So far, only CPython 3.9 supports `universal2` and `arm64` wheels.
|
|
||||||
|
|
||||||
Here's an example GitHub Actions workflow with a job that builds for Apple Silicon:
|
|
||||||
|
|
||||||
> .github/workflows/build_macos.yml
|
|
||||||
|
|
||||||
```yml
|
|
||||||
{% include "../examples/github-apple-silicon.yml" %}
|
|
||||||
```
|
|
||||||
|
|
||||||
|
|
||||||
### Building packages with optional C extensions
|
### Building packages with optional C extensions
|
||||||
|
|
||||||
`cibuildwheel` defines the environment variable `CIBUILDWHEEL` to the value `1` allowing projects for which the C extension is optional to make it mandatory when building wheels.
|
`cibuildwheel` defines the environment variable `CIBUILDWHEEL` to the value `1` allowing projects for which the C extension is optional to make it mandatory when building wheels.
|
||||||
@@ -155,51 +117,6 @@ myextension = Extension(
|
|||||||
)
|
)
|
||||||
```
|
```
|
||||||
|
|
||||||
### 'No module named XYZ' errors after running cibuildwheel on macOS
|
|
||||||
|
|
||||||
`cibuildwheel` on Mac installs the distributions from Python.org system-wide during its operation. This is necessary, but it can cause some confusing errors after cibuildwheel has finished.
|
|
||||||
|
|
||||||
Consider the build script:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
python3 -m pip install twine cibuildwheel
|
|
||||||
python3 -m cibuildwheel --output-dir wheelhouse
|
|
||||||
python3 -m twine upload wheelhouse/*.whl
|
|
||||||
# error: no module named 'twine'
|
|
||||||
```
|
|
||||||
|
|
||||||
This doesn't work because while `cibuildwheel` was running, it installed a few new versions of 'python3', so the `python3` run on line 3 isn't the same as the `python3` that ran on line 1.
|
|
||||||
|
|
||||||
Solutions to this vary, but the simplest is to install tools immediately before they're used:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
python3 -m pip install cibuildwheel
|
|
||||||
python3 -m cibuildwheel --output-dir wheelhouse
|
|
||||||
python3 -m pip install twine
|
|
||||||
python3 -m twine upload wheelhouse/*.whl
|
|
||||||
```
|
|
||||||
|
|
||||||
### 'ImportError: DLL load failed: The specific module could not be found' error on Windows
|
|
||||||
|
|
||||||
Visual Studio and MSVC link the compiled binary wheels to the Microsoft Visual C++ Runtime. Normally, these are included with Python, but when compiling with a newer version of Visual Studio, it is possible users will run into problems on systems that do not have these runtime libraries installed. The solution is to ask users to download the corresponding Visual C++ Redistributable from the [Microsoft website](https://support.microsoft.com/en-us/help/2977003/the-latest-supported-visual-c-downloads) and install it. Since a Python installation normally includes these VC++ Redistributable files for [the version of the MSVC compiler used to compile Python](https://wiki.python.org/moin/WindowsCompilers), this is typically only a problem when compiling a Python C extension with a newer compiler.
|
|
||||||
|
|
||||||
Additionally, Visual Studio 2019 started linking to an even newer DLL, `VCRUNTIME140_1.dll`, besides the `VCRUNTIME140.dll` that is included with recent Python versions (starting from Python 3.5; see [here](https://wiki.python.org/moin/WindowsCompilers) for more details on the corresponding Visual Studio & MSVC versions used to compile the different Python versions). To avoid this extra dependency on `VCRUNTIME140_1.dll`, the [`/d2FH4-` flag](https://devblogs.microsoft.com/cppblog/making-cpp-exception-handling-smaller-x64/) can be added to the MSVC invocations (check out [this issue](https://github.com/pypa/cibuildwheel/issues/423) for details and references).
|
|
||||||
|
|
||||||
To add the `/d2FH4-` flag to a standard `setup.py` using `setuptools`, the `extra_compile_args` option can be used:
|
|
||||||
|
|
||||||
```python
|
|
||||||
ext_modules=[
|
|
||||||
Extension(
|
|
||||||
'c_module',
|
|
||||||
sources=['extension.c'],
|
|
||||||
extra_compile_args=['/d2FH4-'] if sys.platform == 'win32' else []
|
|
||||||
)
|
|
||||||
],
|
|
||||||
```
|
|
||||||
|
|
||||||
To investigate the dependencies of a C extension (i.e., the `.pyd` file, a DLL in disguise) on Windows, [Dependency Walker](http://www.dependencywalker.com/) is a great tool.
|
|
||||||
|
|
||||||
|
|
||||||
### Automatic updates {: #automatic-updates}
|
### Automatic updates {: #automatic-updates}
|
||||||
|
|
||||||
Selecting a moving target (like the latest release) is generally a bad idea in CI. If something breaks, you can't tell whether it was your code or an upstream update that caused the breakage, and in a worse-case scenario, it could occur during a release.
|
Selecting a moving target (like the latest release) is generally a bad idea in CI. If something breaks, you can't tell whether it was your code or an upstream update that caused the breakage, and in a worse-case scenario, it could occur during a release.
|
||||||
@@ -210,7 +127,7 @@ There are two suggested methods for keeping cibuildwheel up to date that instead
|
|||||||
If you use GitHub Actions for builds, you can use cibuildwheel as an action:
|
If you use GitHub Actions for builds, you can use cibuildwheel as an action:
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
uses: pypa/cibuildwheel@v2.1.1
|
uses: pypa/cibuildwheel@v2.1.3
|
||||||
```
|
```
|
||||||
|
|
||||||
This is a composite step that just runs cibuildwheel using pipx. You can set command-line options as `with:` parameters, and use `env:` as normal.
|
This is a composite step that just runs cibuildwheel using pipx. You can set command-line options as `with:` parameters, and use `env:` as normal.
|
||||||
@@ -236,7 +153,7 @@ The second option, and the only one that supports other CI systems, is using a `
|
|||||||
|
|
||||||
```bash
|
```bash
|
||||||
# requirements-cibw.txt
|
# requirements-cibw.txt
|
||||||
cibuildwheel==2.1.1
|
cibuildwheel==2.1.3
|
||||||
```
|
```
|
||||||
|
|
||||||
Then your install step would have `python -m pip install -r requirements-cibw.txt` in it. Your `.github/dependabot.yml` file could look like this:
|
Then your install step would have `python -m pip install -r requirements-cibw.txt` in it. Your `.github/dependabot.yml` file could look like this:
|
||||||
@@ -251,3 +168,159 @@ updates:
|
|||||||
```
|
```
|
||||||
|
|
||||||
This will also try to update other pins in all requirement files, so be sure you want to do that. The only control you have over the files used is via the directory option.
|
This will also try to update other pins in all requirement files, so be sure you want to do that. The only control you have over the files used is via the directory option.
|
||||||
|
|
||||||
|
|
||||||
|
### Alternatives to cibuildwheel options {: #cibw-options-alternatives}
|
||||||
|
|
||||||
|
cibuildwheel provides lots of opportunities to configure the build
|
||||||
|
environment. However, you might consider adding this build configuration into
|
||||||
|
the package itself - in general, this is preferred, because users of your
|
||||||
|
package 'sdist' will also benefit.
|
||||||
|
|
||||||
|
#### Missing build dependencies {: #cibw-options-alternatives-deps}
|
||||||
|
|
||||||
|
If your build needs Python dependencies, rather than using CIBW_BEFORE_BUILD, it's best to add these to the
|
||||||
|
[`build-system.requires`](https://www.python.org/dev/peps/pep-0518/#build-system-table)
|
||||||
|
section of your pyproject.toml. For example, if your project requires Cython
|
||||||
|
to build, your pyproject.toml might include a section like this:
|
||||||
|
|
||||||
|
```toml
|
||||||
|
[build-system]
|
||||||
|
requires = [
|
||||||
|
"setuptools>=42",
|
||||||
|
"wheel",
|
||||||
|
"Cython",
|
||||||
|
]
|
||||||
|
|
||||||
|
build-backend = "setuptools.build_meta"
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Actions you need to perform before building
|
||||||
|
|
||||||
|
You might need to run some other commands before building, like running a
|
||||||
|
script that performs codegen or downloading some data that's not stored in
|
||||||
|
your source tree.
|
||||||
|
|
||||||
|
Rather than using CIBW_BEFORE_ALL or CIBW_BEFORE_BUILD, you could incorporate
|
||||||
|
these steps into your package's build process. For example, if you're using
|
||||||
|
setuptools, you can add steps to your package's `setup.py` using a structure
|
||||||
|
like this:
|
||||||
|
|
||||||
|
```python
|
||||||
|
import subprocess
|
||||||
|
import setuptools
|
||||||
|
import setuptools.command.build_py
|
||||||
|
|
||||||
|
|
||||||
|
class BuildPyCommand(setuptools.command.build_py.build_py):
|
||||||
|
"""Custom build command."""
|
||||||
|
|
||||||
|
def run(self):
|
||||||
|
# your custom build steps here
|
||||||
|
# e.g.
|
||||||
|
# subprocess.run(['python', 'scripts/my_custom_script.py'], check=True)
|
||||||
|
setuptools.command.build_py.build_py.run(self)
|
||||||
|
|
||||||
|
|
||||||
|
setuptools.setup(
|
||||||
|
cmdclass={
|
||||||
|
'build_py': BuildPyCommand,
|
||||||
|
},
|
||||||
|
# Usual setup() args.
|
||||||
|
# ...
|
||||||
|
)
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Compiler flags
|
||||||
|
|
||||||
|
Your build might need some compiler flags to be set through environment variables.
|
||||||
|
Consider incorporating these into your package, for example, in `setup.py` using [`extra_compile_args` or
|
||||||
|
`extra_link_args`](https://docs.python.org/3/distutils/setupscript.html#other-options).
|
||||||
|
|
||||||
|
### Python 2.7 / PyPy2 wheels
|
||||||
|
|
||||||
|
See the [cibuildwheel version 1 docs](https://cibuildwheel.readthedocs.io/en/1.x/) for information about building Python 2.7 or PyPy2 wheels. There are lots of tricks and workaround there that are no longer required for Python 3 in cibuildwheel 2.
|
||||||
|
|
||||||
|
## Troubleshooting
|
||||||
|
|
||||||
|
If your wheel didn't compile, you might have a mistake in your config.
|
||||||
|
|
||||||
|
To quickly test your config without doing a git push and waiting for your code to build on CI, you can [test the Linux build in a local Docker container](setup.md#local).
|
||||||
|
|
||||||
|
### Missing dependencies
|
||||||
|
|
||||||
|
You might need to install something on the build machine. You can do this with apt/yum, brew or choco, using the [`CIBW_BEFORE_ALL`](options.md#before-all) option. Or, for a Python dependency, consider [adding it to pyproject.toml](#cibw-options-alternatives-deps).
|
||||||
|
|
||||||
|
### macOS: ModuleNotFoundError
|
||||||
|
|
||||||
|
Calling cibuildwheel from a python3 script and getting a `ModuleNotFoundError`? Due to a (fixed) [bug](https://bugs.python.org/issue22490) in CPython, you'll need to [unset the `__PYVENV_LAUNCHER__` variable](https://github.com/pypa/cibuildwheel/issues/133#issuecomment-478288597) before activating a venv.
|
||||||
|
|
||||||
|
### macOS: 'No module named XYZ' errors after running cibuildwheel
|
||||||
|
|
||||||
|
`cibuildwheel` on Mac installs the distributions from Python.org system-wide during its operation. This is necessary, but it can cause some confusing errors after cibuildwheel has finished.
|
||||||
|
|
||||||
|
Consider the build script:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
python3 -m pip install twine cibuildwheel
|
||||||
|
python3 -m cibuildwheel --output-dir wheelhouse
|
||||||
|
python3 -m twine upload wheelhouse/*.whl
|
||||||
|
# error: no module named 'twine'
|
||||||
|
```
|
||||||
|
|
||||||
|
This doesn't work because while `cibuildwheel` was running, it installed a few new versions of 'python3', so the `python3` run on line 3 isn't the same as the `python3` that ran on line 1.
|
||||||
|
|
||||||
|
Solutions to this vary, but the simplest is to install tools immediately before they're used:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
python3 -m pip install cibuildwheel
|
||||||
|
python3 -m cibuildwheel --output-dir wheelhouse
|
||||||
|
python3 -m pip install twine
|
||||||
|
python3 -m twine upload wheelhouse/*.whl
|
||||||
|
```
|
||||||
|
|
||||||
|
### macOS: Passing DYLD_LIBRARY_PATH to delocate
|
||||||
|
|
||||||
|
macOS has built-in [System Integrity protections](https://developer.apple.com/library/archive/documentation/Security/Conceptual/System_Integrity_Protection_Guide/RuntimeProtections/RuntimeProtections.html) which limits the use of `DYLD_LIBRARY_PATH` and `LD_LIBRARY_PATH` so that it does not automatically pass to children processes. This means if you set `DYLD_LIBRARY_PATH` before running cibuildwheel, or even set it in `CIBW_ENVIRONMENT`, it will be stripped out of the environment before delocate is called.
|
||||||
|
|
||||||
|
To work around this, use a different environment variable such as `REPAIR_LIBRARY_PATH` to store the library path, and set `DYLD_LIBRARY_PATH` in [`CIBW_REPAIR_WHEEL_COMMAND_MACOS`](https://cibuildwheel.readthedocs.io/en/stable/options/#repair-wheel-command), like this:
|
||||||
|
|
||||||
|
!!! tab examples "Environment variables"
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
CIBW_REPAIR_WHEEL_COMMAND_MACOS: >
|
||||||
|
DYLD_LIBRARY_PATH=$REPAIR_LIBRARY_PATH delocate-listdeps {wheel} &&
|
||||||
|
DYLD_LIBRARY_PATH=$REPAIR_LIBRARY_PATH delocate-wheel --require-archs {delocate_archs} -w {dest_dir} {wheel}
|
||||||
|
```
|
||||||
|
|
||||||
|
!!! tab examples "pyproject.toml"
|
||||||
|
|
||||||
|
```toml
|
||||||
|
[tool.cibuildwheel.macos]
|
||||||
|
repair-wheel-command = [
|
||||||
|
"DYLD_LIBRARY_PATH=$REPAIR_LIBRARY_PATH delocate-listdeps {wheel}",
|
||||||
|
"DYLD_LIBRARY_PATH=$REPAIR_LIBRARY_PATH delocate-wheel --require-archs {delocate_archs} -w {dest_dir} {wheel}"
|
||||||
|
]
|
||||||
|
```
|
||||||
|
|
||||||
|
See [#816](https://github.com/pypa/cibuildwheel/issues/816), thanks to @phoerious for reporting.
|
||||||
|
|
||||||
|
### Windows: 'ImportError: DLL load failed: The specific module could not be found'
|
||||||
|
|
||||||
|
Visual Studio and MSVC link the compiled binary wheels to the Microsoft Visual C++ Runtime. Normally, these are included with Python, but when compiling with a newer version of Visual Studio, it is possible users will run into problems on systems that do not have these runtime libraries installed. The solution is to ask users to download the corresponding Visual C++ Redistributable from the [Microsoft website](https://support.microsoft.com/en-us/help/2977003/the-latest-supported-visual-c-downloads) and install it. Since a Python installation normally includes these VC++ Redistributable files for [the version of the MSVC compiler used to compile Python](https://wiki.python.org/moin/WindowsCompilers), this is typically only a problem when compiling a Python C extension with a newer compiler.
|
||||||
|
|
||||||
|
Additionally, Visual Studio 2019 started linking to an even newer DLL, `VCRUNTIME140_1.dll`, besides the `VCRUNTIME140.dll` that is included with recent Python versions (starting from Python 3.5; see [here](https://wiki.python.org/moin/WindowsCompilers) for more details on the corresponding Visual Studio & MSVC versions used to compile the different Python versions). To avoid this extra dependency on `VCRUNTIME140_1.dll`, the [`/d2FH4-` flag](https://devblogs.microsoft.com/cppblog/making-cpp-exception-handling-smaller-x64/) can be added to the MSVC invocations (check out [this issue](https://github.com/pypa/cibuildwheel/issues/423) for details and references).
|
||||||
|
|
||||||
|
To add the `/d2FH4-` flag to a standard `setup.py` using `setuptools`, the `extra_compile_args` option can be used:
|
||||||
|
|
||||||
|
```python
|
||||||
|
ext_modules=[
|
||||||
|
Extension(
|
||||||
|
'c_module',
|
||||||
|
sources=['extension.c'],
|
||||||
|
extra_compile_args=['/d2FH4-'] if sys.platform == 'win32' else []
|
||||||
|
)
|
||||||
|
],
|
||||||
|
```
|
||||||
|
|
||||||
|
To investigate the dependencies of a C extension (i.e., the `.pyd` file, a DLL in disguise) on Windows, [Dependency Walker](http://www.dependencywalker.com/) is a great tool.
|
||||||
|
|||||||
+1
-1
@@ -406,7 +406,7 @@ This option is not available in `pyproject.toml` under
|
|||||||
```
|
```
|
||||||
|
|
||||||
### `CIBW_PRERELEASE_PYTHONS` {: #prerelease-pythons}
|
### `CIBW_PRERELEASE_PYTHONS` {: #prerelease-pythons}
|
||||||
> Enable building with pre-release versions of Python
|
> Enable building with pre-release versions of Python if available
|
||||||
|
|
||||||
During the beta period, when new versions of Python are being tested,
|
During the beta period, when new versions of Python are being tested,
|
||||||
cibuildwheel will often gain early support for beta releases. If you would
|
cibuildwheel will often gain early support for beta releases. If you would
|
||||||
|
|||||||
+85
-9
@@ -2,7 +2,79 @@
|
|||||||
title: 'Setup'
|
title: 'Setup'
|
||||||
---
|
---
|
||||||
|
|
||||||
# GitHub Actions [linux/mac/windows] {: #github-actions}
|
# Run cibuildwheel locally (optional) {: #local}
|
||||||
|
|
||||||
|
Before getting to CI setup, it can be convenient to test cibuildwheel
|
||||||
|
locally to quickly iterate and track down issues. If you've got
|
||||||
|
[Docker](https://www.docker.com/products/docker-desktop) installed on
|
||||||
|
your development machine, you can run a Linux build without even
|
||||||
|
touching CI.
|
||||||
|
|
||||||
|
!!! tip
|
||||||
|
You can run the Linux build on any platform. Even Windows can run
|
||||||
|
Linux containers these days, but there are a few hoops to jump
|
||||||
|
through. Check [this document](https://docs.microsoft.com/en-us/virtualization/windowscontainers/quick-start/quick-start-windows-10-linux)
|
||||||
|
for more info.
|
||||||
|
|
||||||
|
This is convenient as it's quicker to iterate, and because the builds are
|
||||||
|
happening in manylinux Docker containers, they're perfectly reproducible.
|
||||||
|
|
||||||
|
Install cibuildwheel and run a build like this:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
pip install cibuildwheel
|
||||||
|
cibuildwheel --platform linux
|
||||||
|
```
|
||||||
|
|
||||||
|
Or, using [pipx](https://github.com/pypa/pipx):
|
||||||
|
```sh
|
||||||
|
pipx run cibuildwheel --platform linux
|
||||||
|
```
|
||||||
|
|
||||||
|
You should see the builds taking place. You can experiment with options using environment variables or pyproject.toml.
|
||||||
|
|
||||||
|
!!! tab "Environment variables"
|
||||||
|
|
||||||
|
cibuildwheel will read config from the environment. Syntax varies, depending on your shell:
|
||||||
|
|
||||||
|
> POSIX shell (Linux/macOS)
|
||||||
|
|
||||||
|
```sh
|
||||||
|
# run a command to set up the build system
|
||||||
|
export CIBW_BEFORE_ALL='apt install libpng-dev'
|
||||||
|
|
||||||
|
cibuildwheel --platform linux
|
||||||
|
```
|
||||||
|
|
||||||
|
> CMD (Windows)
|
||||||
|
|
||||||
|
```bat
|
||||||
|
set CIBW_BEFORE_ALL='apt install libpng-dev'
|
||||||
|
|
||||||
|
cibuildwheel --platform linux
|
||||||
|
```
|
||||||
|
|
||||||
|
!!! tab "pyproject.toml"
|
||||||
|
|
||||||
|
If you write your options into [`pyproject.toml`](options.md#configuration-file), you can work on your options locally, and they'll be automatically picked up when running in CI.
|
||||||
|
|
||||||
|
> pyproject.toml
|
||||||
|
|
||||||
|
```
|
||||||
|
[tool.cibuildwheel]
|
||||||
|
before-all = "apt install libpng-dev"
|
||||||
|
```
|
||||||
|
|
||||||
|
Then invoke cibuildwheel, like:
|
||||||
|
|
||||||
|
```console
|
||||||
|
cibuildwheel --platform linux
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
# Configure a CI service
|
||||||
|
|
||||||
|
## GitHub Actions [linux/mac/windows] {: #github-actions}
|
||||||
|
|
||||||
To build Linux, Mac, and Windows wheels using GitHub Actions, create a `.github/workflows/build_wheels.yml` file in your repo.
|
To build Linux, Mac, and Windows wheels using GitHub Actions, create a `.github/workflows/build_wheels.yml` file in your repo.
|
||||||
|
|
||||||
@@ -46,7 +118,7 @@ To build Linux, Mac, and Windows wheels using GitHub Actions, create a `.github/
|
|||||||
- uses: actions/checkout@v2
|
- uses: actions/checkout@v2
|
||||||
|
|
||||||
- name: Build wheels
|
- name: Build wheels
|
||||||
run: pipx run cibuildwheel==2.1.1
|
run: pipx run cibuildwheel==2.1.3
|
||||||
|
|
||||||
- uses: actions/upload-artifact@v2
|
- uses: actions/upload-artifact@v2
|
||||||
with:
|
with:
|
||||||
@@ -81,7 +153,7 @@ To build Linux, Mac, and Windows wheels using GitHub Actions, create a `.github/
|
|||||||
- uses: actions/setup-python@v2
|
- uses: actions/setup-python@v2
|
||||||
|
|
||||||
- name: Install cibuildwheel
|
- name: Install cibuildwheel
|
||||||
run: python -m pip install cibuildwheel==2.1.1
|
run: python -m pip install cibuildwheel==2.1.3
|
||||||
|
|
||||||
- name: Build wheels
|
- name: Build wheels
|
||||||
run: python -m cibuildwheel --output-dir wheelhouse
|
run: python -m cibuildwheel --output-dir wheelhouse
|
||||||
@@ -99,7 +171,7 @@ For more info on this file, check out the [docs](https://help.github.com/en/acti
|
|||||||
[`examples/github-deploy.yml`](https://github.com/pypa/cibuildwheel/blob/main/examples/github-deploy.yml) extends this minimal example with a demonstration of how to automatically upload the built wheels to PyPI.
|
[`examples/github-deploy.yml`](https://github.com/pypa/cibuildwheel/blob/main/examples/github-deploy.yml) extends this minimal example with a demonstration of how to automatically upload the built wheels to PyPI.
|
||||||
|
|
||||||
|
|
||||||
# Azure Pipelines [linux/mac/windows] {: #azure-pipelines}
|
## Azure Pipelines [linux/mac/windows] {: #azure-pipelines}
|
||||||
|
|
||||||
To build Linux, Mac, and Windows wheels on Azure Pipelines, create a `azure-pipelines.yml` file in your repo.
|
To build Linux, Mac, and Windows wheels on Azure Pipelines, create a `azure-pipelines.yml` file in your repo.
|
||||||
|
|
||||||
@@ -113,7 +185,7 @@ Commit this file, enable building of your repo on Azure Pipelines, and push.
|
|||||||
|
|
||||||
Wheels will be stored for you and available through the Pipelines interface. For more info on this file, check out the [docs](https://docs.microsoft.com/en-us/azure/devops/pipelines/yaml-schema).
|
Wheels will be stored for you and available through the Pipelines interface. For more info on this file, check out the [docs](https://docs.microsoft.com/en-us/azure/devops/pipelines/yaml-schema).
|
||||||
|
|
||||||
# Travis CI [linux/windows] {: #travis-ci}
|
## Travis CI [linux/windows] {: #travis-ci}
|
||||||
|
|
||||||
To build Linux and Windows wheels on Travis CI, create a `.travis.yml` file in your repo.
|
To build Linux and Windows wheels on Travis CI, create a `.travis.yml` file in your repo.
|
||||||
|
|
||||||
@@ -129,7 +201,7 @@ Then setup a deployment method by following the [Travis CI deployment docs](http
|
|||||||
|
|
||||||
[`examples/travis-ci-deploy.yml`](https://github.com/pypa/cibuildwheel/blob/main/examples/travis-ci-deploy.yml) extends this minimal example with a demonstration of how to automatically upload the built wheels to PyPI.
|
[`examples/travis-ci-deploy.yml`](https://github.com/pypa/cibuildwheel/blob/main/examples/travis-ci-deploy.yml) extends this minimal example with a demonstration of how to automatically upload the built wheels to PyPI.
|
||||||
|
|
||||||
# AppVeyor [linux/mac/windows] {: #appveyor}
|
## AppVeyor [linux/mac/windows] {: #appveyor}
|
||||||
|
|
||||||
To build Linux, Mac, and Windows wheels on AppVeyor, create an `appveyor.yml` file in your repo.
|
To build Linux, Mac, and Windows wheels on AppVeyor, create an `appveyor.yml` file in your repo.
|
||||||
|
|
||||||
@@ -145,7 +217,7 @@ AppVeyor will store the built wheels for you - you can access them from the proj
|
|||||||
|
|
||||||
For more info on this config file, check out the [docs](https://www.appveyor.com/docs/).
|
For more info on this config file, check out the [docs](https://www.appveyor.com/docs/).
|
||||||
|
|
||||||
# CircleCI [linux/mac] {: #circleci}
|
## CircleCI [linux/mac] {: #circleci}
|
||||||
|
|
||||||
To build Linux and Mac wheels on CircleCI, create a `.circleci/config.yml` file in your repo,
|
To build Linux and Mac wheels on CircleCI, create a `.circleci/config.yml` file in your repo,
|
||||||
|
|
||||||
@@ -162,7 +234,7 @@ Commit this file, enable building of your repo on CircleCI, and push.
|
|||||||
|
|
||||||
CircleCI will store the built wheels for you - you can access them from the project console. Check out the CircleCI [docs](https://circleci.com/docs/2.0/configuration-reference/#section=configuration) for more info on this config file.
|
CircleCI will store the built wheels for you - you can access them from the project console. Check out the CircleCI [docs](https://circleci.com/docs/2.0/configuration-reference/#section=configuration) for more info on this config file.
|
||||||
|
|
||||||
# Gitlab CI [linux] {: #gitlab-ci}
|
## Gitlab CI [linux] {: #gitlab-ci}
|
||||||
|
|
||||||
To build Linux wheels on Gitlab CI, create a `.gitlab-ci.yml` file in your repo,
|
To build Linux wheels on Gitlab CI, create a `.gitlab-ci.yml` file in your repo,
|
||||||
|
|
||||||
@@ -178,9 +250,13 @@ Gitlab will store the built wheels for you - you can access them from the Pipeli
|
|||||||
|
|
||||||
> ⚠️ Got an error? Check the [FAQ](faq.md).
|
> ⚠️ Got an error? Check the [FAQ](faq.md).
|
||||||
|
|
||||||
|
# Next steps
|
||||||
|
|
||||||
|
Once you've got the wheel building successfully, you might want to set up [testing](options.md#test-command) or [automatic releases to PyPI](deliver-to-pypi.md#automatic-method).
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
document.addEventListener('DOMContentLoaded', function() {
|
document.addEventListener('DOMContentLoaded', function() {
|
||||||
$('.toctree-l2 a, .rst-content h1').each(function(i, el) {
|
$('a.toctree-l3, .rst-content h2').each(function(i, el) {
|
||||||
var text = $(el).text()
|
var text = $(el).text()
|
||||||
var match = text.match(/(.*) \[([a-z/]+)\]/);
|
var match = text.match(/(.*) \[([a-z/]+)\]/);
|
||||||
|
|
||||||
|
|||||||
+210
-5
@@ -2,11 +2,216 @@
|
|||||||
title: Working examples
|
title: Working examples
|
||||||
---
|
---
|
||||||
|
|
||||||
{%
|
<!-- START bin/projects.py -->
|
||||||
include-markdown "../README.md"
|
|
||||||
start="<!--working-examples-start-->"
|
<!-- this section is generated by bin/projects.py. Don't edit it directly, instead, edit docs/data/projects.yml -->
|
||||||
end="<!--working-examples-end-->"
|
|
||||||
%}
|
| Name | CI | OS | Notes |
|
||||||
|
|-----------------------------------|----|----|:------|
|
||||||
|
| [scikit-learn][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | The machine learning library. A complex but clean config using many of cibuildwheel's features to build a large project with Cython and C++ extensions. |
|
||||||
|
| [Matplotlib][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | The venerable Matplotlib, a Python library with C++ portions |
|
||||||
|
| [MyPy][] | ![github icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | MyPyC, the compiled component of MyPy. |
|
||||||
|
| [psutil][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Cross-platform lib for process and system monitoring in Python |
|
||||||
|
| [scikit-image][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Image processing library. Uses cibuildwheel to build and test a project that uses Cython with platform-native code. |
|
||||||
|
| [twisted-iocpsupport][] | ![github icon][] | ![windows icon][] | A submodule of Twisted that hooks into native C APIs using Cython. |
|
||||||
|
| [cmake][] | ![github icon][] ![travisci icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | Multitagged binary builds for all supported platforms, using cibw 2 config configuration. |
|
||||||
|
| [websockets][] | ![travisci icon][] | ![apple icon][] ![linux icon][] | Library for building WebSocket servers and clients. Mostly written in Python, with a small C 'speedups' extension module. |
|
||||||
|
| [pyzmq][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Python bindings for zeromq, the networking library. Uses Cython and CFFI. |
|
||||||
|
| [aiortc][] | ![github icon][] | ![apple icon][] ![linux icon][] | WebRTC and ORTC implementation for Python using asyncio. |
|
||||||
|
| [River][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | 🌊 Online machine learning in Python |
|
||||||
|
| [coverage.py][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | The coverage tool for Python |
|
||||||
|
| [numexpr][] | ![github icon][] ![travisci icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Fast numerical array expression evaluator for Python, NumPy, PyTables, pandas, bcolz and more |
|
||||||
|
| [Dependency Injector][] | ![travisci icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Dependency injection framework for Python, uses Windows TravisCI |
|
||||||
|
| [h5py][] | ![azurepipelines icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | HDF5 for Python -- The h5py package is a Pythonic interface to the HDF5 binary data format. |
|
||||||
|
| [PyAV][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Pythonic bindings for FFmpeg's libraries. |
|
||||||
|
| [PyTables][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | A Python package to manage extremely large amounts of data |
|
||||||
|
| [ruptures][] | ![github icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | Extensive Cython + NumPy [pyproject.toml](https://github.com/deepcharles/ruptures/blob/master/pyproject.toml) example. |
|
||||||
|
| [pikepdf][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | A Python library for reading and writing PDF, powered by qpdf |
|
||||||
|
| [aioquic][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | QUIC and HTTP/3 implementation in Python |
|
||||||
|
| [google neuroglancer][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | WebGL-based viewer for volumetric data |
|
||||||
|
| [DeepForest][] | ![github icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | An Efficient, Scalable and Optimized Python Framework for Deep Forest (2021.2.1) |
|
||||||
|
| [AutoPy][] | ![travisci icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Includes a Windows Travis build. |
|
||||||
|
| [Parselmouth][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | A Python interface to the Praat software package, using pybind11, C++17 and CMake, with the core Praat static library built only once and shared between wheels. |
|
||||||
|
| [H3-py][] | ![github icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | Python bindings for H3, a hierarchical hexagonal geospatial indexing system |
|
||||||
|
| [python-rapidjson][] | ![travisci icon][] ![gitlab icon][] ![appveyor icon][] | ![windows icon][] ![linux icon][] | Python wrapper around rapidjson |
|
||||||
|
| [markupsafe][] | ![github icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | Safely add untrusted strings to HTML/XML markup. |
|
||||||
|
| [Rtree][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Rtree: spatial index for Python GIS ¶ |
|
||||||
|
| [python-snappy][] | ![github icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | Python bindings for the snappy google library |
|
||||||
|
| [pybind11 cmake_example][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Example pybind11 module built with a CMake-based build system |
|
||||||
|
| [KDEpy][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Kernel Density Estimation in Python |
|
||||||
|
| [tgcalls][] | ![github icon][] | ![apple icon][] ![windows icon][] | Python `pybind11` binding to Telegram's WebRTC library with third party dependencies like `OpenSSL`, `MozJPEG`, `FFmpeg`, etc. |
|
||||||
|
| [dd-trace-py][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Uses custom alternate arch emulation on GitHub |
|
||||||
|
| [pybind11 python_example][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Example pybind11 module built with a Python-based build system |
|
||||||
|
| [cyvcf2][] | ![github icon][] | ![apple icon][] ![linux icon][] | cython + htslib == fast VCF and BCF processing |
|
||||||
|
| [sourmash][] | ![github icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | Quickly search, compare, and analyze genomic and metagenomic data sets. |
|
||||||
|
| [time-machine][] | ![github icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | Time mocking library using only the CPython C API. |
|
||||||
|
| [matrixprofile][] | ![travisci icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | A Python 3 library making time series data mining tasks, utilizing matrix profile algorithms, accessible to everyone. |
|
||||||
|
| [CTranslate2][] | ![github icon][] | ![apple icon][] ![linux icon][] | Includes libraries from the [Intel oneAPI toolkit](https://software.intel.com/content/www/us/en/develop/tools/oneapi/base-toolkit.html). The Linux wheels also include CUDA libraries for GPU execution. |
|
||||||
|
| [iminuit][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Jupyter-friendly Python interface for C++ MINUIT2 |
|
||||||
|
| [jq.py][] | ![travisci icon][] | ![apple icon][] ![linux icon][] | Python bindings for jq |
|
||||||
|
| [Tokenizer][] | ![github icon][] ![travisci icon][] | ![apple icon][] ![linux icon][] | Fast and customizable text tokenization library with BPE and SentencePiece support |
|
||||||
|
| [PyGLM][] | ![github icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | Fast OpenGL Mathematics (GLM) for Python |
|
||||||
|
| [bx-python][] | ![travisci icon][] | ![apple icon][] ![linux icon][] | A library that includes Cython extensions. |
|
||||||
|
| [boost-histogram][] | ![github icon][] ![travisci icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Supports full range of wheels, including PyPy and alternate archs. |
|
||||||
|
| [iDynTree][] | ![github icon][] | ![linux icon][] | Uses manylinux_2_24 |
|
||||||
|
| [pybase64][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Fast Base64 encoding/decoding in Python |
|
||||||
|
| [TgCrypto][] | ![travisci icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Includes a Windows Travis build. |
|
||||||
|
| [etebase-py][] | ![travisci icon][] | ![linux icon][] | Python bindings to a Rust library using `setuptools-rust`, and `sccache` for improved speed. |
|
||||||
|
| [fathon][] | ![travisci icon][] | ![apple icon][] ![linux icon][] | python package for DFA (Detrended Fluctuation Analysis) and related algorithms |
|
||||||
|
| [pyjet][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | The interface between FastJet and NumPy |
|
||||||
|
| [numpythia][] | ![github icon][] | ![apple icon][] ![linux icon][] | The interface between PYTHIA and NumPy |
|
||||||
|
| [polaroid][] | ![github icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | Full range of wheels for setuptools rust, with auto release and PyPI deploy. |
|
||||||
|
| [Imagecodecs (fork)][] | ![azurepipelines icon][] | ![apple icon][] ![linux icon][] | Over 20 external dependencies in compiled libraries, custom docker image, `libomp`, `openblas` and `install_name_tool` for macOS. |
|
||||||
|
| [ninja][] | ![github icon][] ![travisci icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | Multitagged binary builds for all supported platforms, using cibw 2 config configuration. |
|
||||||
|
| [pybind11 scikit_build_example][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | An example combining scikit-build and pybind11 |
|
||||||
|
| [GSD][] | ![github icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | Cython and NumPy project with 64-bit wheels. |
|
||||||
|
| [pyinstrument_cext][] | ![travisci icon][] ![appveyor icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | A simple C extension, without external dependencies |
|
||||||
|
| [xmlstarlet][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Python 3.6+ CFFI bindings with true MSVC build. |
|
||||||
|
| [CorrectionLib][] | ![github icon][] | ![apple icon][] ![linux icon][] | Structured JSON powered correction library for HEP, designed for the CMS experiment at CERN. |
|
||||||
|
| [SiPM][] | ![github icon][] | ![apple icon][] ![linux icon][] | High performance library for SiPM detectors simulation using C++17, OpenMP and AVX2 intrinsics. |
|
||||||
|
| [pillow-heif][] | ![github icon][] | ![apple icon][] ![linux icon][] | Python CFFI binding to libheif library with third party dependencies like `libde265`, `x265`, `libaom` with test & publishing on PyPi. |
|
||||||
|
|
||||||
|
[scikit-learn]: https://github.com/scikit-learn/scikit-learn
|
||||||
|
[Matplotlib]: https://github.com/matplotlib/matplotlib
|
||||||
|
[MyPy]: https://github.com/mypyc/mypy_mypyc-wheels
|
||||||
|
[psutil]: https://github.com/giampaolo/psutil
|
||||||
|
[scikit-image]: https://github.com/scikit-image/scikit-image
|
||||||
|
[twisted-iocpsupport]: https://github.com/twisted/twisted-iocpsupport
|
||||||
|
[cmake]: https://github.com/scikit-build/cmake-python-distributions
|
||||||
|
[websockets]: https://github.com/aaugustin/websockets
|
||||||
|
[pyzmq]: https://github.com/zeromq/pyzmq
|
||||||
|
[aiortc]: https://github.com/aiortc/aiortc
|
||||||
|
[River]: https://github.com/online-ml/river
|
||||||
|
[coverage.py]: https://github.com/nedbat/coveragepy
|
||||||
|
[numexpr]: https://github.com/pydata/numexpr
|
||||||
|
[Dependency Injector]: https://github.com/ets-labs/python-dependency-injector
|
||||||
|
[h5py]: https://github.com/h5py/h5py
|
||||||
|
[PyAV]: https://github.com/PyAV-Org/PyAV
|
||||||
|
[PyTables]: https://github.com/PyTables/PyTables
|
||||||
|
[ruptures]: https://github.com/deepcharles/ruptures
|
||||||
|
[pikepdf]: https://github.com/pikepdf/pikepdf
|
||||||
|
[aioquic]: https://github.com/aiortc/aioquic
|
||||||
|
[google neuroglancer]: https://github.com/google/neuroglancer
|
||||||
|
[DeepForest]: https://github.com/LAMDA-NJU/Deep-Forest
|
||||||
|
[AutoPy]: https://github.com/autopilot-rs/autopy
|
||||||
|
[Parselmouth]: https://github.com/YannickJadoul/Parselmouth
|
||||||
|
[H3-py]: https://github.com/uber/h3-py
|
||||||
|
[python-rapidjson]: https://github.com/python-rapidjson/python-rapidjson
|
||||||
|
[markupsafe]: https://github.com/pallets/markupsafe
|
||||||
|
[Rtree]: https://github.com/Toblerity/rtree
|
||||||
|
[python-snappy]: https://github.com/andrix/python-snappy
|
||||||
|
[pybind11 cmake_example]: https://github.com/pybind/cmake_example
|
||||||
|
[KDEpy]: https://github.com/tommyod/KDEpy
|
||||||
|
[tgcalls]: https://github.com/MarshalX/tgcalls
|
||||||
|
[dd-trace-py]: https://github.com/DataDog/dd-trace-py
|
||||||
|
[pybind11 python_example]: https://github.com/pybind/python_example
|
||||||
|
[cyvcf2]: https://github.com/brentp/cyvcf2
|
||||||
|
[sourmash]: https://github.com/dib-lab/sourmash
|
||||||
|
[time-machine]: https://github.com/adamchainz/time-machine
|
||||||
|
[matrixprofile]: https://github.com/matrix-profile-foundation/matrixprofile
|
||||||
|
[CTranslate2]: https://github.com/OpenNMT/CTranslate2
|
||||||
|
[iminuit]: https://github.com/scikit-hep/iminuit
|
||||||
|
[jq.py]: https://github.com/mwilliamson/jq.py
|
||||||
|
[Tokenizer]: https://github.com/OpenNMT/Tokenizer
|
||||||
|
[PyGLM]: https://github.com/Zuzu-Typ/PyGLM
|
||||||
|
[bx-python]: https://github.com/bxlab/bx-python
|
||||||
|
[boost-histogram]: https://github.com/scikit-hep/boost-histogram
|
||||||
|
[iDynTree]: https://github.com/robotology/idyntree
|
||||||
|
[pybase64]: https://github.com/mayeut/pybase64
|
||||||
|
[TgCrypto]: https://github.com/pyrogram/tgcrypto
|
||||||
|
[etebase-py]: https://github.com/etesync/etebase-py
|
||||||
|
[fathon]: https://github.com/stfbnc/fathon
|
||||||
|
[pyjet]: https://github.com/scikit-hep/pyjet
|
||||||
|
[numpythia]: https://github.com/scikit-hep/numpythia
|
||||||
|
[polaroid]: https://github.com/daggy1234/polaroid
|
||||||
|
[Imagecodecs (fork)]: https://github.com/czaki/imagecodecs_build
|
||||||
|
[ninja]: https://github.com/scikit-build/ninja-python-distributions
|
||||||
|
[pybind11 scikit_build_example]: https://github.com/pybind/scikit_build_example
|
||||||
|
[GSD]: https://github.com/glotzerlab/gsd
|
||||||
|
[pyinstrument_cext]: https://github.com/joerick/pyinstrument_cext
|
||||||
|
[xmlstarlet]: https://github.com/dimitern/xmlstarlet
|
||||||
|
[CorrectionLib]: https://github.com/cms-nanoAOD/correctionlib
|
||||||
|
[SiPM]: https://github.com/EdoPro98/SimSiPM
|
||||||
|
[pillow-heif]: https://github.com/bigcat88/pillow_heif
|
||||||
|
|
||||||
|
[appveyor icon]: data/readme_icons/appveyor.svg
|
||||||
|
[github icon]: data/readme_icons/github.svg
|
||||||
|
[azurepipelines icon]: data/readme_icons/azurepipelines.svg
|
||||||
|
[circleci icon]: data/readme_icons/circleci.svg
|
||||||
|
[gitlab icon]: data/readme_icons/gitlab.svg
|
||||||
|
[travisci icon]: data/readme_icons/travisci.svg
|
||||||
|
[windows icon]: data/readme_icons/windows.svg
|
||||||
|
[apple icon]: data/readme_icons/apple.svg
|
||||||
|
[linux icon]: data/readme_icons/linux.svg
|
||||||
|
|
||||||
|
<!-- scikit-learn: 47447, last pushed 0 days ago -->
|
||||||
|
<!-- Matplotlib: 14298, last pushed 0 days ago -->
|
||||||
|
<!-- MyPy: 11423, last pushed 0 days ago -->
|
||||||
|
<!-- psutil: 7713, last pushed 0 days ago -->
|
||||||
|
<!-- scikit-image: 4542, last pushed 0 days ago -->
|
||||||
|
<!-- twisted-iocpsupport: 4379, last pushed 0 days ago -->
|
||||||
|
<!-- cmake: 4182, last pushed 0 days ago -->
|
||||||
|
<!-- websockets: 3592, last pushed 1 days ago -->
|
||||||
|
<!-- pyzmq: 2921, last pushed 1 days ago -->
|
||||||
|
<!-- aiortc: 2601, last pushed 0 days ago -->
|
||||||
|
<!-- River: 2571, last pushed 0 days ago -->
|
||||||
|
<!-- coverage.py: 1742, last pushed 0 days ago -->
|
||||||
|
<!-- numexpr: 1654, last pushed 10 days ago -->
|
||||||
|
<!-- Dependency Injector: 1602, last pushed 0 days ago -->
|
||||||
|
<!-- h5py: 1592, last pushed 1 days ago -->
|
||||||
|
<!-- PyAV: 1356, last pushed 9 days ago -->
|
||||||
|
<!-- PyTables: 1065, last pushed 9 days ago -->
|
||||||
|
<!-- ruptures: 804, last pushed 0 days ago -->
|
||||||
|
<!-- pikepdf: 759, last pushed 0 days ago -->
|
||||||
|
<!-- aioquic: 748, last pushed 8 days ago -->
|
||||||
|
<!-- google neuroglancer: 689, last pushed 1 days ago -->
|
||||||
|
<!-- DeepForest: 661, last pushed 74 days ago -->
|
||||||
|
<!-- AutoPy: 577, last pushed 110 days ago -->
|
||||||
|
<!-- Parselmouth: 561, last pushed 1 days ago -->
|
||||||
|
<!-- H3-py: 434, last pushed 28 days ago -->
|
||||||
|
<!-- python-rapidjson: 429, last pushed 102 days ago -->
|
||||||
|
<!-- markupsafe: 426, last pushed 1 days ago -->
|
||||||
|
<!-- Rtree: 421, last pushed 199 days ago -->
|
||||||
|
<!-- python-snappy: 407, last pushed 76 days ago -->
|
||||||
|
<!-- pybind11 cmake_example: 315, last pushed 21 days ago -->
|
||||||
|
<!-- KDEpy: 302, last pushed 124 days ago -->
|
||||||
|
<!-- tgcalls: 273, last pushed 15 days ago -->
|
||||||
|
<!-- dd-trace-py: 272, last pushed 0 days ago -->
|
||||||
|
<!-- pybind11 python_example: 271, last pushed 20 days ago -->
|
||||||
|
<!-- cyvcf2: 269, last pushed 35 days ago -->
|
||||||
|
<!-- sourmash: 262, last pushed 2 days ago -->
|
||||||
|
<!-- time-machine: 213, last pushed 0 days ago -->
|
||||||
|
<!-- matrixprofile: 201, last pushed 102 days ago -->
|
||||||
|
<!-- CTranslate2: 189, last pushed 1 days ago -->
|
||||||
|
<!-- iminuit: 186, last pushed 0 days ago -->
|
||||||
|
<!-- jq.py: 175, last pushed 64 days ago -->
|
||||||
|
<!-- Tokenizer: 156, last pushed 5 days ago -->
|
||||||
|
<!-- PyGLM: 119, last pushed 6 days ago -->
|
||||||
|
<!-- bx-python: 106, last pushed 88 days ago -->
|
||||||
|
<!-- boost-histogram: 92, last pushed 0 days ago -->
|
||||||
|
<!-- iDynTree: 88, last pushed 2 days ago -->
|
||||||
|
<!-- pybase64: 73, last pushed 0 days ago -->
|
||||||
|
<!-- TgCrypto: 73, last pushed 2 days ago -->
|
||||||
|
<!-- etebase-py: 52, last pushed 274 days ago -->
|
||||||
|
<!-- fathon: 38, last pushed 125 days ago -->
|
||||||
|
<!-- pyjet: 31, last pushed 20 days ago -->
|
||||||
|
<!-- numpythia: 31, last pushed 20 days ago -->
|
||||||
|
<!-- polaroid: 24, last pushed 3 days ago -->
|
||||||
|
<!-- Imagecodecs (fork): 21, last pushed 40 days ago -->
|
||||||
|
<!-- ninja: 19, last pushed 1 days ago -->
|
||||||
|
<!-- pybind11 scikit_build_example: 17, last pushed 20 days ago -->
|
||||||
|
<!-- GSD: 17, last pushed 33 days ago -->
|
||||||
|
<!-- pyinstrument_cext: 10, last pushed 49 days ago -->
|
||||||
|
<!-- xmlstarlet: 7, last pushed 75 days ago -->
|
||||||
|
<!-- CorrectionLib: 7, last pushed 20 days ago -->
|
||||||
|
<!-- SiPM: 4, last pushed 9 days ago -->
|
||||||
|
<!-- pillow-heif: 2, last pushed 19 days ago -->
|
||||||
|
|
||||||
|
<!-- END bin/projects.py -->
|
||||||
|
|
||||||
|
> Add your repo here! Let us know on [GitHub Discussions](https://github.com/pypa/cibuildwheel/discussions/485), or send a PR, adding your information to `docs/data/projects.yml`.
|
||||||
|
>
|
||||||
|
> <sup>I'd like to include notes here to indicate why an example might be interesting to cibuildwheel users - the styles/technologies/techniques used in each. Please include that in future additions!</sup>
|
||||||
|
|
||||||
<style>
|
<style>
|
||||||
.wy-nav-content {
|
.wy-nav-content {
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ stack: python 3.7
|
|||||||
init:
|
init:
|
||||||
- cmd: set PATH=C:\Python37;C:\Python37\Scripts;%PATH%
|
- cmd: set PATH=C:\Python37;C:\Python37\Scripts;%PATH%
|
||||||
|
|
||||||
install: python -m pip install cibuildwheel==2.1.1
|
install: python -m pip install cibuildwheel==2.1.3
|
||||||
|
|
||||||
build_script: python -m cibuildwheel --output-dir wheelhouse
|
build_script: python -m cibuildwheel --output-dir wheelhouse
|
||||||
|
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ jobs:
|
|||||||
- bash: |
|
- bash: |
|
||||||
set -o errexit
|
set -o errexit
|
||||||
python3 -m pip install --upgrade pip
|
python3 -m pip install --upgrade pip
|
||||||
pip3 install cibuildwheel==2.1.1
|
pip3 install cibuildwheel==2.1.3
|
||||||
displayName: Install dependencies
|
displayName: Install dependencies
|
||||||
- bash: cibuildwheel --output-dir wheelhouse .
|
- bash: cibuildwheel --output-dir wheelhouse .
|
||||||
displayName: Build wheels
|
displayName: Build wheels
|
||||||
@@ -20,7 +20,7 @@ jobs:
|
|||||||
- bash: |
|
- bash: |
|
||||||
set -o errexit
|
set -o errexit
|
||||||
python3 -m pip install --upgrade pip
|
python3 -m pip install --upgrade pip
|
||||||
python3 -m pip install cibuildwheel==2.1.1
|
python3 -m pip install cibuildwheel==2.1.3
|
||||||
displayName: Install dependencies
|
displayName: Install dependencies
|
||||||
- bash: cibuildwheel --output-dir wheelhouse .
|
- bash: cibuildwheel --output-dir wheelhouse .
|
||||||
displayName: Build wheels
|
displayName: Build wheels
|
||||||
@@ -34,7 +34,7 @@ jobs:
|
|||||||
- bash: |
|
- bash: |
|
||||||
set -o errexit
|
set -o errexit
|
||||||
python -m pip install --upgrade pip
|
python -m pip install --upgrade pip
|
||||||
pip install cibuildwheel==2.1.1
|
pip install cibuildwheel==2.1.3
|
||||||
displayName: Install dependencies
|
displayName: Install dependencies
|
||||||
- bash: cibuildwheel --output-dir wheelhouse .
|
- bash: cibuildwheel --output-dir wheelhouse .
|
||||||
displayName: Build wheels
|
displayName: Build wheels
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ jobs:
|
|||||||
- run:
|
- run:
|
||||||
name: Build the Linux wheels.
|
name: Build the Linux wheels.
|
||||||
command: |
|
command: |
|
||||||
pip3 install --user cibuildwheel==2.1.1
|
pip3 install --user cibuildwheel==2.1.3
|
||||||
cibuildwheel --output-dir wheelhouse
|
cibuildwheel --output-dir wheelhouse
|
||||||
- store_artifacts:
|
- store_artifacts:
|
||||||
path: wheelhouse/
|
path: wheelhouse/
|
||||||
@@ -25,7 +25,7 @@ jobs:
|
|||||||
- run:
|
- run:
|
||||||
name: Build the OS X wheels.
|
name: Build the OS X wheels.
|
||||||
command: |
|
command: |
|
||||||
pip3 install cibuildwheel==2.1.1
|
pip3 install cibuildwheel==2.1.3
|
||||||
cibuildwheel --output-dir wheelhouse
|
cibuildwheel --output-dir wheelhouse
|
||||||
- store_artifacts:
|
- store_artifacts:
|
||||||
path: wheelhouse/
|
path: wheelhouse/
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ jobs:
|
|||||||
- uses: actions/checkout@v2
|
- uses: actions/checkout@v2
|
||||||
|
|
||||||
- name: Build wheels
|
- name: Build wheels
|
||||||
uses: pypa/cibuildwheel@v2.1.1
|
uses: pypa/cibuildwheel@v2.1.3
|
||||||
env:
|
env:
|
||||||
CIBW_ARCHS_MACOS: x86_64 universal2
|
CIBW_ARCHS_MACOS: x86_64 universal2
|
||||||
|
|
||||||
|
|||||||
@@ -27,7 +27,7 @@ jobs:
|
|||||||
python-version: '3.8'
|
python-version: '3.8'
|
||||||
|
|
||||||
- name: Build wheels
|
- name: Build wheels
|
||||||
uses: pypa/cibuildwheel@v2.1.1
|
uses: pypa/cibuildwheel@v2.1.3
|
||||||
|
|
||||||
- uses: actions/upload-artifact@v2
|
- uses: actions/upload-artifact@v2
|
||||||
with:
|
with:
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ jobs:
|
|||||||
- uses: actions/checkout@v2
|
- uses: actions/checkout@v2
|
||||||
|
|
||||||
- name: Build wheels
|
- name: Build wheels
|
||||||
uses: pypa/cibuildwheel@v2.1.1
|
uses: pypa/cibuildwheel@v2.1.3
|
||||||
# to supply options, put them in 'env', like:
|
# to supply options, put them in 'env', like:
|
||||||
# env:
|
# env:
|
||||||
# CIBW_SOME_OPTION: value
|
# CIBW_SOME_OPTION: value
|
||||||
|
|||||||
@@ -25,7 +25,7 @@ jobs:
|
|||||||
platforms: all
|
platforms: all
|
||||||
|
|
||||||
- name: Build wheels
|
- name: Build wheels
|
||||||
uses: pypa/cibuildwheel@v2.1.1
|
uses: pypa/cibuildwheel@v2.1.3
|
||||||
env:
|
env:
|
||||||
# configure cibuildwheel to build native archs ('auto'), and some
|
# configure cibuildwheel to build native archs ('auto'), and some
|
||||||
# emulated ones
|
# emulated ones
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ linux:
|
|||||||
DOCKER_TLS_CERTDIR: ""
|
DOCKER_TLS_CERTDIR: ""
|
||||||
script:
|
script:
|
||||||
- curl -sSL https://get.docker.com/ | sh
|
- curl -sSL https://get.docker.com/ | sh
|
||||||
- python -m pip install cibuildwheel==2.1.1
|
- python -m pip install cibuildwheel==2.1.3
|
||||||
- cibuildwheel --output-dir wheelhouse
|
- cibuildwheel --output-dir wheelhouse
|
||||||
artifacts:
|
artifacts:
|
||||||
paths:
|
paths:
|
||||||
|
|||||||
@@ -19,7 +19,7 @@ jobs:
|
|||||||
- ln -s /c/Python38/python.exe /c/Python38/python3.exe
|
- ln -s /c/Python38/python.exe /c/Python38/python3.exe
|
||||||
|
|
||||||
install:
|
install:
|
||||||
- python3 -m pip install cibuildwheel==2.1.1
|
- python3 -m pip install cibuildwheel==2.1.3
|
||||||
|
|
||||||
script:
|
script:
|
||||||
# build the wheels, put them into './wheelhouse'
|
# build the wheels, put them into './wheelhouse'
|
||||||
|
|||||||
@@ -25,7 +25,7 @@ jobs:
|
|||||||
- ln -s /c/Python38/python.exe /c/Python38/python3.exe
|
- ln -s /c/Python38/python.exe /c/Python38/python3.exe
|
||||||
|
|
||||||
install:
|
install:
|
||||||
- python3 -m pip install cibuildwheel==2.1.1
|
- python3 -m pip install cibuildwheel==2.1.3
|
||||||
|
|
||||||
script:
|
script:
|
||||||
# build the wheels, put them into './wheelhouse'
|
# build the wheels, put them into './wheelhouse'
|
||||||
|
|||||||
@@ -57,7 +57,7 @@ jobs:
|
|||||||
- stage: deploy
|
- stage: deploy
|
||||||
name: Build and deploy Linux wheels
|
name: Build and deploy Linux wheels
|
||||||
services: docker
|
services: docker
|
||||||
install: python3 -m pip install cibuildwheel==2.1.1
|
install: python3 -m pip install cibuildwheel==2.1.3
|
||||||
script: python3 -m cibuildwheel --output-dir wheelhouse
|
script: python3 -m cibuildwheel --output-dir wheelhouse
|
||||||
after_success: |
|
after_success: |
|
||||||
python3 -m pip install twine
|
python3 -m pip install twine
|
||||||
@@ -67,7 +67,7 @@ jobs:
|
|||||||
name: Build and deploy Windows wheels
|
name: Build and deploy Windows wheels
|
||||||
os: windows
|
os: windows
|
||||||
language: shell
|
language: shell
|
||||||
install: python3 -m pip install cibuildwheel==2.1.1
|
install: python3 -m pip install cibuildwheel==2.1.3
|
||||||
script: python3 -m cibuildwheel --output-dir wheelhouse
|
script: python3 -m cibuildwheel --output-dir wheelhouse
|
||||||
after_success: |
|
after_success: |
|
||||||
python3 -m pip install twine
|
python3 -m pip install twine
|
||||||
|
|||||||
@@ -63,7 +63,6 @@ def update_proj(session: nox.Session) -> None:
|
|||||||
"python",
|
"python",
|
||||||
"bin/projects.py",
|
"bin/projects.py",
|
||||||
"docs/data/projects.yml",
|
"docs/data/projects.yml",
|
||||||
"--readme=README.md",
|
|
||||||
*session.posargs,
|
*session.posargs,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
[metadata]
|
[metadata]
|
||||||
name = cibuildwheel
|
name = cibuildwheel
|
||||||
version = 2.1.1
|
version = 2.1.3
|
||||||
description = Build Python wheels on CI with minimal configuration.
|
description = Build Python wheels on CI with minimal configuration.
|
||||||
long_description = file: README.md
|
long_description = file: README.md
|
||||||
long_description_content_type = text/markdown
|
long_description_content_type = text/markdown
|
||||||
|
|||||||
@@ -3,25 +3,23 @@ import subprocess
|
|||||||
import pytest
|
import pytest
|
||||||
|
|
||||||
from . import utils
|
from . import utils
|
||||||
from .test_projects import TestProject
|
from .test_projects import TestProject, new_c_project
|
||||||
|
|
||||||
so_file_project = TestProject()
|
SO_FILE_WARNING = "NOTE: Shared object (.so) files found in this project."
|
||||||
|
|
||||||
so_file_project.files["libnothing.so"] = ""
|
|
||||||
|
|
||||||
so_file_project.files[
|
|
||||||
"setup.py"
|
|
||||||
] = """
|
|
||||||
raise Exception('this build will fail')
|
|
||||||
"""
|
|
||||||
|
|
||||||
|
|
||||||
def test_failed_project_with_so_files(tmp_path, capfd, build_frontend_env):
|
@pytest.mark.parametrize("project_contains_so_files", [False, True])
|
||||||
|
def test_failed_build_with_so_files(tmp_path, capfd, build_frontend_env, project_contains_so_files):
|
||||||
|
project = TestProject()
|
||||||
|
project.files["setup.py"] = "raise Exception('this build will fail')\n"
|
||||||
|
if project_contains_so_files:
|
||||||
|
project.files["libnothing.so"] = ""
|
||||||
|
|
||||||
if utils.platform != "linux":
|
if utils.platform != "linux":
|
||||||
pytest.skip("this test is only relevant to the linux build")
|
pytest.skip("this test is only relevant to the linux build")
|
||||||
|
|
||||||
project_dir = tmp_path / "project"
|
project_dir = tmp_path / "project"
|
||||||
so_file_project.generate(project_dir)
|
project.generate(project_dir)
|
||||||
|
|
||||||
with pytest.raises(subprocess.CalledProcessError):
|
with pytest.raises(subprocess.CalledProcessError):
|
||||||
utils.cibuildwheel_run(project_dir, add_env=build_frontend_env)
|
utils.cibuildwheel_run(project_dir, add_env=build_frontend_env)
|
||||||
@@ -29,4 +27,34 @@ def test_failed_project_with_so_files(tmp_path, capfd, build_frontend_env):
|
|||||||
captured = capfd.readouterr()
|
captured = capfd.readouterr()
|
||||||
print("out", captured.out)
|
print("out", captured.out)
|
||||||
print("err", captured.err)
|
print("err", captured.err)
|
||||||
assert "NOTE: Shared object (.so) files found in this project." in captured.err
|
|
||||||
|
if project_contains_so_files:
|
||||||
|
assert SO_FILE_WARNING in captured.err
|
||||||
|
else:
|
||||||
|
assert SO_FILE_WARNING not in captured.err
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.mark.parametrize("project_contains_so_files", [False, True])
|
||||||
|
def test_failed_repair_with_so_files(tmp_path, capfd, project_contains_so_files):
|
||||||
|
if utils.platform != "linux":
|
||||||
|
pytest.skip("this test is only relevant to the linux build")
|
||||||
|
|
||||||
|
project = new_c_project()
|
||||||
|
|
||||||
|
if project_contains_so_files:
|
||||||
|
project.files["libnothing.so"] = ""
|
||||||
|
|
||||||
|
project_dir = tmp_path / "project"
|
||||||
|
project.generate(project_dir)
|
||||||
|
|
||||||
|
with pytest.raises(subprocess.CalledProcessError):
|
||||||
|
utils.cibuildwheel_run(project_dir, add_env={"CIBW_REPAIR_WHEEL_COMMAND": "false"})
|
||||||
|
|
||||||
|
captured = capfd.readouterr()
|
||||||
|
print("out", captured.out)
|
||||||
|
print("err", captured.err)
|
||||||
|
|
||||||
|
if project_contains_so_files:
|
||||||
|
assert SO_FILE_WARNING in captured.err
|
||||||
|
else:
|
||||||
|
assert SO_FILE_WARNING not in captured.err
|
||||||
|
|||||||
Reference in New Issue
Block a user