Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
d4a2945fcc | ||
|
|
9913c03128 | ||
|
|
c0e28d3401 | ||
|
|
8c42e7980c | ||
|
|
01ecd4e011 | ||
|
|
33da1f7d14 |
@@ -50,7 +50,7 @@ jobs:
|
|||||||
with:
|
with:
|
||||||
python-version: ${{ matrix.python_version }}
|
python-version: ${{ matrix.python_version }}
|
||||||
|
|
||||||
- uses: yezz123/setup-uv@v4
|
- uses: astral-sh/setup-uv@v3
|
||||||
|
|
||||||
# free some space to prevent reaching GHA disk space limits
|
# free some space to prevent reaching GHA disk space limits
|
||||||
- name: Clean docker images
|
- name: Clean docker images
|
||||||
@@ -109,7 +109,7 @@ jobs:
|
|||||||
output-dir: wheelhouse_config_file
|
output-dir: wheelhouse_config_file
|
||||||
config-file: sample_proj/cibw.toml
|
config-file: sample_proj/cibw.toml
|
||||||
|
|
||||||
- name: Check Action artefacts
|
- name: Check Action artifacts
|
||||||
shell: bash
|
shell: bash
|
||||||
run: |
|
run: |
|
||||||
test $(find wheelhouse -name '*.whl' | wc -l) -ge 1
|
test $(find wheelhouse -name '*.whl' | wc -l) -ge 1
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ repos:
|
|||||||
- id: trailing-whitespace
|
- id: trailing-whitespace
|
||||||
|
|
||||||
- repo: https://github.com/astral-sh/ruff-pre-commit
|
- repo: https://github.com/astral-sh/ruff-pre-commit
|
||||||
rev: v0.6.4
|
rev: v0.6.5
|
||||||
hooks:
|
hooks:
|
||||||
- id: ruff
|
- id: ruff
|
||||||
args: ["--fix", "--show-fixes"]
|
args: ["--fix", "--show-fixes"]
|
||||||
|
|||||||
@@ -94,7 +94,7 @@ jobs:
|
|||||||
- uses: actions/setup-python@v5
|
- uses: actions/setup-python@v5
|
||||||
|
|
||||||
- name: Install cibuildwheel
|
- name: Install cibuildwheel
|
||||||
run: python -m pip install cibuildwheel==2.21.0
|
run: python -m pip install cibuildwheel==2.21.1
|
||||||
|
|
||||||
- name: Build wheels
|
- name: Build wheels
|
||||||
run: python -m cibuildwheel --output-dir wheelhouse
|
run: python -m cibuildwheel --output-dir wheelhouse
|
||||||
@@ -211,6 +211,15 @@ Changelog
|
|||||||
|
|
||||||
<!-- this section was generated by bin/update_readme_changelog.py -- do not edit manually -->
|
<!-- this section was generated by bin/update_readme_changelog.py -- do not edit manually -->
|
||||||
|
|
||||||
|
### v2.21.1
|
||||||
|
|
||||||
|
_16 September 2024_
|
||||||
|
|
||||||
|
- 🐛 Fix a bug in the Linux build, where files copied to the container would have invalid ownership permissions (#2007)
|
||||||
|
- 🐛 Fix a bug on Windows where cibuildwheel would call upon `uv` to install dependencies for versions of CPython that it does not support (#2005)
|
||||||
|
- 🐛 Fix a bug where `uv 0.4.10` would not use the right Python when testing on Linux. (#2008)
|
||||||
|
- 🛠 Bump our documentation pins, fixes an issue with a missing package (#2011)
|
||||||
|
|
||||||
### v2.21.0
|
### v2.21.0
|
||||||
|
|
||||||
_13 September 2024_
|
_13 September 2024_
|
||||||
@@ -259,25 +268,6 @@ _13 June 2024_
|
|||||||
- 🛠 Fix a warning in our schema generation script. (#1866)
|
- 🛠 Fix a warning in our schema generation script. (#1866)
|
||||||
- 🛠 Cleaner output on pytest 8-8.2. (#1865)
|
- 🛠 Cleaner output on pytest 8-8.2. (#1865)
|
||||||
|
|
||||||
|
|
||||||
### v2.19.0
|
|
||||||
|
|
||||||
_10 June 2024_
|
|
||||||
|
|
||||||
See the [release post](https://iscinumpy.dev/post/cibuildwheel-2-19-0/) for more info on new features!
|
|
||||||
|
|
||||||
- 🌟 Add Pyodide platform. Set with `--platform pyodide` or `CIBW_PLATFORM: pyodide` on Linux with a host Python 3.12 to build WebAssembly wheels. Not accepted on PyPI currently, but usable directly in a website using Pyodide, for live docs, etc. (#1456, #1859)
|
|
||||||
- 🌟 Add `build[uv]` backend, which will take a pre-existing uv install (or install `cibuildwheel[uv]`) and use `uv` for all environment setup and installs on Python 3.8+. This is significantly faster in most cases. (#1856)
|
|
||||||
- ✨ Add free-threaded macOS builds and update CPython to 3.13.0b2. (#1854)
|
|
||||||
- 🐛 Issue copying a wheel to a non-existent output dir fixed. (#1851, #1862)
|
|
||||||
- 🐛 Better determinism for the test environment seeding. (#1835)
|
|
||||||
- 🛠 `VIRTUAL_ENV` variable now set. (#1842)
|
|
||||||
- 🛠 Remove a pip<21.3 workaround. (#1842)
|
|
||||||
- 🛠 Error handling was refactored to use exceptions. (#1719)
|
|
||||||
- 🛠 Hardcoded paths in tests avoided. (#1834)
|
|
||||||
- 🛠 Single Python tests made more generic. (#1835)
|
|
||||||
- 🛠 Sped up our ci by splitting up emulation tests. (#1839)
|
|
||||||
|
|
||||||
<!-- END bin/update_readme_changelog.py -->
|
<!-- END bin/update_readme_changelog.py -->
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|||||||
@@ -1,3 +1,3 @@
|
|||||||
from __future__ import annotations
|
from __future__ import annotations
|
||||||
|
|
||||||
__version__ = "2.21.0"
|
__version__ = "2.21.1"
|
||||||
|
|||||||
@@ -345,7 +345,7 @@ def build_in_container(
|
|||||||
venv_dir = testing_temp_dir / "venv"
|
venv_dir = testing_temp_dir / "venv"
|
||||||
|
|
||||||
if use_uv:
|
if use_uv:
|
||||||
container.call(["uv", "venv", venv_dir], env=env)
|
container.call(["uv", "venv", venv_dir, "--python", python_bin / "python"], env=env)
|
||||||
else:
|
else:
|
||||||
# Use embedded dependencies from virtualenv to ensure determinism
|
# Use embedded dependencies from virtualenv to ensure determinism
|
||||||
venv_args = ["--no-periodic-update", "--pip=embed"]
|
venv_args = ["--no-periodic-update", "--pip=embed"]
|
||||||
|
|||||||
@@ -193,6 +193,11 @@ def install_pypy(tmp: Path, url: str) -> Path:
|
|||||||
return installation_path / "bin" / "pypy3"
|
return installation_path / "bin" / "pypy3"
|
||||||
|
|
||||||
|
|
||||||
|
def can_use_uv(python_configuration: PythonConfiguration) -> bool:
|
||||||
|
conditions = (Version(python_configuration.version) >= Version("3.8"),)
|
||||||
|
return all(conditions)
|
||||||
|
|
||||||
|
|
||||||
def setup_python(
|
def setup_python(
|
||||||
tmp: Path,
|
tmp: Path,
|
||||||
python_configuration: PythonConfiguration,
|
python_configuration: PythonConfiguration,
|
||||||
@@ -200,13 +205,11 @@ def setup_python(
|
|||||||
environment: ParsedEnvironment,
|
environment: ParsedEnvironment,
|
||||||
build_frontend: BuildFrontendName,
|
build_frontend: BuildFrontendName,
|
||||||
) -> tuple[Path, dict[str, str]]:
|
) -> tuple[Path, dict[str, str]]:
|
||||||
if build_frontend == "build[uv]" and Version(python_configuration.version) < Version("3.8"):
|
if build_frontend == "build[uv]" and not can_use_uv(python_configuration):
|
||||||
build_frontend = "build"
|
build_frontend = "build"
|
||||||
|
|
||||||
uv_path = find_uv()
|
uv_path = find_uv()
|
||||||
use_uv = build_frontend == "build[uv]" and Version(python_configuration.version) >= Version(
|
use_uv = build_frontend == "build[uv]"
|
||||||
"3.8"
|
|
||||||
)
|
|
||||||
|
|
||||||
tmp.mkdir()
|
tmp.mkdir()
|
||||||
implementation_id = python_configuration.identifier.split("-")[0]
|
implementation_id = python_configuration.identifier.split("-")[0]
|
||||||
@@ -415,9 +418,7 @@ def build(options: Options, tmp_path: Path) -> None:
|
|||||||
for config in python_configurations:
|
for config in python_configurations:
|
||||||
build_options = options.build_options(config.identifier)
|
build_options = options.build_options(config.identifier)
|
||||||
build_frontend = build_options.build_frontend or BuildFrontendConfig("pip")
|
build_frontend = build_options.build_frontend or BuildFrontendConfig("pip")
|
||||||
use_uv = build_frontend.name == "build[uv]" and Version(config.version) >= Version(
|
use_uv = build_frontend.name == "build[uv]" and can_use_uv(config)
|
||||||
"3.8"
|
|
||||||
)
|
|
||||||
uv_path = find_uv()
|
uv_path = find_uv()
|
||||||
if use_uv and uv_path is None:
|
if use_uv and uv_path is None:
|
||||||
msg = "uv not found"
|
msg = "uv not found"
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ import json
|
|||||||
import os
|
import os
|
||||||
import platform
|
import platform
|
||||||
import shlex
|
import shlex
|
||||||
|
import shutil
|
||||||
import subprocess
|
import subprocess
|
||||||
import sys
|
import sys
|
||||||
import typing
|
import typing
|
||||||
@@ -169,6 +170,9 @@ class OCIContainer:
|
|||||||
self.cwd = cwd
|
self.cwd = cwd
|
||||||
self.name: str | None = None
|
self.name: str | None = None
|
||||||
self.engine = engine
|
self.engine = engine
|
||||||
|
self.host_tar_format = ""
|
||||||
|
if sys.platform.startswith("darwin"):
|
||||||
|
self.host_tar_format = "--format gnutar"
|
||||||
|
|
||||||
def _get_platform_args(self, *, oci_platform: OCIPlatform | None = None) -> tuple[str, str]:
|
def _get_platform_args(self, *, oci_platform: OCIPlatform | None = None) -> tuple[str, str]:
|
||||||
if oci_platform is None:
|
if oci_platform is None:
|
||||||
@@ -311,10 +315,38 @@ class OCIContainer:
|
|||||||
def copy_into(self, from_path: Path, to_path: PurePath) -> None:
|
def copy_into(self, from_path: Path, to_path: PurePath) -> None:
|
||||||
if from_path.is_dir():
|
if from_path.is_dir():
|
||||||
self.call(["mkdir", "-p", to_path])
|
self.call(["mkdir", "-p", to_path])
|
||||||
call(self.engine.name, "cp", f"{from_path}/.", f"{self.name}:{to_path}")
|
subprocess.run(
|
||||||
|
f"tar -c {self.host_tar_format} -f - . | {self.engine.name} exec -i {self.name} tar --no-same-owner -xC {shell_quote(to_path)} -f -",
|
||||||
|
shell=True,
|
||||||
|
check=True,
|
||||||
|
cwd=from_path,
|
||||||
|
)
|
||||||
else:
|
else:
|
||||||
self.call(["mkdir", "-p", to_path.parent])
|
exec_process: subprocess.Popen[bytes]
|
||||||
call(self.engine.name, "cp", from_path, f"{self.name}:{to_path}")
|
with subprocess.Popen(
|
||||||
|
[
|
||||||
|
self.engine.name,
|
||||||
|
"exec",
|
||||||
|
"-i",
|
||||||
|
str(self.name),
|
||||||
|
"sh",
|
||||||
|
"-c",
|
||||||
|
f"cat > {shell_quote(to_path)}",
|
||||||
|
],
|
||||||
|
stdin=subprocess.PIPE,
|
||||||
|
) as exec_process:
|
||||||
|
assert exec_process.stdin
|
||||||
|
with open(from_path, "rb") as from_file:
|
||||||
|
# Bug in mypy, https://github.com/python/mypy/issues/15031
|
||||||
|
shutil.copyfileobj(from_file, exec_process.stdin) # type: ignore[misc]
|
||||||
|
|
||||||
|
exec_process.stdin.close()
|
||||||
|
exec_process.wait()
|
||||||
|
|
||||||
|
if exec_process.returncode:
|
||||||
|
raise subprocess.CalledProcessError(
|
||||||
|
exec_process.returncode, exec_process.args, None, None
|
||||||
|
)
|
||||||
|
|
||||||
def copy_out(self, from_path: PurePath, to_path: Path) -> None:
|
def copy_out(self, from_path: PurePath, to_path: Path) -> None:
|
||||||
# note: we assume from_path is a dir
|
# note: we assume from_path is a dir
|
||||||
|
|||||||
@@ -33,7 +33,7 @@ httpcore==1.0.5
|
|||||||
# via httpx
|
# via httpx
|
||||||
httpx==0.27.2
|
httpx==0.27.2
|
||||||
# via unearth
|
# via unearth
|
||||||
idna==3.8
|
idna==3.10
|
||||||
# via
|
# via
|
||||||
# anyio
|
# anyio
|
||||||
# httpx
|
# httpx
|
||||||
@@ -54,13 +54,13 @@ packaging==24.1
|
|||||||
# unearth
|
# unearth
|
||||||
pip==24.2
|
pip==24.2
|
||||||
# via -r .nox/update_constraints/tmp/constraints-pyodide.in
|
# via -r .nox/update_constraints/tmp/constraints-pyodide.in
|
||||||
platformdirs==4.3.2
|
platformdirs==4.3.3
|
||||||
# via virtualenv
|
# via virtualenv
|
||||||
pydantic==2.9.0
|
pydantic==2.9.1
|
||||||
# via
|
# via
|
||||||
# pyodide-build
|
# pyodide-build
|
||||||
# pyodide-lock
|
# pyodide-lock
|
||||||
pydantic-core==2.23.2
|
pydantic-core==2.23.3
|
||||||
# via pydantic
|
# via pydantic
|
||||||
pygments==2.18.0
|
pygments==2.18.0
|
||||||
# via rich
|
# via rich
|
||||||
@@ -80,7 +80,7 @@ requests==2.32.3
|
|||||||
# via pyodide-build
|
# via pyodide-build
|
||||||
resolvelib==1.0.1
|
resolvelib==1.0.1
|
||||||
# via pyodide-build
|
# via pyodide-build
|
||||||
rich==13.8.0
|
rich==13.8.1
|
||||||
# via
|
# via
|
||||||
# pyodide-build
|
# pyodide-build
|
||||||
# pyodide-cli
|
# pyodide-cli
|
||||||
@@ -100,18 +100,16 @@ typer==0.12.5
|
|||||||
# auditwheel-emscripten
|
# auditwheel-emscripten
|
||||||
# pyodide-build
|
# pyodide-build
|
||||||
# pyodide-cli
|
# pyodide-cli
|
||||||
types-requests==2.32.0.20240907
|
types-requests==2.32.0.20240914
|
||||||
# via pyodide-build
|
# via pyodide-build
|
||||||
typing-extensions==4.12.2
|
typing-extensions==4.12.2
|
||||||
# via
|
# via
|
||||||
# pydantic
|
# pydantic
|
||||||
# pydantic-core
|
# pydantic-core
|
||||||
# typer
|
# typer
|
||||||
tzdata==2024.1
|
|
||||||
# via pydantic
|
|
||||||
unearth==0.17.2
|
unearth==0.17.2
|
||||||
# via pyodide-build
|
# via pyodide-build
|
||||||
urllib3==2.2.2
|
urllib3==2.2.3
|
||||||
# via
|
# via
|
||||||
# requests
|
# requests
|
||||||
# types-requests
|
# types-requests
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ distlib==0.3.8
|
|||||||
# via virtualenv
|
# via virtualenv
|
||||||
filelock==3.16.0
|
filelock==3.16.0
|
||||||
# via virtualenv
|
# via virtualenv
|
||||||
importlib-metadata==8.4.0
|
importlib-metadata==8.5.0
|
||||||
# via build
|
# via build
|
||||||
macholib==1.16.3
|
macholib==1.16.3
|
||||||
# via delocate
|
# via delocate
|
||||||
@@ -20,7 +20,7 @@ packaging==24.1
|
|||||||
# delocate
|
# delocate
|
||||||
pip==24.2
|
pip==24.2
|
||||||
# via -r cibuildwheel/resources/constraints.in
|
# via -r cibuildwheel/resources/constraints.in
|
||||||
platformdirs==4.3.2
|
platformdirs==4.3.3
|
||||||
# via virtualenv
|
# via virtualenv
|
||||||
pyproject-hooks==1.1.0
|
pyproject-hooks==1.1.0
|
||||||
# via build
|
# via build
|
||||||
@@ -30,5 +30,5 @@ typing-extensions==4.12.2
|
|||||||
# via delocate
|
# via delocate
|
||||||
virtualenv==20.26.4
|
virtualenv==20.26.4
|
||||||
# via -r cibuildwheel/resources/constraints.in
|
# via -r cibuildwheel/resources/constraints.in
|
||||||
zipp==3.20.1
|
zipp==3.20.2
|
||||||
# via importlib-metadata
|
# via importlib-metadata
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ packaging==24.1
|
|||||||
# delocate
|
# delocate
|
||||||
pip==24.2
|
pip==24.2
|
||||||
# via -r cibuildwheel/resources/constraints.in
|
# via -r cibuildwheel/resources/constraints.in
|
||||||
platformdirs==4.3.2
|
platformdirs==4.3.3
|
||||||
# via virtualenv
|
# via virtualenv
|
||||||
pyproject-hooks==1.1.0
|
pyproject-hooks==1.1.0
|
||||||
# via build
|
# via build
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ packaging==24.1
|
|||||||
# delocate
|
# delocate
|
||||||
pip==24.2
|
pip==24.2
|
||||||
# via -r cibuildwheel/resources/constraints.in
|
# via -r cibuildwheel/resources/constraints.in
|
||||||
platformdirs==4.3.2
|
platformdirs==4.3.3
|
||||||
# via virtualenv
|
# via virtualenv
|
||||||
pyproject-hooks==1.1.0
|
pyproject-hooks==1.1.0
|
||||||
# via build
|
# via build
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ packaging==24.1
|
|||||||
# delocate
|
# delocate
|
||||||
pip==24.2
|
pip==24.2
|
||||||
# via -r cibuildwheel/resources/constraints.in
|
# via -r cibuildwheel/resources/constraints.in
|
||||||
platformdirs==4.3.2
|
platformdirs==4.3.3
|
||||||
# via virtualenv
|
# via virtualenv
|
||||||
pyproject-hooks==1.1.0
|
pyproject-hooks==1.1.0
|
||||||
# via build
|
# via build
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ distlib==0.3.8
|
|||||||
# via virtualenv
|
# via virtualenv
|
||||||
filelock==3.16.0
|
filelock==3.16.0
|
||||||
# via virtualenv
|
# via virtualenv
|
||||||
importlib-metadata==8.4.0
|
importlib-metadata==8.5.0
|
||||||
# via build
|
# via build
|
||||||
macholib==1.16.3
|
macholib==1.16.3
|
||||||
# via delocate
|
# via delocate
|
||||||
@@ -20,7 +20,7 @@ packaging==24.1
|
|||||||
# delocate
|
# delocate
|
||||||
pip==24.2
|
pip==24.2
|
||||||
# via -r cibuildwheel/resources/constraints.in
|
# via -r cibuildwheel/resources/constraints.in
|
||||||
platformdirs==4.3.2
|
platformdirs==4.3.3
|
||||||
# via virtualenv
|
# via virtualenv
|
||||||
pyproject-hooks==1.1.0
|
pyproject-hooks==1.1.0
|
||||||
# via build
|
# via build
|
||||||
@@ -30,5 +30,5 @@ typing-extensions==4.12.2
|
|||||||
# via delocate
|
# via delocate
|
||||||
virtualenv==20.26.4
|
virtualenv==20.26.4
|
||||||
# via -r cibuildwheel/resources/constraints.in
|
# via -r cibuildwheel/resources/constraints.in
|
||||||
zipp==3.20.1
|
zipp==3.20.2
|
||||||
# via importlib-metadata
|
# via importlib-metadata
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ distlib==0.3.8
|
|||||||
# via virtualenv
|
# via virtualenv
|
||||||
filelock==3.16.0
|
filelock==3.16.0
|
||||||
# via virtualenv
|
# via virtualenv
|
||||||
importlib-metadata==8.4.0
|
importlib-metadata==8.5.0
|
||||||
# via build
|
# via build
|
||||||
macholib==1.16.3
|
macholib==1.16.3
|
||||||
# via delocate
|
# via delocate
|
||||||
@@ -20,7 +20,7 @@ packaging==24.1
|
|||||||
# delocate
|
# delocate
|
||||||
pip==24.2
|
pip==24.2
|
||||||
# via -r cibuildwheel/resources/constraints.in
|
# via -r cibuildwheel/resources/constraints.in
|
||||||
platformdirs==4.3.2
|
platformdirs==4.3.3
|
||||||
# via virtualenv
|
# via virtualenv
|
||||||
pyproject-hooks==1.1.0
|
pyproject-hooks==1.1.0
|
||||||
# via build
|
# via build
|
||||||
@@ -30,5 +30,5 @@ typing-extensions==4.12.2
|
|||||||
# via delocate
|
# via delocate
|
||||||
virtualenv==20.26.4
|
virtualenv==20.26.4
|
||||||
# via -r cibuildwheel/resources/constraints.in
|
# via -r cibuildwheel/resources/constraints.in
|
||||||
zipp==3.20.1
|
zipp==3.20.2
|
||||||
# via importlib-metadata
|
# via importlib-metadata
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ packaging==24.1
|
|||||||
# delocate
|
# delocate
|
||||||
pip==24.2
|
pip==24.2
|
||||||
# via -r cibuildwheel/resources/constraints.in
|
# via -r cibuildwheel/resources/constraints.in
|
||||||
platformdirs==4.3.2
|
platformdirs==4.3.3
|
||||||
# via virtualenv
|
# via virtualenv
|
||||||
pyproject-hooks==1.1.0
|
pyproject-hooks==1.1.0
|
||||||
# via build
|
# via build
|
||||||
|
|||||||
@@ -1,33 +1,33 @@
|
|||||||
[x86_64]
|
[x86_64]
|
||||||
manylinux1 = quay.io/pypa/manylinux1_x86_64:2024-04-29-76807b8
|
manylinux1 = quay.io/pypa/manylinux1_x86_64:2024-04-29-76807b8
|
||||||
manylinux2010 = quay.io/pypa/manylinux2010_x86_64:2022-08-05-4535177
|
manylinux2010 = quay.io/pypa/manylinux2010_x86_64:2022-08-05-4535177
|
||||||
manylinux2014 = quay.io/pypa/manylinux2014_x86_64:2024.09.09-0
|
manylinux2014 = quay.io/pypa/manylinux2014_x86_64:2024.09.16-1
|
||||||
manylinux_2_24 = quay.io/pypa/manylinux_2_24_x86_64:2022-12-26-0d38463
|
manylinux_2_24 = quay.io/pypa/manylinux_2_24_x86_64:2022-12-26-0d38463
|
||||||
manylinux_2_28 = quay.io/pypa/manylinux_2_28_x86_64:2024.09.09-0
|
manylinux_2_28 = quay.io/pypa/manylinux_2_28_x86_64:2024.09.16-1
|
||||||
musllinux_1_1 = quay.io/pypa/musllinux_1_1_x86_64:2024.09.09-0
|
musllinux_1_1 = quay.io/pypa/musllinux_1_1_x86_64:2024.09.16-1
|
||||||
musllinux_1_2 = quay.io/pypa/musllinux_1_2_x86_64:2024.09.09-0
|
musllinux_1_2 = quay.io/pypa/musllinux_1_2_x86_64:2024.09.16-1
|
||||||
|
|
||||||
[i686]
|
[i686]
|
||||||
manylinux1 = quay.io/pypa/manylinux1_i686:2024-04-29-76807b8
|
manylinux1 = quay.io/pypa/manylinux1_i686:2024-04-29-76807b8
|
||||||
manylinux2010 = quay.io/pypa/manylinux2010_i686:2022-08-05-4535177
|
manylinux2010 = quay.io/pypa/manylinux2010_i686:2022-08-05-4535177
|
||||||
manylinux2014 = quay.io/pypa/manylinux2014_i686:2024.09.09-0
|
manylinux2014 = quay.io/pypa/manylinux2014_i686:2024.09.16-1
|
||||||
manylinux_2_24 = quay.io/pypa/manylinux_2_24_i686:2022-12-26-0d38463
|
manylinux_2_24 = quay.io/pypa/manylinux_2_24_i686:2022-12-26-0d38463
|
||||||
musllinux_1_1 = quay.io/pypa/musllinux_1_1_i686:2024.09.09-0
|
musllinux_1_1 = quay.io/pypa/musllinux_1_1_i686:2024.09.16-1
|
||||||
musllinux_1_2 = quay.io/pypa/musllinux_1_2_i686:2024.09.09-0
|
musllinux_1_2 = quay.io/pypa/musllinux_1_2_i686:2024.09.16-1
|
||||||
|
|
||||||
[pypy_x86_64]
|
[pypy_x86_64]
|
||||||
manylinux2010 = quay.io/pypa/manylinux2010_x86_64:2022-08-05-4535177
|
manylinux2010 = quay.io/pypa/manylinux2010_x86_64:2022-08-05-4535177
|
||||||
manylinux2014 = quay.io/pypa/manylinux2014_x86_64:2024.09.09-0
|
manylinux2014 = quay.io/pypa/manylinux2014_x86_64:2024.09.16-1
|
||||||
manylinux_2_24 = quay.io/pypa/manylinux_2_24_x86_64:2022-12-26-0d38463
|
manylinux_2_24 = quay.io/pypa/manylinux_2_24_x86_64:2022-12-26-0d38463
|
||||||
manylinux_2_28 = quay.io/pypa/manylinux_2_28_x86_64:2024.09.09-0
|
manylinux_2_28 = quay.io/pypa/manylinux_2_28_x86_64:2024.09.16-1
|
||||||
|
|
||||||
[pypy_i686]
|
[pypy_i686]
|
||||||
manylinux2010 = quay.io/pypa/manylinux2010_i686:2022-08-05-4535177
|
manylinux2010 = quay.io/pypa/manylinux2010_i686:2022-08-05-4535177
|
||||||
manylinux2014 = quay.io/pypa/manylinux2014_i686:2024.09.09-0
|
manylinux2014 = quay.io/pypa/manylinux2014_i686:2024.09.16-1
|
||||||
manylinux_2_24 = quay.io/pypa/manylinux_2_24_i686:2022-12-26-0d38463
|
manylinux_2_24 = quay.io/pypa/manylinux_2_24_i686:2022-12-26-0d38463
|
||||||
|
|
||||||
[aarch64]
|
[aarch64]
|
||||||
manylinux2014 = quay.io/pypa/manylinux2014_aarch64:2024.09.09-0
|
manylinux2014 = quay.io/pypa/manylinux2014_aarch64:2024.09.16-1
|
||||||
manylinux_2_24 = quay.io/pypa/manylinux_2_24_aarch64:2022-12-26-0d38463
|
manylinux_2_24 = quay.io/pypa/manylinux_2_24_aarch64:2022-12-26-0d38463
|
||||||
manylinux_2_28 = quay.io/pypa/manylinux_2_28_aarch64:2024.09.09-0
|
manylinux_2_28 = quay.io/pypa/manylinux_2_28_aarch64:2024.09.09-0
|
||||||
musllinux_1_1 = quay.io/pypa/musllinux_1_1_aarch64:2024.09.09-0
|
musllinux_1_1 = quay.io/pypa/musllinux_1_1_aarch64:2024.09.09-0
|
||||||
@@ -48,7 +48,7 @@ musllinux_1_1 = quay.io/pypa/musllinux_1_1_s390x:2024.09.09-0
|
|||||||
musllinux_1_2 = quay.io/pypa/musllinux_1_2_s390x:2024.09.09-0
|
musllinux_1_2 = quay.io/pypa/musllinux_1_2_s390x:2024.09.09-0
|
||||||
|
|
||||||
[pypy_aarch64]
|
[pypy_aarch64]
|
||||||
manylinux2014 = quay.io/pypa/manylinux2014_aarch64:2024.09.09-0
|
manylinux2014 = quay.io/pypa/manylinux2014_aarch64:2024.09.16-1
|
||||||
manylinux_2_24 = quay.io/pypa/manylinux_2_24_aarch64:2022-12-26-0d38463
|
manylinux_2_24 = quay.io/pypa/manylinux_2_24_aarch64:2022-12-26-0d38463
|
||||||
manylinux_2_28 = quay.io/pypa/manylinux_2_28_aarch64:2024.09.09-0
|
manylinux_2_28 = quay.io/pypa/manylinux_2_28_aarch64:2024.09.09-0
|
||||||
|
|
||||||
|
|||||||
+13
-10
@@ -225,6 +225,14 @@ def setup_rust_cross_compile(
|
|||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
def can_use_uv(python_configuration: PythonConfiguration) -> bool:
|
||||||
|
conditions = (
|
||||||
|
Version(python_configuration.version) >= Version("3.8"),
|
||||||
|
not python_configuration.identifier.startswith("pp38-"),
|
||||||
|
)
|
||||||
|
return all(conditions)
|
||||||
|
|
||||||
|
|
||||||
def setup_python(
|
def setup_python(
|
||||||
tmp: Path,
|
tmp: Path,
|
||||||
python_configuration: PythonConfiguration,
|
python_configuration: PythonConfiguration,
|
||||||
@@ -254,11 +262,10 @@ def setup_python(
|
|||||||
raise ValueError(msg)
|
raise ValueError(msg)
|
||||||
assert base_python.exists()
|
assert base_python.exists()
|
||||||
|
|
||||||
use_uv = (
|
if build_frontend == "build[uv]" and not can_use_uv(python_configuration):
|
||||||
build_frontend == "build[uv]"
|
build_frontend = "build"
|
||||||
and Version(python_configuration.version) >= Version("3.8")
|
|
||||||
and not python_configuration.identifier.startswith("pp38-")
|
use_uv = build_frontend == "build[uv]"
|
||||||
)
|
|
||||||
uv_path = find_uv()
|
uv_path = find_uv()
|
||||||
|
|
||||||
log.step("Setting up build environment...")
|
log.step("Setting up build environment...")
|
||||||
@@ -368,11 +375,7 @@ def build(options: Options, tmp_path: Path) -> None:
|
|||||||
for config in python_configurations:
|
for config in python_configurations:
|
||||||
build_options = options.build_options(config.identifier)
|
build_options = options.build_options(config.identifier)
|
||||||
build_frontend = build_options.build_frontend or BuildFrontendConfig("pip")
|
build_frontend = build_options.build_frontend or BuildFrontendConfig("pip")
|
||||||
use_uv = (
|
use_uv = build_frontend.name == "build[uv]" and can_use_uv(config)
|
||||||
build_frontend.name == "build[uv]"
|
|
||||||
and Version(config.version) >= Version("3.8")
|
|
||||||
and not config.identifier.startswith("pp38-")
|
|
||||||
)
|
|
||||||
log.build_start(config.identifier)
|
log.build_start(config.identifier)
|
||||||
|
|
||||||
identifier_tmp_dir = tmp_path / config.identifier
|
identifier_tmp_dir = tmp_path / config.identifier
|
||||||
|
|||||||
@@ -4,6 +4,15 @@ title: Changelog
|
|||||||
|
|
||||||
# Changelog
|
# Changelog
|
||||||
|
|
||||||
|
### v2.21.1
|
||||||
|
|
||||||
|
_16 September 2024_
|
||||||
|
|
||||||
|
- 🐛 Fix a bug in the Linux build, where files copied to the container would have invalid ownership permissions (#2007)
|
||||||
|
- 🐛 Fix a bug on Windows where cibuildwheel would call upon `uv` to install dependencies for versions of CPython that it does not support (#2005)
|
||||||
|
- 🐛 Fix a bug where `uv 0.4.10` would not use the right Python when testing on Linux. (#2008)
|
||||||
|
- 🛠 Bump our documentation pins, fixes an issue with a missing package (#2011)
|
||||||
|
|
||||||
### v2.21.0
|
### v2.21.0
|
||||||
|
|
||||||
_13 September 2024_
|
_13 September 2024_
|
||||||
|
|||||||
+3
-3
@@ -142,7 +142,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.21.0
|
uses: pypa/cibuildwheel@v2.21.1
|
||||||
```
|
```
|
||||||
|
|
||||||
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.
|
||||||
@@ -164,7 +164,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.21.0
|
cibuildwheel==2.21.1
|
||||||
```
|
```
|
||||||
|
|
||||||
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:
|
||||||
@@ -328,7 +328,7 @@ Solutions to this vary, but the simplest is to use pipx:
|
|||||||
# most runners have pipx preinstalled, but in case you don't
|
# most runners have pipx preinstalled, but in case you don't
|
||||||
python3 -m pip install pipx
|
python3 -m pip install pipx
|
||||||
|
|
||||||
pipx run cibuildwheel==2.21.0 --output-dir wheelhouse
|
pipx run cibuildwheel==2.21.1 --output-dir wheelhouse
|
||||||
pipx run twine upload wheelhouse/*.whl
|
pipx run twine upload wheelhouse/*.whl
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|||||||
+2
-2
@@ -161,7 +161,7 @@ To build Linux, Mac, and Windows wheels using GitHub Actions, create a `.github/
|
|||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v4
|
||||||
|
|
||||||
- name: Build wheels
|
- name: Build wheels
|
||||||
run: pipx run cibuildwheel==2.21.0
|
run: pipx run cibuildwheel==2.21.1
|
||||||
|
|
||||||
- uses: actions/upload-artifact@v4
|
- uses: actions/upload-artifact@v4
|
||||||
with:
|
with:
|
||||||
@@ -198,7 +198,7 @@ To build Linux, Mac, and Windows wheels using GitHub Actions, create a `.github/
|
|||||||
- uses: actions/setup-python@v5
|
- uses: actions/setup-python@v5
|
||||||
|
|
||||||
- name: Install cibuildwheel
|
- name: Install cibuildwheel
|
||||||
run: python -m pip install cibuildwheel==2.21.0
|
run: python -m pip install cibuildwheel==2.21.1
|
||||||
|
|
||||||
- name: Build wheels
|
- name: Build wheels
|
||||||
run: python -m cibuildwheel --output-dir wheelhouse
|
run: python -m cibuildwheel --output-dir wheelhouse
|
||||||
|
|||||||
@@ -81,13 +81,13 @@ title: Working examples
|
|||||||
| [abess][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | A fast best-subset selection library. It uses cibuildwheel to build a large project with C++ extensions. |
|
| [abess][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | A fast best-subset selection library. It uses cibuildwheel to build a large project with C++ extensions. |
|
||||||
| [sourmash][] | ![github icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | Quickly search, compare, and analyze genomic and metagenomic data sets. |
|
| [sourmash][] | ![github icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | Quickly search, compare, and analyze genomic and metagenomic data sets. |
|
||||||
| [cyvcf2][] | ![github icon][] | ![apple icon][] ![linux icon][] | cython + htslib == fast VCF and BCF processing |
|
| [cyvcf2][] | ![github icon][] | ![apple icon][] ![linux icon][] | cython + htslib == fast VCF and BCF processing |
|
||||||
| [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. |
|
|
||||||
| [jq.py][] | ![travisci icon][] | ![apple icon][] ![linux icon][] | Python bindings for jq |
|
| [jq.py][] | ![travisci icon][] | ![apple icon][] ![linux icon][] | Python bindings for jq |
|
||||||
|
| [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 |
|
| [iminuit][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Jupyter-friendly Python interface for C++ MINUIT2 |
|
||||||
| [Tokenizer][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Fast and customizable text tokenization library with BPE and SentencePiece support |
|
| [Tokenizer][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Fast and customizable text tokenization library with BPE and SentencePiece support |
|
||||||
| [keyvi][] | ![github icon][] | ![linux icon][] ![apple icon][] | FST based key value index highly optimized for size and lookup performance, utilizes ccache action for improved runtime |
|
| [keyvi][] | ![github icon][] | ![linux icon][] ![apple icon][] | FST based key value index highly optimized for size and lookup performance, utilizes ccache action for improved runtime |
|
||||||
| [PyGLM][] | ![github icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | Fast OpenGL Mathematics (GLM) for Python |
|
|
||||||
| [pillow-heif][] | ![github icon][] ![cirrusci icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | Bindings to libheif library with third party dependencies. Fully automated CI for tests and publishing including Apple Silicon builds. |
|
| [pillow-heif][] | ![github icon][] ![cirrusci icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | Bindings to libheif library with third party dependencies. Fully automated CI for tests and publishing including Apple Silicon builds. |
|
||||||
|
| [PyGLM][] | ![github icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | Fast OpenGL Mathematics (GLM) for Python |
|
||||||
| [TgCrypto][] | ![travisci icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Includes a Windows Travis build. |
|
| [TgCrypto][] | ![travisci icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Includes a Windows Travis build. |
|
||||||
| [iDynTree][] | ![github icon][] | ![linux icon][] | Uses manylinux_2_24 |
|
| [iDynTree][] | ![github icon][] | ![linux icon][] | Uses manylinux_2_24 |
|
||||||
| [streaming-form-data][] | ![github icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | Streaming parser for multipart/form-data written in Cython |
|
| [streaming-form-data][] | ![github icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | Streaming parser for multipart/form-data written in Cython |
|
||||||
@@ -101,9 +101,9 @@ title: Working examples
|
|||||||
| [Arbor][] | ![github icon][] | ![apple icon][] ![linux icon][] | Arbor is a multi-compartment neuron simulation library; compatible with next-generation accelerators; best-practices applied to research software; focused on community-driven development. Includes a [small script](https://github.com/arbor-sim/arbor/blob/master/scripts/patchwheel.py) patching `rpath` in bundled libraries. |
|
| [Arbor][] | ![github icon][] | ![apple icon][] ![linux icon][] | Arbor is a multi-compartment neuron simulation library; compatible with next-generation accelerators; best-practices applied to research software; focused on community-driven development. Includes a [small script](https://github.com/arbor-sim/arbor/blob/master/scripts/patchwheel.py) patching `rpath` in bundled libraries. |
|
||||||
| [pybind11 scikit_build_example][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | An example combining scikit-build and pybind11 |
|
| [pybind11 scikit_build_example][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | An example combining scikit-build and pybind11 |
|
||||||
| [polaroid][] | ![github icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | Full range of wheels for setuptools rust, with auto release and PyPI deploy. |
|
| [polaroid][] | ![github icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | Full range of wheels for setuptools rust, with auto release and PyPI deploy. |
|
||||||
|
| [Confluent client for Kafka][] | ![travisci icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | setup in `tools/wheels/build-wheels.bat` |
|
||||||
| [clang-format][] | ![github icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | Scikit-build wrapper around LLVM's CMake, all platforms, generic wheels. |
|
| [clang-format][] | ![github icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | Scikit-build wrapper around LLVM's CMake, all platforms, generic wheels. |
|
||||||
| [etebase-py][] | ![travisci icon][] | ![linux icon][] | Python bindings to a Rust library using `setuptools-rust`, and `sccache` for improved speed. |
|
| [etebase-py][] | ![travisci icon][] | ![linux icon][] | Python bindings to a Rust library using `setuptools-rust`, and `sccache` for improved speed. |
|
||||||
| [Confluent client for Kafka][] | ![travisci icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | setup in `tools/wheels/build-wheels.bat` |
|
|
||||||
| [cf-units][] | ![github icon][] | ![apple icon][] ![linux icon][] | Units of measure as required by the Climate and Forecast (CF) Metadata Conventions |
|
| [cf-units][] | ![github icon][] | ![apple icon][] ![linux icon][] | Units of measure as required by the Climate and Forecast (CF) Metadata Conventions |
|
||||||
| [ninja][] | ![github icon][] ![travisci icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | Multitagged binary builds for all supported platforms, using cibw 2 config configuration. |
|
| [ninja][] | ![github icon][] ![travisci icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | Multitagged binary builds for all supported platforms, using cibw 2 config configuration. |
|
||||||
| [numpythia][] | ![github icon][] | ![apple icon][] ![linux icon][] | The interface between PYTHIA and NumPy |
|
| [numpythia][] | ![github icon][] | ![apple icon][] ![linux icon][] | The interface between PYTHIA and NumPy |
|
||||||
@@ -191,13 +191,13 @@ title: Working examples
|
|||||||
[abess]: https://github.com/abess-team/abess
|
[abess]: https://github.com/abess-team/abess
|
||||||
[sourmash]: https://github.com/sourmash-bio/sourmash
|
[sourmash]: https://github.com/sourmash-bio/sourmash
|
||||||
[cyvcf2]: https://github.com/brentp/cyvcf2
|
[cyvcf2]: https://github.com/brentp/cyvcf2
|
||||||
[matrixprofile]: https://github.com/matrix-profile-foundation/matrixprofile
|
|
||||||
[jq.py]: https://github.com/mwilliamson/jq.py
|
[jq.py]: https://github.com/mwilliamson/jq.py
|
||||||
|
[matrixprofile]: https://github.com/matrix-profile-foundation/matrixprofile
|
||||||
[iminuit]: https://github.com/scikit-hep/iminuit
|
[iminuit]: https://github.com/scikit-hep/iminuit
|
||||||
[Tokenizer]: https://github.com/OpenNMT/Tokenizer
|
[Tokenizer]: https://github.com/OpenNMT/Tokenizer
|
||||||
[keyvi]: https://github.com/KeyviDev/keyvi
|
[keyvi]: https://github.com/KeyviDev/keyvi
|
||||||
[PyGLM]: https://github.com/Zuzu-Typ/PyGLM
|
|
||||||
[pillow-heif]: https://github.com/bigcat88/pillow_heif
|
[pillow-heif]: https://github.com/bigcat88/pillow_heif
|
||||||
|
[PyGLM]: https://github.com/Zuzu-Typ/PyGLM
|
||||||
[TgCrypto]: https://github.com/pyrogram/tgcrypto
|
[TgCrypto]: https://github.com/pyrogram/tgcrypto
|
||||||
[iDynTree]: https://github.com/robotology/idyntree
|
[iDynTree]: https://github.com/robotology/idyntree
|
||||||
[streaming-form-data]: https://github.com/siddhantgoel/streaming-form-data
|
[streaming-form-data]: https://github.com/siddhantgoel/streaming-form-data
|
||||||
@@ -211,9 +211,9 @@ title: Working examples
|
|||||||
[Arbor]: https://github.com/arbor-sim/arbor
|
[Arbor]: https://github.com/arbor-sim/arbor
|
||||||
[pybind11 scikit_build_example]: https://github.com/pybind/scikit_build_example
|
[pybind11 scikit_build_example]: https://github.com/pybind/scikit_build_example
|
||||||
[polaroid]: https://github.com/daggy1234/polaroid
|
[polaroid]: https://github.com/daggy1234/polaroid
|
||||||
|
[Confluent client for Kafka]: https://github.com/confluentinc/confluent-kafka-python
|
||||||
[clang-format]: https://github.com/ssciwr/clang-format-wheel
|
[clang-format]: https://github.com/ssciwr/clang-format-wheel
|
||||||
[etebase-py]: https://github.com/etesync/etebase-py
|
[etebase-py]: https://github.com/etesync/etebase-py
|
||||||
[Confluent client for Kafka]: https://github.com/confluentinc/confluent-kafka-python
|
|
||||||
[cf-units]: https://github.com/SciTools/cf-units
|
[cf-units]: https://github.com/SciTools/cf-units
|
||||||
[ninja]: https://github.com/scikit-build/ninja-python-distributions
|
[ninja]: https://github.com/scikit-build/ninja-python-distributions
|
||||||
[numpythia]: https://github.com/scikit-hep/numpythia
|
[numpythia]: https://github.com/scikit-hep/numpythia
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ environment:
|
|||||||
|
|
||||||
stack: python 3.12
|
stack: python 3.12
|
||||||
|
|
||||||
install: python -m pip install cibuildwheel==2.21.0
|
install: python -m pip install cibuildwheel==2.21.1
|
||||||
|
|
||||||
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.21.0
|
pip3 install cibuildwheel==2.21.1
|
||||||
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.21.0
|
python3 -m pip install cibuildwheel==2.21.1
|
||||||
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.21.0
|
pip install cibuildwheel==2.21.1
|
||||||
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: |
|
||||||
python3 -m pip install --user cibuildwheel==2.21.0
|
python3 -m pip install --user cibuildwheel==2.21.1
|
||||||
cibuildwheel --output-dir wheelhouse
|
cibuildwheel --output-dir wheelhouse
|
||||||
- store_artifacts:
|
- store_artifacts:
|
||||||
path: wheelhouse/
|
path: wheelhouse/
|
||||||
@@ -28,7 +28,7 @@ jobs:
|
|||||||
- run:
|
- run:
|
||||||
name: Build the Linux aarch64 wheels.
|
name: Build the Linux aarch64 wheels.
|
||||||
command: |
|
command: |
|
||||||
python3 -m pip install --user cibuildwheel==2.21.0
|
python3 -m pip install --user cibuildwheel==2.21.1
|
||||||
python3 -m cibuildwheel --output-dir wheelhouse
|
python3 -m cibuildwheel --output-dir wheelhouse
|
||||||
- store_artifacts:
|
- store_artifacts:
|
||||||
path: wheelhouse/
|
path: wheelhouse/
|
||||||
@@ -44,7 +44,7 @@ jobs:
|
|||||||
name: Build the OS X wheels.
|
name: Build the OS X wheels.
|
||||||
command: |
|
command: |
|
||||||
sudo softwareupdate --install-rosetta --agree-to-license # for python<=3.8 or x86_64/universal2 tests
|
sudo softwareupdate --install-rosetta --agree-to-license # for python<=3.8 or x86_64/universal2 tests
|
||||||
pip3 install cibuildwheel==2.21.0
|
pip3 install cibuildwheel==2.21.1
|
||||||
cibuildwheel --output-dir wheelhouse
|
cibuildwheel --output-dir wheelhouse
|
||||||
- store_artifacts:
|
- store_artifacts:
|
||||||
path: wheelhouse/
|
path: wheelhouse/
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
build_and_store_wheels: &BUILD_AND_STORE_WHEELS
|
build_and_store_wheels: &BUILD_AND_STORE_WHEELS
|
||||||
install_cibuildwheel_script:
|
install_cibuildwheel_script:
|
||||||
- python -m pip install cibuildwheel==2.21.0
|
- python -m pip install cibuildwheel==2.21.1
|
||||||
run_cibuildwheel_script:
|
run_cibuildwheel_script:
|
||||||
- cibuildwheel
|
- cibuildwheel
|
||||||
wheels_artifacts:
|
wheels_artifacts:
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
build_and_store_wheels: &BUILD_AND_STORE_WHEELS
|
build_and_store_wheels: &BUILD_AND_STORE_WHEELS
|
||||||
install_cibuildwheel_script:
|
install_cibuildwheel_script:
|
||||||
- python -m pip install cibuildwheel==2.21.0
|
- python -m pip install cibuildwheel==2.21.1
|
||||||
run_cibuildwheel_script:
|
run_cibuildwheel_script:
|
||||||
- cibuildwheel
|
- cibuildwheel
|
||||||
wheels_artifacts:
|
wheels_artifacts:
|
||||||
|
|||||||
@@ -23,7 +23,7 @@ jobs:
|
|||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v4
|
||||||
|
|
||||||
- name: Build wheels
|
- name: Build wheels
|
||||||
uses: pypa/cibuildwheel@v2.21.0
|
uses: pypa/cibuildwheel@v2.21.1
|
||||||
|
|
||||||
- uses: actions/upload-artifact@v4
|
- uses: actions/upload-artifact@v4
|
||||||
with:
|
with:
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ jobs:
|
|||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v4
|
||||||
|
|
||||||
- name: Build wheels
|
- name: Build wheels
|
||||||
uses: pypa/cibuildwheel@v2.21.0
|
uses: pypa/cibuildwheel@v2.21.1
|
||||||
# env:
|
# env:
|
||||||
# CIBW_SOME_OPTION: value
|
# CIBW_SOME_OPTION: value
|
||||||
# ...
|
# ...
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ jobs:
|
|||||||
platforms: all
|
platforms: all
|
||||||
|
|
||||||
- name: Build wheels
|
- name: Build wheels
|
||||||
uses: pypa/cibuildwheel@v2.21.0
|
uses: pypa/cibuildwheel@v2.21.1
|
||||||
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.21.0
|
- python -m pip install cibuildwheel==2.21.1
|
||||||
- cibuildwheel --output-dir wheelhouse
|
- cibuildwheel --output-dir wheelhouse
|
||||||
artifacts:
|
artifacts:
|
||||||
paths:
|
paths:
|
||||||
@@ -23,7 +23,7 @@ windows:
|
|||||||
before_script:
|
before_script:
|
||||||
- choco install python -y --version 3.12.4
|
- choco install python -y --version 3.12.4
|
||||||
- choco install git.install -y
|
- choco install git.install -y
|
||||||
- py -m pip install cibuildwheel==2.21.0
|
- py -m pip install cibuildwheel==2.21.1
|
||||||
script:
|
script:
|
||||||
- py -m cibuildwheel --output-dir wheelhouse --platform windows
|
- py -m cibuildwheel --output-dir wheelhouse --platform windows
|
||||||
artifacts:
|
artifacts:
|
||||||
@@ -35,7 +35,7 @@ windows:
|
|||||||
macos:
|
macos:
|
||||||
image: macos-14-xcode-15
|
image: macos-14-xcode-15
|
||||||
before_script:
|
before_script:
|
||||||
- python3 -m pip install cibuildwheel==2.21.0
|
- python3 -m pip install cibuildwheel==2.21.1
|
||||||
script:
|
script:
|
||||||
- python3 -m cibuildwheel --output-dir wheelhouse
|
- python3 -m cibuildwheel --output-dir wheelhouse
|
||||||
artifacts:
|
artifacts:
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ linux:
|
|||||||
- curl -sSL https://get.docker.com/ | sh
|
- curl -sSL https://get.docker.com/ | sh
|
||||||
# Warning: This is extremely slow, be careful with how many wheels you build
|
# Warning: This is extremely slow, be careful with how many wheels you build
|
||||||
- docker run --rm --privileged multiarch/qemu-user-static --reset -p yes
|
- docker run --rm --privileged multiarch/qemu-user-static --reset -p yes
|
||||||
- python -m pip install cibuildwheel==2.21.0
|
- python -m pip install cibuildwheel==2.21.1
|
||||||
# Assuming your CI runner's default architecture is x86_64...
|
# Assuming your CI runner's default architecture is x86_64...
|
||||||
- cibuildwheel --output-dir wheelhouse --platform linux --archs aarch64
|
- cibuildwheel --output-dir wheelhouse --platform linux --archs aarch64
|
||||||
artifacts:
|
artifacts:
|
||||||
|
|||||||
@@ -20,7 +20,7 @@ jobs:
|
|||||||
- ln -s /c/Python312/python.exe /c/Python312/python3.exe
|
- ln -s /c/Python312/python.exe /c/Python312/python3.exe
|
||||||
|
|
||||||
install:
|
install:
|
||||||
- python3 -m pip install cibuildwheel==2.21.0
|
- python3 -m pip install cibuildwheel==2.21.1
|
||||||
|
|
||||||
script:
|
script:
|
||||||
# build the wheels, put them into './dist'
|
# build the wheels, put them into './dist'
|
||||||
|
|||||||
@@ -26,7 +26,7 @@ jobs:
|
|||||||
- ln -s /c/Python312/python.exe /c/Python312/python3.exe
|
- ln -s /c/Python312/python.exe /c/Python312/python3.exe
|
||||||
|
|
||||||
install:
|
install:
|
||||||
- python3 -m pip install cibuildwheel==2.21.0
|
- python3 -m pip install cibuildwheel==2.21.1
|
||||||
|
|
||||||
script:
|
script:
|
||||||
# build the wheels, put them into './wheelhouse'
|
# build the wheels, put them into './wheelhouse'
|
||||||
|
|||||||
@@ -52,7 +52,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.21.0 twine
|
install: python3 -m pip install cibuildwheel==2.21.1 twine
|
||||||
script: python3 -m cibuildwheel --output-dir wheelhouse
|
script: python3 -m cibuildwheel --output-dir wheelhouse
|
||||||
after_success: python3 -m twine upload --skip-existing wheelhouse/*.whl
|
after_success: python3 -m twine upload --skip-existing wheelhouse/*.whl
|
||||||
# Deploy on windows
|
# Deploy on windows
|
||||||
@@ -60,7 +60,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.21.0 twine
|
install: python3 -m pip install cibuildwheel==2.21.1 twine
|
||||||
script: python3 -m cibuildwheel --output-dir wheelhouse
|
script: python3 -m cibuildwheel --output-dir wheelhouse
|
||||||
after_success: python3 -m twine upload --skip-existing wheelhouse/*.whl
|
after_success: python3 -m twine upload --skip-existing wheelhouse/*.whl
|
||||||
|
|
||||||
|
|||||||
+3
-3
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
|
|||||||
|
|
||||||
[project]
|
[project]
|
||||||
name = "cibuildwheel"
|
name = "cibuildwheel"
|
||||||
version = "2.21.0"
|
version = "2.21.1"
|
||||||
description = "Build Python wheels on CI with minimal configuration."
|
description = "Build Python wheels on CI with minimal configuration."
|
||||||
readme = "README.md"
|
readme = "README.md"
|
||||||
license = "BSD-2-Clause"
|
license = "BSD-2-Clause"
|
||||||
@@ -64,9 +64,9 @@ dev = [
|
|||||||
]
|
]
|
||||||
docs = [
|
docs = [
|
||||||
"jinja2>=3.1.2",
|
"jinja2>=3.1.2",
|
||||||
"mkdocs-include-markdown-plugin==2.8.0",
|
"mkdocs-include-markdown-plugin==6.2.2",
|
||||||
"mkdocs-macros-plugin",
|
"mkdocs-macros-plugin",
|
||||||
"mkdocs==1.3.1",
|
"mkdocs==1.6.1",
|
||||||
"pymdown-extensions",
|
"pymdown-extensions",
|
||||||
]
|
]
|
||||||
test = [
|
test = [
|
||||||
|
|||||||
@@ -244,6 +244,9 @@ def test_file_operation(tmp_path: Path, container_engine):
|
|||||||
|
|
||||||
container.copy_into(original_test_file, dst_file)
|
container.copy_into(original_test_file, dst_file)
|
||||||
|
|
||||||
|
owner = container.call(["stat", "-c", "%u:%g", dst_file], capture_output=True).strip()
|
||||||
|
assert owner == "0:0"
|
||||||
|
|
||||||
output = container.call(["cat", dst_file], capture_output=True)
|
output = container.call(["cat", dst_file], capture_output=True)
|
||||||
assert test_binary_data == bytes(output, encoding="utf8", errors="surrogateescape")
|
assert test_binary_data == bytes(output, encoding="utf8", errors="surrogateescape")
|
||||||
|
|
||||||
@@ -266,6 +269,12 @@ def test_dir_operations(tmp_path: Path, container_engine):
|
|||||||
dst_file = dst_dir / "test.dat"
|
dst_file = dst_dir / "test.dat"
|
||||||
container.copy_into(test_dir, dst_dir)
|
container.copy_into(test_dir, dst_dir)
|
||||||
|
|
||||||
|
owner = container.call(["stat", "-c", "%u:%g", dst_dir], capture_output=True).strip()
|
||||||
|
assert owner == "0:0"
|
||||||
|
|
||||||
|
owner = container.call(["stat", "-c", "%u:%g", dst_file], capture_output=True).strip()
|
||||||
|
assert owner == "0:0"
|
||||||
|
|
||||||
output = container.call(["cat", dst_file], capture_output=True)
|
output = container.call(["cat", dst_file], capture_output=True)
|
||||||
assert test_binary_data == bytes(output, encoding="utf8", errors="surrogateescape")
|
assert test_binary_data == bytes(output, encoding="utf8", errors="surrogateescape")
|
||||||
|
|
||||||
@@ -276,6 +285,11 @@ def test_dir_operations(tmp_path: Path, container_engine):
|
|||||||
new_test_dir = tmp_path / "test_dir_new"
|
new_test_dir = tmp_path / "test_dir_new"
|
||||||
container.copy_out(dst_dir, new_test_dir)
|
container.copy_out(dst_dir, new_test_dir)
|
||||||
|
|
||||||
|
assert os.getuid() == new_test_dir.stat().st_uid
|
||||||
|
assert os.getgid() == new_test_dir.stat().st_gid
|
||||||
|
assert os.getuid() == (new_test_dir / "test.dat").stat().st_uid
|
||||||
|
assert os.getgid() == (new_test_dir / "test.dat").stat().st_gid
|
||||||
|
|
||||||
assert test_binary_data == (new_test_dir / "test.dat").read_bytes()
|
assert test_binary_data == (new_test_dir / "test.dat").read_bytes()
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user