Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
3c5ff09888 | ||
|
|
1b9a56e014 | ||
|
|
aa9fe2a24e | ||
|
|
e188d9e260 | ||
|
|
3fa7bd1e72 | ||
|
|
c6368be701 | ||
|
|
dcecda6962 | ||
|
|
adc58e93d1 | ||
|
|
487154abbb | ||
|
|
0fe82c5882 | ||
|
|
0b6c7d0aff | ||
|
|
38dab4b641 |
+7
-4
@@ -1,9 +1,9 @@
|
||||
only_if: changesInclude('.cirrus.yml') || ($CIRRUS_BRANCH == "main" && !changesIncludeOnly('docs/*', '.pre-commit-config.yaml')) || $CIRRUS_BRANCH =~ 'cirrus.*'
|
||||
only_if: changesInclude('.cirrus.yml') || ($CIRRUS_BRANCH == "main" && !changesIncludeOnly('.github/*', 'bin/*', 'docs/*', '.circleci/*', '.travis.yml', '.pre-commit-config.yaml', '.readthedocs.yml', 'azure-pipelines.yml', 'README.md', 'mkdocs.yml', 'noxfile.py')) || $CIRRUS_BRANCH =~ 'cirrus.*'
|
||||
|
||||
run_tests: &RUN_TESTS
|
||||
install_cibuildwheel_script:
|
||||
- python -m pip install dependency-groups
|
||||
- python -m dependency_groups test | xargs python -m pip install -e.
|
||||
- python -m pip install -U pip
|
||||
- python -m pip install -e. --group test
|
||||
run_cibuildwheel_tests_script:
|
||||
- python ./bin/run_tests.py
|
||||
|
||||
@@ -55,9 +55,12 @@ windows_x86_task:
|
||||
memory: 8G
|
||||
|
||||
install_pre_requirements_script:
|
||||
- certutil -generateSSTFromWU roots.sst
|
||||
- certutil -addstore -f root roots.sst
|
||||
- del roots.sst
|
||||
- choco install -y --no-progress python3 --version 3.12.4
|
||||
- refreshenv
|
||||
- echo PATH=%PATH% >> "%CIRRUS_ENV%"
|
||||
- powershell -Command "$cleanPath = $env:PATH -replace ';+$', ''; Add-Content -Path $env:CIRRUS_ENV -Value ('PATH=' + $cleanPath)"
|
||||
<<: *RUN_TESTS
|
||||
|
||||
macos_arm64_task:
|
||||
|
||||
@@ -12,8 +12,19 @@ on:
|
||||
- reopened
|
||||
- labeled
|
||||
paths-ignore:
|
||||
- 'docs/**'
|
||||
- .ci*
|
||||
- bin/*
|
||||
- docs/**
|
||||
- examples/azure-pipelines-*
|
||||
- examples/ci*
|
||||
- examples/travis-ci-*
|
||||
- .pre-commit-config.yaml
|
||||
- .readthedocs.yml
|
||||
- .travis.yml
|
||||
- README.md
|
||||
- azure-pipelines.yml
|
||||
- mkdocs.yml
|
||||
- noxfile.py
|
||||
workflow_dispatch:
|
||||
# allow manual runs on branches without a PR
|
||||
|
||||
|
||||
@@ -14,7 +14,7 @@ repos:
|
||||
- id: trailing-whitespace
|
||||
|
||||
- repo: https://github.com/astral-sh/ruff-pre-commit
|
||||
rev: v0.11.12
|
||||
rev: v0.11.13
|
||||
hooks:
|
||||
- id: ruff
|
||||
args: ["--fix", "--show-fixes"]
|
||||
@@ -69,7 +69,7 @@ repos:
|
||||
pass_filenames: false
|
||||
entry: cog -c -P -r -I ./bin README.md
|
||||
files: '^(README\.md|docs/changelog\.md|docs/options\.md|bin/readme.*)$'
|
||||
additional_dependencies: [cogapp]
|
||||
additional_dependencies: [cogapp>=3.5]
|
||||
|
||||
- repo: https://github.com/codespell-project/codespell
|
||||
rev: v2.4.1
|
||||
|
||||
+1
-3
@@ -5,9 +5,7 @@ version: 2
|
||||
build:
|
||||
os: ubuntu-24.04
|
||||
commands:
|
||||
- asdf install python 3.14-dev
|
||||
- asdf global python 3.14-dev
|
||||
- asdf plugin add uv
|
||||
- asdf install uv latest
|
||||
- asdf global uv latest
|
||||
- NO_COLOR=1 uv run --no-dev --group docs mkdocs build --strict --site-dir $READTHEDOCS_OUTPUT/html
|
||||
- NO_COLOR=1 uv run --python 3.14 --managed-python --no-dev --group docs mkdocs build --strict --site-dir $READTHEDOCS_OUTPUT/html
|
||||
|
||||
@@ -97,7 +97,7 @@ jobs:
|
||||
- uses: actions/setup-python@v5
|
||||
|
||||
- name: Install cibuildwheel
|
||||
run: python -m pip install cibuildwheel==3.0.0rc2
|
||||
run: python -m pip install cibuildwheel==3.0.0rc3
|
||||
|
||||
- name: Build wheels
|
||||
run: python -m cibuildwheel --output-dir wheelhouse
|
||||
@@ -162,7 +162,7 @@ The following diagram summarises the steps that cibuildwheel takes on each platf
|
||||
| | [`build-verbosity`](https://cibuildwheel.pypa.io/en/stable/options/#build-verbosity) | Increase/decrease the output of the build |
|
||||
|
||||
|
||||
<!--[[[end]]] (checksum: 4d6a8418630e9ed43251973d93798a1b) -->
|
||||
<!--[[[end]]] (sum: TWqEGGMOnt) -->
|
||||
|
||||
These options can be specified in a pyproject.toml file, or as environment variables, see [configuration docs](https://cibuildwheel.pypa.io/en/latest/configuration/).
|
||||
|
||||
@@ -241,6 +241,15 @@ If you've used previous versions of the beta:
|
||||
- ⚠️ Previous betas of v3.0 changed the working directory for tests. This has been rolled back to the v2.x behaviour, so you might need to change configs if you adapted to the beta 1 or 2 behaviour. See [issue #2406](https://github.com/pypa/cibuildwheel/issues/2406) for more information.
|
||||
- ⚠️ GraalPy shipped with the identifier `gp242-*` in previous betas, this has been changed to `gp311_242-*` to be consistent with other interpreters, and to fix a bug with GraalPy and project requires-python detection. If you were using GraalPy, you might need to update your config to use the new identifier.
|
||||
- ⚠️ `test-sources` now uses `project` directory instead of the `package` directory (matching the docs).
|
||||
- ⚠️ 32-bit linux builds were removed from `"auto"` (the default), now require `"auto32"` or explicit archs, as modern manylinux images (including our new default) do not support them.
|
||||
|
||||
|
||||
#### v3.0.0rc3
|
||||
|
||||
_11 June 2025_
|
||||
|
||||
- 🛠 32-bit linux builds removed from `"auto"`, requires explicit `"auto32"`. (#2458)
|
||||
- 📚 Warn that `pyodide-version` is experimental. (#2450)
|
||||
|
||||
#### v3.0.0rc2
|
||||
|
||||
@@ -265,15 +274,7 @@ _3 June 2025_
|
||||
- 🛠 Use the standard Schema line for the integrated JSONSchema. (#2433)
|
||||
- 📚 Use Python 3.14 color output in docs CLI output. (#2407)
|
||||
|
||||
#### v3.0.0b4
|
||||
|
||||
_29 May 2025_
|
||||
|
||||
- 🛠 Dependency updates, including Python 3.14.0b2. (#2371)
|
||||
- 🛠 Remove the addition of `PYTHONSAFEPATH` to `test-environment`. (#2429)
|
||||
- 📚 README table now matches docs and auto-updates. (#2427, #2428)
|
||||
|
||||
<!-- [[[end]]] (checksum: 48d3233c1809c1d7a93dc7291752b4d4) -->
|
||||
<!-- [[[end]]] (sum: c1HE9PQmvW) -->
|
||||
|
||||
---
|
||||
|
||||
|
||||
+15
-4
@@ -1,13 +1,24 @@
|
||||
pr:
|
||||
paths:
|
||||
exclude:
|
||||
- docs/*
|
||||
- .github/**
|
||||
- bin/*
|
||||
- docs/**
|
||||
- examples/github-*
|
||||
- examples/ci*
|
||||
- examples/travis-ci-*
|
||||
- .ci*
|
||||
- .pre-commit-config.yaml
|
||||
- .readthedocs.yml
|
||||
- .travis.yml
|
||||
- README.md
|
||||
- mkdocs.yml
|
||||
- noxfile.py
|
||||
|
||||
jobs:
|
||||
- job: linux_311
|
||||
timeoutInMinutes: 180
|
||||
pool: {vmImage: 'Ubuntu-22.04'}
|
||||
pool: {vmImage: 'ubuntu-latest'}
|
||||
steps:
|
||||
- task: UsePythonVersion@0
|
||||
inputs:
|
||||
@@ -25,7 +36,7 @@ jobs:
|
||||
python ./bin/run_tests.py
|
||||
|
||||
- job: macos_311
|
||||
pool: {vmImage: 'macOS-13'}
|
||||
pool: {vmImage: 'macOS-latest'}
|
||||
timeoutInMinutes: 120
|
||||
steps:
|
||||
- task: UsePythonVersion@0
|
||||
@@ -43,7 +54,7 @@ jobs:
|
||||
python ./bin/run_tests.py
|
||||
|
||||
- job: windows_311
|
||||
pool: {vmImage: 'windows-2019'}
|
||||
pool: {vmImage: 'windows-latest'}
|
||||
timeoutInMinutes: 180
|
||||
steps:
|
||||
- task: UsePythonVersion@0
|
||||
|
||||
@@ -25,25 +25,25 @@ def main() -> None:
|
||||
f"repos/astral-sh/python-build-standalone/releases/tags/{latest_tag}"
|
||||
)["assets"]
|
||||
|
||||
assets: list[PythonBuildStandaloneAsset] = []
|
||||
assets = [
|
||||
PythonBuildStandaloneAsset(name=ga["name"], url=ga["browser_download_url"])
|
||||
for ga in github_assets
|
||||
if ga["name"].endswith("install_only.tar.gz")
|
||||
]
|
||||
|
||||
for github_asset in github_assets:
|
||||
name = github_asset["name"]
|
||||
if not name.endswith("install_only.tar.gz"):
|
||||
continue
|
||||
url = github_asset["browser_download_url"]
|
||||
assets.append({"name": name, "url": url})
|
||||
# Try to keep output order stable
|
||||
assets = sorted(assets, key=lambda x: x["name"])
|
||||
|
||||
# Write the assets to the JSON file. One day, we might need to support
|
||||
# multiple releases, but for now, we only support the latest one
|
||||
json_file_contents: PythonBuildStandaloneReleaseData = {
|
||||
"releases": [
|
||||
json_file_contents = PythonBuildStandaloneReleaseData(
|
||||
releases=[
|
||||
{
|
||||
"tag": latest_tag,
|
||||
"assets": assets,
|
||||
}
|
||||
]
|
||||
}
|
||||
)
|
||||
|
||||
with PYTHON_BUILD_STANDALONE_RELEASES.open("w", encoding="utf-8") as f:
|
||||
json.dump(json_file_contents, f, indent=2)
|
||||
|
||||
@@ -1 +1 @@
|
||||
__version__ = "3.0.0rc2"
|
||||
__version__ = "3.0.0rc3"
|
||||
|
||||
@@ -75,24 +75,24 @@ class Architecture(StrEnum):
|
||||
def parse_config(config: str, platform: PlatformName) -> "set[Architecture]":
|
||||
result = set()
|
||||
for arch_str in re.split(r"[\s,]+", config):
|
||||
if arch_str == "auto":
|
||||
result |= Architecture.auto_archs(platform=platform)
|
||||
elif arch_str == "native":
|
||||
native_arch = Architecture.native_arch(platform=platform)
|
||||
if native_arch:
|
||||
result.add(native_arch)
|
||||
elif arch_str == "all":
|
||||
result |= Architecture.all_archs(platform=platform)
|
||||
elif arch_str == "auto64":
|
||||
result |= Architecture.bitness_archs(platform=platform, bitness="64")
|
||||
elif arch_str == "auto32":
|
||||
result |= Architecture.bitness_archs(platform=platform, bitness="32")
|
||||
else:
|
||||
try:
|
||||
result.add(Architecture(arch_str))
|
||||
except ValueError as e:
|
||||
msg = f"Invalid architecture '{arch_str}'"
|
||||
raise errors.ConfigurationError(msg) from e
|
||||
match arch_str:
|
||||
case "auto":
|
||||
result |= Architecture.auto_archs(platform=platform)
|
||||
case "native":
|
||||
if native_arch := Architecture.native_arch(platform=platform):
|
||||
result.add(native_arch)
|
||||
case "all":
|
||||
result |= Architecture.all_archs(platform=platform)
|
||||
case "auto64":
|
||||
result |= Architecture.bitness_archs(platform=platform, bitness="64")
|
||||
case "auto32":
|
||||
result |= Architecture.bitness_archs(platform=platform, bitness="32")
|
||||
case _:
|
||||
try:
|
||||
result.add(Architecture(arch_str))
|
||||
except ValueError as e:
|
||||
msg = f"Invalid architecture '{arch_str}'"
|
||||
raise errors.ConfigurationError(msg) from e
|
||||
return result
|
||||
|
||||
@staticmethod
|
||||
@@ -142,19 +142,12 @@ class Architecture(StrEnum):
|
||||
return set() # can't build anything on this platform
|
||||
result = {native_arch}
|
||||
|
||||
if platform == "linux":
|
||||
if Architecture.x86_64 in result:
|
||||
# x86_64 machines can run i686 containers
|
||||
result.add(Architecture.i686)
|
||||
elif Architecture.aarch64 in result and _check_aarch32_el0():
|
||||
result.add(Architecture.armv7l)
|
||||
|
||||
elif platform == "windows" and Architecture.AMD64 in result:
|
||||
result.add(Architecture.x86)
|
||||
|
||||
elif platform == "ios" and native_arch == Architecture.arm64_iphonesimulator:
|
||||
# Also build the device wheel if we're on ARM64.
|
||||
result.add(Architecture.arm64_iphoneos)
|
||||
match platform:
|
||||
case "windows" if Architecture.AMD64 in result:
|
||||
result.add(Architecture.x86)
|
||||
case "ios" if native_arch == Architecture.arm64_iphonesimulator:
|
||||
# Also build the device wheel if we're on ARM64.
|
||||
result.add(Architecture.arm64_iphoneos)
|
||||
|
||||
return result
|
||||
|
||||
@@ -183,14 +176,35 @@ class Architecture(StrEnum):
|
||||
|
||||
@staticmethod
|
||||
def bitness_archs(platform: PlatformName, bitness: Literal["64", "32"]) -> "set[Architecture]":
|
||||
archs_32 = {Architecture.i686, Architecture.x86, Architecture.armv7l}
|
||||
auto_archs = Architecture.auto_archs(platform)
|
||||
# This map maps 64-bit architectures to their 32-bit equivalents.
|
||||
archs_map = {
|
||||
Architecture.x86_64: Architecture.i686,
|
||||
Architecture.AMD64: Architecture.x86,
|
||||
Architecture.aarch64: Architecture.armv7l,
|
||||
}
|
||||
native_arch = Architecture.native_arch(platform)
|
||||
|
||||
if bitness == "64":
|
||||
return auto_archs - archs_32
|
||||
if bitness == "32":
|
||||
return auto_archs & archs_32
|
||||
typing.assert_never(bitness)
|
||||
if native_arch is None:
|
||||
return set() # can't build anything on this platform
|
||||
|
||||
if native_arch == Architecture.wasm32:
|
||||
return {native_arch} if bitness == "32" else set()
|
||||
|
||||
match bitness:
|
||||
case "64":
|
||||
return {native_arch} if native_arch not in archs_map.values() else set()
|
||||
case "32":
|
||||
if native_arch in archs_map.values():
|
||||
return {native_arch}
|
||||
elif native_arch in archs_map and platform in {"linux", "windows"}:
|
||||
if native_arch == Architecture.aarch64 and not _check_aarch32_el0():
|
||||
# If we're on aarch64, skip if we cannot build armv7l wheels.
|
||||
return set()
|
||||
return {archs_map[native_arch]}
|
||||
else:
|
||||
return set()
|
||||
case _:
|
||||
typing.assert_never(bitness)
|
||||
|
||||
|
||||
def allowed_architectures_check(
|
||||
|
||||
@@ -72,7 +72,7 @@ pyodide-lock==0.1.0a7
|
||||
# via pyodide-build
|
||||
pyproject-hooks==1.2.0
|
||||
# via build
|
||||
requests==2.32.3
|
||||
requests==2.32.4
|
||||
# via pyodide-build
|
||||
resolvelib==1.1.0
|
||||
# via pyodide-build
|
||||
@@ -81,7 +81,7 @@ rich==14.0.0
|
||||
# pyodide-build
|
||||
# pyodide-cli
|
||||
# typer
|
||||
ruamel-yaml==0.18.12
|
||||
ruamel-yaml==0.18.14
|
||||
# via pyodide-build
|
||||
ruamel-yaml-clib==0.2.12
|
||||
# via ruamel-yaml
|
||||
|
||||
@@ -72,7 +72,7 @@ pyodide-lock==0.1.0a7
|
||||
# via pyodide-build
|
||||
pyproject-hooks==1.2.0
|
||||
# via build
|
||||
requests==2.32.3
|
||||
requests==2.32.4
|
||||
# via pyodide-build
|
||||
resolvelib==1.1.0
|
||||
# via pyodide-build
|
||||
@@ -81,7 +81,7 @@ rich==14.0.0
|
||||
# pyodide-build
|
||||
# pyodide-cli
|
||||
# typer
|
||||
ruamel-yaml==0.18.12
|
||||
ruamel-yaml==0.18.14
|
||||
# via pyodide-build
|
||||
ruamel-yaml-clib==0.2.12
|
||||
# via ruamel-yaml
|
||||
|
||||
@@ -30,5 +30,5 @@ typing-extensions==4.14.0
|
||||
# via delocate
|
||||
virtualenv==20.31.2
|
||||
# via -r cibuildwheel/resources/constraints.in
|
||||
zipp==3.22.0
|
||||
zipp==3.23.0
|
||||
# via importlib-metadata
|
||||
|
||||
@@ -30,5 +30,5 @@ typing-extensions==4.14.0
|
||||
# via delocate
|
||||
virtualenv==20.31.2
|
||||
# via -r cibuildwheel/resources/constraints.in
|
||||
zipp==3.22.0
|
||||
zipp==3.23.0
|
||||
# via importlib-metadata
|
||||
|
||||
@@ -1,47 +1,47 @@
|
||||
[x86_64]
|
||||
manylinux2014 = quay.io/pypa/manylinux2014_x86_64:2025.06.04-1
|
||||
manylinux_2_28 = quay.io/pypa/manylinux_2_28_x86_64:2025.06.04-1
|
||||
manylinux_2_34 = quay.io/pypa/manylinux_2_34_x86_64:2025.06.04-1
|
||||
musllinux_1_2 = quay.io/pypa/musllinux_1_2_x86_64:2025.06.04-1
|
||||
manylinux2014 = quay.io/pypa/manylinux2014_x86_64:2025.06.08-1
|
||||
manylinux_2_28 = quay.io/pypa/manylinux_2_28_x86_64:2025.06.08-1
|
||||
manylinux_2_34 = quay.io/pypa/manylinux_2_34_x86_64:2025.06.08-1
|
||||
musllinux_1_2 = quay.io/pypa/musllinux_1_2_x86_64:2025.06.08-1
|
||||
|
||||
[i686]
|
||||
manylinux2014 = quay.io/pypa/manylinux2014_i686:2025.06.04-1
|
||||
musllinux_1_2 = quay.io/pypa/musllinux_1_2_i686:2025.06.04-1
|
||||
manylinux2014 = quay.io/pypa/manylinux2014_i686:2025.06.08-1
|
||||
musllinux_1_2 = quay.io/pypa/musllinux_1_2_i686:2025.06.08-1
|
||||
|
||||
[aarch64]
|
||||
manylinux2014 = quay.io/pypa/manylinux2014_aarch64:2025.06.04-1
|
||||
manylinux_2_28 = quay.io/pypa/manylinux_2_28_aarch64:2025.06.04-1
|
||||
manylinux_2_34 = quay.io/pypa/manylinux_2_34_aarch64:2025.06.04-1
|
||||
musllinux_1_2 = quay.io/pypa/musllinux_1_2_aarch64:2025.06.04-1
|
||||
manylinux2014 = quay.io/pypa/manylinux2014_aarch64:2025.06.08-1
|
||||
manylinux_2_28 = quay.io/pypa/manylinux_2_28_aarch64:2025.06.08-1
|
||||
manylinux_2_34 = quay.io/pypa/manylinux_2_34_aarch64:2025.06.08-1
|
||||
musllinux_1_2 = quay.io/pypa/musllinux_1_2_aarch64:2025.06.08-1
|
||||
|
||||
[ppc64le]
|
||||
manylinux2014 = quay.io/pypa/manylinux2014_ppc64le:2025.06.04-1
|
||||
manylinux_2_28 = quay.io/pypa/manylinux_2_28_ppc64le:2025.06.04-1
|
||||
manylinux_2_34 = quay.io/pypa/manylinux_2_34_ppc64le:2025.06.04-1
|
||||
musllinux_1_2 = quay.io/pypa/musllinux_1_2_ppc64le:2025.06.04-1
|
||||
manylinux2014 = quay.io/pypa/manylinux2014_ppc64le:2025.06.08-1
|
||||
manylinux_2_28 = quay.io/pypa/manylinux_2_28_ppc64le:2025.06.08-1
|
||||
manylinux_2_34 = quay.io/pypa/manylinux_2_34_ppc64le:2025.06.08-1
|
||||
musllinux_1_2 = quay.io/pypa/musllinux_1_2_ppc64le:2025.06.08-1
|
||||
|
||||
[s390x]
|
||||
manylinux2014 = quay.io/pypa/manylinux2014_s390x:2025.06.04-1
|
||||
manylinux_2_28 = quay.io/pypa/manylinux_2_28_s390x:2025.06.04-1
|
||||
manylinux_2_34 = quay.io/pypa/manylinux_2_34_s390x:2025.06.04-1
|
||||
musllinux_1_2 = quay.io/pypa/musllinux_1_2_s390x:2025.06.04-1
|
||||
manylinux2014 = quay.io/pypa/manylinux2014_s390x:2025.06.08-1
|
||||
manylinux_2_28 = quay.io/pypa/manylinux_2_28_s390x:2025.06.08-1
|
||||
manylinux_2_34 = quay.io/pypa/manylinux_2_34_s390x:2025.06.08-1
|
||||
musllinux_1_2 = quay.io/pypa/musllinux_1_2_s390x:2025.06.08-1
|
||||
|
||||
[pypy_x86_64]
|
||||
manylinux2014 = quay.io/pypa/manylinux2014_x86_64:2025.06.04-1
|
||||
manylinux_2_28 = quay.io/pypa/manylinux_2_28_x86_64:2025.06.04-1
|
||||
manylinux_2_34 = quay.io/pypa/manylinux_2_34_x86_64:2025.06.04-1
|
||||
manylinux2014 = quay.io/pypa/manylinux2014_x86_64:2025.06.08-1
|
||||
manylinux_2_28 = quay.io/pypa/manylinux_2_28_x86_64:2025.06.08-1
|
||||
manylinux_2_34 = quay.io/pypa/manylinux_2_34_x86_64:2025.06.08-1
|
||||
|
||||
[pypy_i686]
|
||||
manylinux2014 = quay.io/pypa/manylinux2014_i686:2025.06.04-1
|
||||
manylinux2014 = quay.io/pypa/manylinux2014_i686:2025.06.08-1
|
||||
|
||||
[pypy_aarch64]
|
||||
manylinux2014 = quay.io/pypa/manylinux2014_aarch64:2025.06.04-1
|
||||
manylinux_2_28 = quay.io/pypa/manylinux_2_28_aarch64:2025.06.04-1
|
||||
manylinux_2_34 = quay.io/pypa/manylinux_2_34_aarch64:2025.06.04-1
|
||||
manylinux2014 = quay.io/pypa/manylinux2014_aarch64:2025.06.08-1
|
||||
manylinux_2_28 = quay.io/pypa/manylinux_2_28_aarch64:2025.06.08-1
|
||||
manylinux_2_34 = quay.io/pypa/manylinux_2_34_aarch64:2025.06.08-1
|
||||
|
||||
[armv7l]
|
||||
manylinux_2_31 = quay.io/pypa/manylinux_2_31_armv7l:2025.06.04-1
|
||||
musllinux_1_2 = quay.io/pypa/musllinux_1_2_armv7l:2025.06.04-1
|
||||
manylinux_2_31 = quay.io/pypa/manylinux_2_31_armv7l:2025.06.08-1
|
||||
musllinux_1_2 = quay.io/pypa/musllinux_1_2_armv7l:2025.06.08-1
|
||||
|
||||
[riscv64]
|
||||
|
||||
|
||||
@@ -179,6 +179,10 @@
|
||||
"name": "cpython-3.12.11+20250604-s390x-unknown-linux-gnu-install_only.tar.gz",
|
||||
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250604/cpython-3.12.11%2B20250604-s390x-unknown-linux-gnu-install_only.tar.gz"
|
||||
},
|
||||
{
|
||||
"name": "cpython-3.12.11+20250604-x86_64-apple-darwin-install_only.tar.gz",
|
||||
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250604/cpython-3.12.11%2B20250604-x86_64-apple-darwin-install_only.tar.gz"
|
||||
},
|
||||
{
|
||||
"name": "cpython-3.12.11+20250604-x86_64-pc-windows-msvc-install_only.tar.gz",
|
||||
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250604/cpython-3.12.11%2B20250604-x86_64-pc-windows-msvc-install_only.tar.gz"
|
||||
@@ -199,10 +203,6 @@
|
||||
"name": "cpython-3.12.11+20250604-x86_64_v2-unknown-linux-musl-install_only.tar.gz",
|
||||
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250604/cpython-3.12.11%2B20250604-x86_64_v2-unknown-linux-musl-install_only.tar.gz"
|
||||
},
|
||||
{
|
||||
"name": "cpython-3.12.11+20250604-x86_64-apple-darwin-install_only.tar.gz",
|
||||
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250604/cpython-3.12.11%2B20250604-x86_64-apple-darwin-install_only.tar.gz"
|
||||
},
|
||||
{
|
||||
"name": "cpython-3.12.11+20250604-x86_64_v3-unknown-linux-gnu-install_only.tar.gz",
|
||||
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250604/cpython-3.12.11%2B20250604-x86_64_v3-unknown-linux-gnu-install_only.tar.gz"
|
||||
@@ -315,6 +315,10 @@
|
||||
"name": "cpython-3.14.0b1+20250604-ppc64le-unknown-linux-gnu-install_only.tar.gz",
|
||||
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250604/cpython-3.14.0b1%2B20250604-ppc64le-unknown-linux-gnu-install_only.tar.gz"
|
||||
},
|
||||
{
|
||||
"name": "cpython-3.14.0b1+20250604-riscv64-unknown-linux-gnu-install_only.tar.gz",
|
||||
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250604/cpython-3.14.0b1%2B20250604-riscv64-unknown-linux-gnu-install_only.tar.gz"
|
||||
},
|
||||
{
|
||||
"name": "cpython-3.14.0b1+20250604-s390x-unknown-linux-gnu-install_only.tar.gz",
|
||||
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250604/cpython-3.14.0b1%2B20250604-s390x-unknown-linux-gnu-install_only.tar.gz"
|
||||
@@ -359,10 +363,6 @@
|
||||
"name": "cpython-3.14.0b1+20250604-x86_64_v4-unknown-linux-musl-install_only.tar.gz",
|
||||
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250604/cpython-3.14.0b1%2B20250604-x86_64_v4-unknown-linux-musl-install_only.tar.gz"
|
||||
},
|
||||
{
|
||||
"name": "cpython-3.14.0b1+20250604-riscv64-unknown-linux-gnu-install_only.tar.gz",
|
||||
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250604/cpython-3.14.0b1%2B20250604-riscv64-unknown-linux-gnu-install_only.tar.gz"
|
||||
},
|
||||
{
|
||||
"name": "cpython-3.9.23+20250604-aarch64-apple-darwin-install_only.tar.gz",
|
||||
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250604/cpython-3.9.23%2B20250604-aarch64-apple-darwin-install_only.tar.gz"
|
||||
|
||||
@@ -18,6 +18,15 @@ If you've used previous versions of the beta:
|
||||
- ⚠️ Previous betas of v3.0 changed the working directory for tests. This has been rolled back to the v2.x behaviour, so you might need to change configs if you adapted to the beta 1 or 2 behaviour. See [issue #2406](https://github.com/pypa/cibuildwheel/issues/2406) for more information.
|
||||
- ⚠️ GraalPy shipped with the identifier `gp242-*` in previous betas, this has been changed to `gp311_242-*` to be consistent with other interpreters, and to fix a bug with GraalPy and project requires-python detection. If you were using GraalPy, you might need to update your config to use the new identifier.
|
||||
- ⚠️ `test-sources` now uses `project` directory instead of the `package` directory (matching the docs).
|
||||
- ⚠️ 32-bit linux builds were removed from `"auto"` (the default), now require `"auto32"` or explicit archs, as modern manylinux images (including our new default) do not support them.
|
||||
|
||||
|
||||
#### v3.0.0rc3
|
||||
|
||||
_11 June 2025_
|
||||
|
||||
- 🛠 32-bit linux builds removed from `"auto"`, requires explicit `"auto32"`. (#2458)
|
||||
- 📚 Warn that `pyodide-version` is experimental. (#2450)
|
||||
|
||||
#### v3.0.0rc2
|
||||
|
||||
|
||||
+3
-3
@@ -60,7 +60,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:
|
||||
|
||||
```yaml
|
||||
uses: pypa/cibuildwheel@v3.0.0rc2
|
||||
uses: pypa/cibuildwheel@v3.0.0rc3
|
||||
```
|
||||
|
||||
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.
|
||||
@@ -82,7 +82,7 @@ The second option, and the only one that supports other CI systems, is using a `
|
||||
|
||||
```bash
|
||||
# requirements-cibw.txt
|
||||
cibuildwheel==3.0.0rc2
|
||||
cibuildwheel==3.0.0rc3
|
||||
```
|
||||
|
||||
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:
|
||||
@@ -247,7 +247,7 @@ Solutions to this vary, but the simplest is to use pipx:
|
||||
# most runners have pipx preinstalled, but in case you don't
|
||||
python3 -m pip install pipx
|
||||
|
||||
pipx run cibuildwheel==3.0.0rc2 --output-dir wheelhouse
|
||||
pipx run cibuildwheel==3.0.0rc3 --output-dir wheelhouse
|
||||
pipx run twine upload wheelhouse/*.whl
|
||||
```
|
||||
|
||||
|
||||
+37
-8
@@ -191,10 +191,10 @@ Options:
|
||||
- Windows: `AMD64` `x86` `ARM64`
|
||||
- Pyodide: `wasm32`
|
||||
- iOS: `arm64_iphoneos` `arm64_iphonesimulator` `x86_64_iphonesimulator`
|
||||
- `auto`: The default archs for your machine - see the table below.
|
||||
- `auto64`: Just the 64-bit auto archs
|
||||
- `auto32`: Just the 32-bit auto archs
|
||||
- `native`: the native arch of the build machine - Matches [`platform.machine()`](https://docs.python.org/3/library/platform.html#platform.machine).
|
||||
- `auto`: The recommended archs for your machine - see the table below.
|
||||
- `auto64`: The 64-bit arch(s) supported by your machine (includes device and simulator for iOS)
|
||||
- `auto32`: The 32-bit arch supported by your machine
|
||||
- `native`: the native arch of the build machine - matches [`platform.machine()`](https://docs.python.org/3/library/platform.html#platform.machine).
|
||||
- `all` : expands to all the architectures supported on this OS. You may want
|
||||
to use [`build`](#build-skip) with this option to target specific
|
||||
architectures via build selectors.
|
||||
@@ -205,16 +205,34 @@ Default: `auto`
|
||||
|
||||
| Runner | `native` | `auto` | `auto64` | `auto32` |
|
||||
|---|---|---|---|---|
|
||||
| Linux / Intel | `x86_64` | `x86_64` `i686` | `x86_64` | `i686` |
|
||||
| Windows / Intel | `AMD64` | `AMD64` `x86` | `AMD64` | `x86` |
|
||||
| Linux / Intel 64-bit | `x86_64` | `x86_64` | `x86_64` | `i686` |
|
||||
| Linux / Intel 32-bit | `i686` | `i686` | | `i686` |
|
||||
| Linux / Arm 64-bit | `aarch64` | `aarch64` | `aarch64` | `armv7l`¹ |
|
||||
| Linux / Arm 32-bit | `armv7l` | `armv7l` | | `armv7l` |
|
||||
| Windows / Intel 64-bit | `AMD64` | `AMD64` `x86` | `AMD64` | `x86` |
|
||||
| Windows / Intel 32-bit | `x86` | `x86` | | `x86` |
|
||||
| Windows / ARM64 | `ARM64` | `ARM64` | `ARM64` | |
|
||||
| macOS / Intel | `x86_64` | `x86_64` | `x86_64` | |
|
||||
| macOS / Apple Silicon | `arm64` | `arm64` | `arm64` | |
|
||||
| iOS on macOS / Intel | `x86_64_iphonesimulator` | `x86_64_iphonesimulator` | `x86_64_iphonesimulator` | |
|
||||
| iOS on macOS / Apple Silicon | `arm64_iphonesimulator` | `arm64_iphoneos` `arm64_iphonesimulator` | `arm64_iphoneos` `arm64_iphonesimulator` |
|
||||
|
||||
¹: This will only be included if the runner supports it.
|
||||
|
||||
If not listed above, `auto` is the same as `native`.
|
||||
|
||||
!!! warning
|
||||
The `auto` option only includes 32-bit architectures if they are
|
||||
commonly built. `cibuildwheel` 3.0 removed 32-bit Linux builds from `auto`,
|
||||
and a future release may remove 32-bit Windows builds from `auto` as well.
|
||||
If you know you need them, please include `auto32`. Note that modern
|
||||
manylinux image do not support 32-bit builds. If you want to avoid 32-bit
|
||||
Windows builds today, feel free to use `auto64`.
|
||||
|
||||
!!! note
|
||||
Pyodide currently ignores the architecture setting, as it always builds for
|
||||
`wasm32`.
|
||||
|
||||
[setup-qemu-action]: https://github.com/docker/setup-qemu-action
|
||||
[binfmt]: https://hub.docker.com/r/tonistiigi/binfmt
|
||||
|
||||
@@ -238,6 +256,10 @@ This option can also be set using the [command-line option](#command-line)
|
||||
# On an Linux Intel runner with qemu installed, build Intel and ARM wheels
|
||||
[tool.cibuildwheel.linux]
|
||||
archs = ["auto", "aarch64"]
|
||||
|
||||
# Build all 32-bit and 64-bit wheels natively buildable on the image
|
||||
[tool.cibuildwheel]
|
||||
archs = ["auto64", "auto32"]
|
||||
```
|
||||
|
||||
!!! tab examples "Environment variables"
|
||||
@@ -250,12 +272,13 @@ This option can also be set using the [command-line option](#command-line)
|
||||
|
||||
# On an Linux Intel runner with qemu installed, build Intel and ARM wheels
|
||||
CIBW_ARCHS_LINUX: "auto aarch64"
|
||||
|
||||
# Build all 32-bit and 64-bit wheels natively buildable on the image
|
||||
CIBW_ARCHS: "auto64 auto32"
|
||||
```
|
||||
|
||||
Separate multiple archs with a space.
|
||||
|
||||
|
||||
|
||||
It is generally recommended to use the environment variable or
|
||||
command-line option for Linux, as selecting archs often depends
|
||||
on your specific runner having qemu installed.
|
||||
@@ -1253,6 +1276,12 @@ The available Pyodide versions are determined by the version of `pyodide-build`
|
||||
!!! tip
|
||||
You can set the version of `pyodide-build` using the [`dependency-versions`](#dependency-versions) option.
|
||||
|
||||
!!! warning
|
||||
This option is considered experimental, and might be converted to a more general mechanism in a future minor cibuildwheel release.
|
||||
|
||||
!!! warning
|
||||
Make sure to scope it to one specific pyodide identifier with overrides if using the `pyodide-prerelease` enable.
|
||||
|
||||
#### Examples
|
||||
|
||||
!!! tab examples "pyproject.toml"
|
||||
|
||||
@@ -71,8 +71,8 @@ title: Working examples
|
||||
| [mosec][] | ![github icon][] | ![linux icon][] ![apple icon][] | A machine learning model serving framework powered by Rust |
|
||||
| [Picologging][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | A high-performance logging library for Python. |
|
||||
| [pybind11 cmake_example][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Example pybind11 module built with a CMake-based build system |
|
||||
| [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. |
|
||||
| [Rtree][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Rtree: spatial index for Python GIS |
|
||||
| [KDEpy][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Kernel Density Estimation in Python |
|
||||
| [dd-trace-py][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Uses custom alternate arch emulation on GitHub |
|
||||
| [tgcalls][] | ![github icon][] | ![apple icon][] ![windows icon][] | Python `pybind11` binding to Telegram's WebRTC library with third party dependencies like `OpenSSL`, `MozJPEG`, `FFmpeg`, etc. |
|
||||
@@ -81,8 +81,8 @@ title: Working examples
|
||||
| [sourmash][] | ![github icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | Quickly search, compare, and analyze genomic and metagenomic data sets. |
|
||||
| [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. |
|
||||
| [python-snappy][] | ![github icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | Python bindings for the snappy google library |
|
||||
| [jq.py][] | ![travisci icon][] | ![apple icon][] ![linux icon][] | Python bindings for jq |
|
||||
| [cyvcf2][] | ![github icon][] | ![apple icon][] ![linux icon][] | cython + htslib == fast VCF and BCF processing |
|
||||
| [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. |
|
||||
| [Tokenizer][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Fast and customizable text tokenization library with BPE and SentencePiece support |
|
||||
| [iminuit][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Jupyter-friendly Python interface for C++ MINUIT2 |
|
||||
@@ -94,8 +94,8 @@ title: Working examples
|
||||
| [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 |
|
||||
| [power-grid-model][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Python/C++ library for distribution power system analysis |
|
||||
| [bx-python][] | ![travisci icon][] | ![apple icon][] ![linux icon][] | A library that includes Cython extensions. |
|
||||
| [pybase64][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Fast Base64 encoding/decoding in 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. |
|
||||
| [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. |
|
||||
| [Python-WebRTC][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | a Python extension that provides bindings to WebRTC M92 |
|
||||
@@ -181,8 +181,8 @@ title: Working examples
|
||||
[mosec]: https://github.com/mosecorg/mosec
|
||||
[Picologging]: https://github.com/microsoft/picologging
|
||||
[pybind11 cmake_example]: https://github.com/pybind/cmake_example
|
||||
[Rtree]: https://github.com/Toblerity/rtree
|
||||
[markupsafe]: https://github.com/pallets/markupsafe
|
||||
[Rtree]: https://github.com/Toblerity/rtree
|
||||
[KDEpy]: https://github.com/tommyod/KDEpy
|
||||
[dd-trace-py]: https://github.com/DataDog/dd-trace-py
|
||||
[tgcalls]: https://github.com/MarshalX/tgcalls
|
||||
@@ -191,8 +191,8 @@ title: Working examples
|
||||
[sourmash]: https://github.com/sourmash-bio/sourmash
|
||||
[abess]: https://github.com/abess-team/abess
|
||||
[python-snappy]: https://github.com/intake/python-snappy
|
||||
[jq.py]: https://github.com/mwilliamson/jq.py
|
||||
[cyvcf2]: https://github.com/brentp/cyvcf2
|
||||
[jq.py]: https://github.com/mwilliamson/jq.py
|
||||
[matrixprofile]: https://github.com/matrix-profile-foundation/matrixprofile
|
||||
[Tokenizer]: https://github.com/OpenNMT/Tokenizer
|
||||
[iminuit]: https://github.com/scikit-hep/iminuit
|
||||
@@ -204,8 +204,8 @@ title: Working examples
|
||||
[iDynTree]: https://github.com/robotology/idyntree
|
||||
[streaming-form-data]: https://github.com/siddhantgoel/streaming-form-data
|
||||
[power-grid-model]: https://github.com/PowerGridModel/power-grid-model
|
||||
[bx-python]: https://github.com/bxlab/bx-python
|
||||
[pybase64]: https://github.com/mayeut/pybase64
|
||||
[bx-python]: https://github.com/bxlab/bx-python
|
||||
[boost-histogram]: https://github.com/scikit-hep/boost-histogram
|
||||
[Imagecodecs (fork)]: https://github.com/czaki/imagecodecs_build
|
||||
[Python-WebRTC]: https://github.com/MarshalX/python-webrtc
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
jobs:
|
||||
- job: linux
|
||||
pool: {vmImage: 'Ubuntu-20.04'}
|
||||
pool: {vmImage: 'ubuntu-latest'}
|
||||
steps:
|
||||
- task: UsePythonVersion@0
|
||||
- bash: |
|
||||
set -o errexit
|
||||
python3 -m pip install --upgrade pip
|
||||
pip3 install cibuildwheel==3.0.0rc2
|
||||
pip3 install cibuildwheel==3.0.0rc3
|
||||
displayName: Install dependencies
|
||||
- bash: cibuildwheel --output-dir wheelhouse .
|
||||
displayName: Build wheels
|
||||
@@ -14,13 +14,13 @@ jobs:
|
||||
inputs: {pathtoPublish: 'wheelhouse'}
|
||||
|
||||
- job: macos
|
||||
pool: {vmImage: 'macOS-13'}
|
||||
pool: {vmImage: 'macOS-latest'}
|
||||
steps:
|
||||
- task: UsePythonVersion@0
|
||||
- bash: |
|
||||
set -o errexit
|
||||
python3 -m pip install --upgrade pip
|
||||
python3 -m pip install cibuildwheel==3.0.0rc2
|
||||
python3 -m pip install cibuildwheel==3.0.0rc3
|
||||
displayName: Install dependencies
|
||||
- bash: cibuildwheel --output-dir wheelhouse .
|
||||
displayName: Build wheels
|
||||
@@ -28,13 +28,13 @@ jobs:
|
||||
inputs: {pathtoPublish: wheelhouse}
|
||||
|
||||
- job: windows
|
||||
pool: {vmImage: 'windows-2019'}
|
||||
pool: {vmImage: 'windows-latest'}
|
||||
steps:
|
||||
- task: UsePythonVersion@0
|
||||
- bash: |
|
||||
set -o errexit
|
||||
python -m pip install --upgrade pip
|
||||
pip install cibuildwheel==3.0.0rc2
|
||||
pip install cibuildwheel==3.0.0rc3
|
||||
displayName: Install dependencies
|
||||
- bash: cibuildwheel --output-dir wheelhouse .
|
||||
displayName: Build wheels
|
||||
|
||||
@@ -11,7 +11,7 @@ jobs:
|
||||
- run:
|
||||
name: Build the Linux wheels.
|
||||
command: |
|
||||
python3 -m pip install --user cibuildwheel==3.0.0rc2
|
||||
python3 -m pip install --user cibuildwheel==3.0.0rc3
|
||||
cibuildwheel --output-dir wheelhouse
|
||||
- store_artifacts:
|
||||
path: wheelhouse/
|
||||
@@ -28,7 +28,7 @@ jobs:
|
||||
- run:
|
||||
name: Build the Linux aarch64 wheels.
|
||||
command: |
|
||||
python3 -m pip install --user cibuildwheel==3.0.0rc2
|
||||
python3 -m pip install --user cibuildwheel==3.0.0rc3
|
||||
python3 -m cibuildwheel --output-dir wheelhouse
|
||||
- store_artifacts:
|
||||
path: wheelhouse/
|
||||
@@ -44,7 +44,7 @@ jobs:
|
||||
name: Build the OS X wheels.
|
||||
command: |
|
||||
sudo softwareupdate --install-rosetta --agree-to-license # for python<=3.8 or x86_64/universal2 tests
|
||||
pip3 install cibuildwheel==3.0.0rc2
|
||||
pip3 install cibuildwheel==3.0.0rc3
|
||||
cibuildwheel --output-dir wheelhouse
|
||||
- store_artifacts:
|
||||
path: wheelhouse/
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
build_and_store_wheels: &BUILD_AND_STORE_WHEELS
|
||||
install_cibuildwheel_script:
|
||||
- python -m pip install cibuildwheel==3.0.0rc2
|
||||
- python -m pip install cibuildwheel==3.0.0rc3
|
||||
run_cibuildwheel_script:
|
||||
- cibuildwheel
|
||||
wheels_artifacts:
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
build_and_store_wheels: &BUILD_AND_STORE_WHEELS
|
||||
install_cibuildwheel_script:
|
||||
- python -m pip install cibuildwheel==3.0.0rc2
|
||||
- python -m pip install cibuildwheel==3.0.0rc3
|
||||
run_cibuildwheel_script:
|
||||
- cibuildwheel
|
||||
wheels_artifacts:
|
||||
@@ -52,9 +52,13 @@ windows_x86_task:
|
||||
memory: 4G
|
||||
|
||||
install_pre_requirements_script:
|
||||
- certutil -generateSSTFromWU roots.sst
|
||||
- certutil -addstore -f root roots.sst
|
||||
- del roots.sst
|
||||
- choco install -y --no-progress python3 --version 3.12.4
|
||||
- refreshenv
|
||||
- echo PATH=%PATH% >> "%CIRRUS_ENV%"
|
||||
- powershell -Command "$cleanPath = $env:PATH -replace ';+$', ''; Add-Content -Path $env:CIRRUS_ENV -Value ('PATH=' + $cleanPath)"
|
||||
|
||||
<<: *BUILD_AND_STORE_WHEELS
|
||||
|
||||
macos_arm64_task:
|
||||
|
||||
@@ -44,7 +44,7 @@ jobs:
|
||||
- uses: actions/checkout@v4
|
||||
|
||||
- name: Build wheels
|
||||
uses: pypa/cibuildwheel@v3.0.0rc2
|
||||
uses: pypa/cibuildwheel@v3.0.0rc3
|
||||
env:
|
||||
CIBW_PLATFORM: ${{ matrix.platform }}
|
||||
CIBW_ARCHS: ${{ matrix.archs }}
|
||||
|
||||
@@ -15,7 +15,7 @@ jobs:
|
||||
- uses: actions/checkout@v4
|
||||
|
||||
- name: Build wheels
|
||||
uses: pypa/cibuildwheel@v3.0.0rc2
|
||||
uses: pypa/cibuildwheel@v3.0.0rc3
|
||||
# env:
|
||||
# CIBW_SOME_OPTION: value
|
||||
# ...
|
||||
|
||||
@@ -15,7 +15,7 @@ jobs:
|
||||
- uses: actions/checkout@v4
|
||||
|
||||
- name: Build wheels
|
||||
run: pipx run cibuildwheel==3.0.0rc2
|
||||
run: pipx run cibuildwheel==3.0.0rc3
|
||||
|
||||
- uses: actions/upload-artifact@v4
|
||||
with:
|
||||
|
||||
@@ -21,7 +21,7 @@ jobs:
|
||||
platforms: all
|
||||
|
||||
- name: Build wheels
|
||||
uses: pypa/cibuildwheel@v3.0.0rc2
|
||||
uses: pypa/cibuildwheel@v3.0.0rc3
|
||||
env:
|
||||
# configure cibuildwheel on Linux to build native archs ('auto'),
|
||||
# and to split the remaining architectures between the x86_64 and
|
||||
|
||||
@@ -12,7 +12,7 @@ linux:
|
||||
DOCKER_TLS_CERTDIR: ""
|
||||
script:
|
||||
- curl -sSL https://get.docker.com/ | sh
|
||||
- python -m pip install cibuildwheel==3.0.0rc2
|
||||
- python -m pip install cibuildwheel==3.0.0rc3
|
||||
- cibuildwheel --output-dir wheelhouse
|
||||
artifacts:
|
||||
paths:
|
||||
@@ -23,7 +23,7 @@ windows:
|
||||
before_script:
|
||||
- choco install python -y --allow-downgrade --version 3.12.4
|
||||
- choco install git.install -y
|
||||
- py -m pip install cibuildwheel==3.0.0rc2
|
||||
- py -m pip install cibuildwheel==3.0.0rc3
|
||||
script:
|
||||
- py -m cibuildwheel --output-dir wheelhouse --platform windows
|
||||
artifacts:
|
||||
@@ -35,7 +35,7 @@ windows:
|
||||
macos:
|
||||
image: macos-14-xcode-15
|
||||
before_script:
|
||||
- python3 -m pip install cibuildwheel==3.0.0rc2
|
||||
- python3 -m pip install cibuildwheel==3.0.0rc3
|
||||
script:
|
||||
- python3 -m cibuildwheel --output-dir wheelhouse
|
||||
artifacts:
|
||||
|
||||
@@ -14,7 +14,7 @@ linux:
|
||||
- curl -sSL https://get.docker.com/ | sh
|
||||
# Warning: This is extremely slow, be careful with how many wheels you build
|
||||
- docker run --rm --privileged multiarch/qemu-user-static --reset -p yes
|
||||
- python -m pip install cibuildwheel==3.0.0rc2
|
||||
- python -m pip install cibuildwheel==3.0.0rc3
|
||||
# Assuming your CI runner's default architecture is x86_64...
|
||||
- cibuildwheel --output-dir wheelhouse --platform linux --archs aarch64
|
||||
artifacts:
|
||||
|
||||
@@ -20,7 +20,7 @@ jobs:
|
||||
- ln -s /c/Python312/python.exe /c/Python312/python3.exe
|
||||
|
||||
install:
|
||||
- python3 -m pip install cibuildwheel==3.0.0rc2
|
||||
- python3 -m pip install cibuildwheel==3.0.0rc3
|
||||
|
||||
script:
|
||||
# build the wheels, put them into './dist'
|
||||
|
||||
@@ -26,7 +26,7 @@ jobs:
|
||||
- ln -s /c/Python312/python.exe /c/Python312/python3.exe
|
||||
|
||||
install:
|
||||
- python3 -m pip install cibuildwheel==3.0.0rc2
|
||||
- python3 -m pip install cibuildwheel==3.0.0rc3
|
||||
|
||||
script:
|
||||
# build the wheels, put them into './wheelhouse'
|
||||
|
||||
@@ -52,7 +52,7 @@ jobs:
|
||||
- stage: deploy
|
||||
name: Build and deploy Linux wheels
|
||||
services: docker
|
||||
install: python3 -m pip install cibuildwheel==3.0.0rc2 twine
|
||||
install: python3 -m pip install cibuildwheel==3.0.0rc3 twine
|
||||
script: python3 -m cibuildwheel --output-dir wheelhouse
|
||||
after_success: python3 -m twine upload --skip-existing wheelhouse/*.whl
|
||||
# Deploy on windows
|
||||
@@ -60,7 +60,7 @@ jobs:
|
||||
name: Build and deploy Windows wheels
|
||||
os: windows
|
||||
language: shell
|
||||
install: python3 -m pip install cibuildwheel==3.0.0rc2 twine
|
||||
install: python3 -m pip install cibuildwheel==3.0.0rc3 twine
|
||||
script: python3 -m cibuildwheel --output-dir wheelhouse
|
||||
after_success: python3 -m twine upload --skip-existing wheelhouse/*.whl
|
||||
|
||||
|
||||
+1
-1
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
|
||||
|
||||
[project]
|
||||
name = "cibuildwheel"
|
||||
version = "3.0.0rc2"
|
||||
version = "3.0.0rc3"
|
||||
description = "Build Python wheels on CI with minimal configuration."
|
||||
readme = "README.md"
|
||||
license = "BSD-2-Clause"
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
import socket
|
||||
import textwrap
|
||||
|
||||
from . import test_projects, utils
|
||||
@@ -24,6 +25,9 @@ def test(tmp_path):
|
||||
project_dir = tmp_path / "project"
|
||||
project_with_ssl_tests.generate(project_dir)
|
||||
|
||||
# warm up connection
|
||||
socket.getaddrinfo("tls-v1-2.badssl.com", 443)
|
||||
|
||||
actual_wheels = utils.cibuildwheel_run(project_dir)
|
||||
|
||||
expected_wheels = utils.expected_wheels("spam", "0.1.0")
|
||||
|
||||
+2
-1
@@ -175,6 +175,7 @@ def expected_wheels(
|
||||
include_universal2: bool = False,
|
||||
single_python: bool = False,
|
||||
single_arch: bool = False,
|
||||
full_auto: bool = False,
|
||||
) -> list[str]:
|
||||
"""
|
||||
Returns the expected wheels from a run of cibuildwheel.
|
||||
@@ -194,7 +195,7 @@ def expected_wheels(
|
||||
|
||||
architectures = [machine_arch]
|
||||
if not single_arch:
|
||||
if platform == "linux":
|
||||
if platform == "linux" and full_auto:
|
||||
if machine_arch == "x86_64":
|
||||
architectures.append("i686")
|
||||
elif (
|
||||
|
||||
@@ -34,8 +34,8 @@ def test_arch_auto(platform_machine):
|
||||
arch_set = Architecture.auto_archs("linux")
|
||||
expected = {
|
||||
"32": {Architecture.i686},
|
||||
"64": {Architecture.x86_64, Architecture.i686},
|
||||
"arm": {Architecture.aarch64, Architecture.armv7l},
|
||||
"64": {Architecture.x86_64},
|
||||
"arm": {Architecture.aarch64},
|
||||
}
|
||||
assert arch_set == expected[machine_name]
|
||||
|
||||
@@ -94,5 +94,24 @@ def test_arch_auto_no_aarch32(monkeypatch):
|
||||
arch_set = Architecture.parse_config("auto64", "linux")
|
||||
assert arch_set == {Architecture.aarch64}
|
||||
|
||||
monkeypatch.setattr(cibuildwheel.architecture, "_check_aarch32_el0", lambda: True)
|
||||
arch_set = Architecture.parse_config("auto32", "linux")
|
||||
assert len(arch_set) == 0
|
||||
assert arch_set == {Architecture.armv7l}
|
||||
|
||||
monkeypatch.setattr(cibuildwheel.architecture, "_check_aarch32_el0", lambda: False)
|
||||
arch_set = Architecture.parse_config("auto32", "linux")
|
||||
assert arch_set == set()
|
||||
|
||||
|
||||
def test_arch_native_on_ios(monkeypatch):
|
||||
monkeypatch.setattr(sys, "platform", "darwin")
|
||||
monkeypatch.setattr(platform_module, "machine", lambda: "arm64")
|
||||
arch_set = Architecture.parse_config("native", platform="ios")
|
||||
assert arch_set == {Architecture.arm64_iphonesimulator}
|
||||
|
||||
|
||||
def test_arch_auto_on_ios(monkeypatch):
|
||||
monkeypatch.setattr(sys, "platform", "darwin")
|
||||
monkeypatch.setattr(platform_module, "machine", lambda: "arm64")
|
||||
arch_set = Architecture.parse_config("auto", platform="ios")
|
||||
assert arch_set == {Architecture.arm64_iphonesimulator, Architecture.arm64_iphoneos}
|
||||
|
||||
@@ -79,7 +79,7 @@ def test_archs_default(platform, intercepted_build_args):
|
||||
options = intercepted_build_args.args[0]
|
||||
|
||||
if platform == "linux":
|
||||
assert options.globals.architectures == {Architecture.x86_64, Architecture.i686}
|
||||
assert options.globals.architectures == {Architecture.x86_64}
|
||||
elif platform == "windows":
|
||||
assert options.globals.architectures == {Architecture.AMD64, Architecture.x86}
|
||||
else:
|
||||
|
||||
@@ -51,6 +51,7 @@ def mock_build_container(monkeypatch):
|
||||
@pytest.mark.usefixtures("mock_build_container", "fake_package_dir")
|
||||
def test_build_default_launches(monkeypatch):
|
||||
monkeypatch.setattr(sys, "argv", [*sys.argv, "--platform=linux"])
|
||||
monkeypatch.setenv("CIBW_ARCHS", "auto64 auto32")
|
||||
monkeypatch.delenv("CIBW_ENABLE", raising=False)
|
||||
|
||||
main()
|
||||
@@ -105,6 +106,7 @@ def test_build_with_override_launches(monkeypatch, tmp_path):
|
||||
manylinux-x86_64-image = "manylinux_2_28"
|
||||
musllinux-x86_64-image = "musllinux_1_2"
|
||||
enable = ["pypy", "pypy-eol", "graalpy", "cpython-freethreading"]
|
||||
archs = ["auto64", "auto32"]
|
||||
|
||||
# Before Python 3.10, use manylinux2014
|
||||
[[tool.cibuildwheel.overrides]]
|
||||
|
||||
@@ -25,6 +25,7 @@ PYPROJECT_1 = """
|
||||
[tool.cibuildwheel]
|
||||
build = ["cp38-*", "cp313-*"]
|
||||
skip = ["*musllinux*"]
|
||||
archs = ["auto64", "auto32"]
|
||||
environment = {FOO="BAR"}
|
||||
|
||||
test-command = "pyproject"
|
||||
|
||||
Reference in New Issue
Block a user