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
|
run_tests: &RUN_TESTS
|
||||||
install_cibuildwheel_script:
|
install_cibuildwheel_script:
|
||||||
- python -m pip install dependency-groups
|
- python -m pip install -U pip
|
||||||
- python -m dependency_groups test | xargs python -m pip install -e.
|
- python -m pip install -e. --group test
|
||||||
run_cibuildwheel_tests_script:
|
run_cibuildwheel_tests_script:
|
||||||
- python ./bin/run_tests.py
|
- python ./bin/run_tests.py
|
||||||
|
|
||||||
@@ -55,9 +55,12 @@ windows_x86_task:
|
|||||||
memory: 8G
|
memory: 8G
|
||||||
|
|
||||||
install_pre_requirements_script:
|
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
|
- choco install -y --no-progress python3 --version 3.12.4
|
||||||
- refreshenv
|
- refreshenv
|
||||||
- echo PATH=%PATH% >> "%CIRRUS_ENV%"
|
- powershell -Command "$cleanPath = $env:PATH -replace ';+$', ''; Add-Content -Path $env:CIRRUS_ENV -Value ('PATH=' + $cleanPath)"
|
||||||
<<: *RUN_TESTS
|
<<: *RUN_TESTS
|
||||||
|
|
||||||
macos_arm64_task:
|
macos_arm64_task:
|
||||||
|
|||||||
@@ -12,8 +12,19 @@ on:
|
|||||||
- reopened
|
- reopened
|
||||||
- labeled
|
- labeled
|
||||||
paths-ignore:
|
paths-ignore:
|
||||||
- 'docs/**'
|
- .ci*
|
||||||
|
- bin/*
|
||||||
|
- docs/**
|
||||||
|
- examples/azure-pipelines-*
|
||||||
|
- examples/ci*
|
||||||
|
- examples/travis-ci-*
|
||||||
- .pre-commit-config.yaml
|
- .pre-commit-config.yaml
|
||||||
|
- .readthedocs.yml
|
||||||
|
- .travis.yml
|
||||||
|
- README.md
|
||||||
|
- azure-pipelines.yml
|
||||||
|
- mkdocs.yml
|
||||||
|
- noxfile.py
|
||||||
workflow_dispatch:
|
workflow_dispatch:
|
||||||
# allow manual runs on branches without a PR
|
# allow manual runs on branches without a PR
|
||||||
|
|
||||||
|
|||||||
@@ -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.11.12
|
rev: v0.11.13
|
||||||
hooks:
|
hooks:
|
||||||
- id: ruff
|
- id: ruff
|
||||||
args: ["--fix", "--show-fixes"]
|
args: ["--fix", "--show-fixes"]
|
||||||
@@ -69,7 +69,7 @@ repos:
|
|||||||
pass_filenames: false
|
pass_filenames: false
|
||||||
entry: cog -c -P -r -I ./bin README.md
|
entry: cog -c -P -r -I ./bin README.md
|
||||||
files: '^(README\.md|docs/changelog\.md|docs/options\.md|bin/readme.*)$'
|
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
|
- repo: https://github.com/codespell-project/codespell
|
||||||
rev: v2.4.1
|
rev: v2.4.1
|
||||||
|
|||||||
+1
-3
@@ -5,9 +5,7 @@ version: 2
|
|||||||
build:
|
build:
|
||||||
os: ubuntu-24.04
|
os: ubuntu-24.04
|
||||||
commands:
|
commands:
|
||||||
- asdf install python 3.14-dev
|
|
||||||
- asdf global python 3.14-dev
|
|
||||||
- asdf plugin add uv
|
- asdf plugin add uv
|
||||||
- asdf install uv latest
|
- asdf install uv latest
|
||||||
- asdf global 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
|
- uses: actions/setup-python@v5
|
||||||
|
|
||||||
- name: Install cibuildwheel
|
- name: Install cibuildwheel
|
||||||
run: python -m pip install cibuildwheel==3.0.0rc2
|
run: python -m pip install cibuildwheel==3.0.0rc3
|
||||||
|
|
||||||
- name: Build wheels
|
- name: Build wheels
|
||||||
run: python -m cibuildwheel --output-dir wheelhouse
|
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 |
|
| | [`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/).
|
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.
|
- ⚠️ 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.
|
- ⚠️ 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).
|
- ⚠️ `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
|
#### v3.0.0rc2
|
||||||
|
|
||||||
@@ -265,15 +274,7 @@ _3 June 2025_
|
|||||||
- 🛠 Use the standard Schema line for the integrated JSONSchema. (#2433)
|
- 🛠 Use the standard Schema line for the integrated JSONSchema. (#2433)
|
||||||
- 📚 Use Python 3.14 color output in docs CLI output. (#2407)
|
- 📚 Use Python 3.14 color output in docs CLI output. (#2407)
|
||||||
|
|
||||||
#### v3.0.0b4
|
<!-- [[[end]]] (sum: c1HE9PQmvW) -->
|
||||||
|
|
||||||
_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) -->
|
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|||||||
+15
-4
@@ -1,13 +1,24 @@
|
|||||||
pr:
|
pr:
|
||||||
paths:
|
paths:
|
||||||
exclude:
|
exclude:
|
||||||
- docs/*
|
- .github/**
|
||||||
|
- bin/*
|
||||||
|
- docs/**
|
||||||
|
- examples/github-*
|
||||||
|
- examples/ci*
|
||||||
|
- examples/travis-ci-*
|
||||||
|
- .ci*
|
||||||
- .pre-commit-config.yaml
|
- .pre-commit-config.yaml
|
||||||
|
- .readthedocs.yml
|
||||||
|
- .travis.yml
|
||||||
|
- README.md
|
||||||
|
- mkdocs.yml
|
||||||
|
- noxfile.py
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
- job: linux_311
|
- job: linux_311
|
||||||
timeoutInMinutes: 180
|
timeoutInMinutes: 180
|
||||||
pool: {vmImage: 'Ubuntu-22.04'}
|
pool: {vmImage: 'ubuntu-latest'}
|
||||||
steps:
|
steps:
|
||||||
- task: UsePythonVersion@0
|
- task: UsePythonVersion@0
|
||||||
inputs:
|
inputs:
|
||||||
@@ -25,7 +36,7 @@ jobs:
|
|||||||
python ./bin/run_tests.py
|
python ./bin/run_tests.py
|
||||||
|
|
||||||
- job: macos_311
|
- job: macos_311
|
||||||
pool: {vmImage: 'macOS-13'}
|
pool: {vmImage: 'macOS-latest'}
|
||||||
timeoutInMinutes: 120
|
timeoutInMinutes: 120
|
||||||
steps:
|
steps:
|
||||||
- task: UsePythonVersion@0
|
- task: UsePythonVersion@0
|
||||||
@@ -43,7 +54,7 @@ jobs:
|
|||||||
python ./bin/run_tests.py
|
python ./bin/run_tests.py
|
||||||
|
|
||||||
- job: windows_311
|
- job: windows_311
|
||||||
pool: {vmImage: 'windows-2019'}
|
pool: {vmImage: 'windows-latest'}
|
||||||
timeoutInMinutes: 180
|
timeoutInMinutes: 180
|
||||||
steps:
|
steps:
|
||||||
- task: UsePythonVersion@0
|
- task: UsePythonVersion@0
|
||||||
|
|||||||
@@ -25,25 +25,25 @@ def main() -> None:
|
|||||||
f"repos/astral-sh/python-build-standalone/releases/tags/{latest_tag}"
|
f"repos/astral-sh/python-build-standalone/releases/tags/{latest_tag}"
|
||||||
)["assets"]
|
)["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:
|
# Try to keep output order stable
|
||||||
name = github_asset["name"]
|
assets = sorted(assets, key=lambda x: x["name"])
|
||||||
if not name.endswith("install_only.tar.gz"):
|
|
||||||
continue
|
|
||||||
url = github_asset["browser_download_url"]
|
|
||||||
assets.append({"name": name, "url": url})
|
|
||||||
|
|
||||||
# Write the assets to the JSON file. One day, we might need to support
|
# 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
|
# multiple releases, but for now, we only support the latest one
|
||||||
json_file_contents: PythonBuildStandaloneReleaseData = {
|
json_file_contents = PythonBuildStandaloneReleaseData(
|
||||||
"releases": [
|
releases=[
|
||||||
{
|
{
|
||||||
"tag": latest_tag,
|
"tag": latest_tag,
|
||||||
"assets": assets,
|
"assets": assets,
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
)
|
||||||
|
|
||||||
with PYTHON_BUILD_STANDALONE_RELEASES.open("w", encoding="utf-8") as f:
|
with PYTHON_BUILD_STANDALONE_RELEASES.open("w", encoding="utf-8") as f:
|
||||||
json.dump(json_file_contents, f, indent=2)
|
json.dump(json_file_contents, f, indent=2)
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
__version__ = "3.0.0rc2"
|
__version__ = "3.0.0rc3"
|
||||||
|
|||||||
@@ -75,19 +75,19 @@ class Architecture(StrEnum):
|
|||||||
def parse_config(config: str, platform: PlatformName) -> "set[Architecture]":
|
def parse_config(config: str, platform: PlatformName) -> "set[Architecture]":
|
||||||
result = set()
|
result = set()
|
||||||
for arch_str in re.split(r"[\s,]+", config):
|
for arch_str in re.split(r"[\s,]+", config):
|
||||||
if arch_str == "auto":
|
match arch_str:
|
||||||
|
case "auto":
|
||||||
result |= Architecture.auto_archs(platform=platform)
|
result |= Architecture.auto_archs(platform=platform)
|
||||||
elif arch_str == "native":
|
case "native":
|
||||||
native_arch = Architecture.native_arch(platform=platform)
|
if native_arch := Architecture.native_arch(platform=platform):
|
||||||
if native_arch:
|
|
||||||
result.add(native_arch)
|
result.add(native_arch)
|
||||||
elif arch_str == "all":
|
case "all":
|
||||||
result |= Architecture.all_archs(platform=platform)
|
result |= Architecture.all_archs(platform=platform)
|
||||||
elif arch_str == "auto64":
|
case "auto64":
|
||||||
result |= Architecture.bitness_archs(platform=platform, bitness="64")
|
result |= Architecture.bitness_archs(platform=platform, bitness="64")
|
||||||
elif arch_str == "auto32":
|
case "auto32":
|
||||||
result |= Architecture.bitness_archs(platform=platform, bitness="32")
|
result |= Architecture.bitness_archs(platform=platform, bitness="32")
|
||||||
else:
|
case _:
|
||||||
try:
|
try:
|
||||||
result.add(Architecture(arch_str))
|
result.add(Architecture(arch_str))
|
||||||
except ValueError as e:
|
except ValueError as e:
|
||||||
@@ -142,17 +142,10 @@ class Architecture(StrEnum):
|
|||||||
return set() # can't build anything on this platform
|
return set() # can't build anything on this platform
|
||||||
result = {native_arch}
|
result = {native_arch}
|
||||||
|
|
||||||
if platform == "linux":
|
match platform:
|
||||||
if Architecture.x86_64 in result:
|
case "windows" if Architecture.AMD64 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)
|
result.add(Architecture.x86)
|
||||||
|
case "ios" if native_arch == Architecture.arm64_iphonesimulator:
|
||||||
elif platform == "ios" and native_arch == Architecture.arm64_iphonesimulator:
|
|
||||||
# Also build the device wheel if we're on ARM64.
|
# Also build the device wheel if we're on ARM64.
|
||||||
result.add(Architecture.arm64_iphoneos)
|
result.add(Architecture.arm64_iphoneos)
|
||||||
|
|
||||||
@@ -183,13 +176,34 @@ class Architecture(StrEnum):
|
|||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def bitness_archs(platform: PlatformName, bitness: Literal["64", "32"]) -> "set[Architecture]":
|
def bitness_archs(platform: PlatformName, bitness: Literal["64", "32"]) -> "set[Architecture]":
|
||||||
archs_32 = {Architecture.i686, Architecture.x86, Architecture.armv7l}
|
# This map maps 64-bit architectures to their 32-bit equivalents.
|
||||||
auto_archs = Architecture.auto_archs(platform)
|
archs_map = {
|
||||||
|
Architecture.x86_64: Architecture.i686,
|
||||||
|
Architecture.AMD64: Architecture.x86,
|
||||||
|
Architecture.aarch64: Architecture.armv7l,
|
||||||
|
}
|
||||||
|
native_arch = Architecture.native_arch(platform)
|
||||||
|
|
||||||
if bitness == "64":
|
if native_arch is None:
|
||||||
return auto_archs - archs_32
|
return set() # can't build anything on this platform
|
||||||
if bitness == "32":
|
|
||||||
return auto_archs & archs_32
|
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)
|
typing.assert_never(bitness)
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -72,7 +72,7 @@ pyodide-lock==0.1.0a7
|
|||||||
# via pyodide-build
|
# via pyodide-build
|
||||||
pyproject-hooks==1.2.0
|
pyproject-hooks==1.2.0
|
||||||
# via build
|
# via build
|
||||||
requests==2.32.3
|
requests==2.32.4
|
||||||
# via pyodide-build
|
# via pyodide-build
|
||||||
resolvelib==1.1.0
|
resolvelib==1.1.0
|
||||||
# via pyodide-build
|
# via pyodide-build
|
||||||
@@ -81,7 +81,7 @@ rich==14.0.0
|
|||||||
# pyodide-build
|
# pyodide-build
|
||||||
# pyodide-cli
|
# pyodide-cli
|
||||||
# typer
|
# typer
|
||||||
ruamel-yaml==0.18.12
|
ruamel-yaml==0.18.14
|
||||||
# via pyodide-build
|
# via pyodide-build
|
||||||
ruamel-yaml-clib==0.2.12
|
ruamel-yaml-clib==0.2.12
|
||||||
# via ruamel-yaml
|
# via ruamel-yaml
|
||||||
|
|||||||
@@ -72,7 +72,7 @@ pyodide-lock==0.1.0a7
|
|||||||
# via pyodide-build
|
# via pyodide-build
|
||||||
pyproject-hooks==1.2.0
|
pyproject-hooks==1.2.0
|
||||||
# via build
|
# via build
|
||||||
requests==2.32.3
|
requests==2.32.4
|
||||||
# via pyodide-build
|
# via pyodide-build
|
||||||
resolvelib==1.1.0
|
resolvelib==1.1.0
|
||||||
# via pyodide-build
|
# via pyodide-build
|
||||||
@@ -81,7 +81,7 @@ rich==14.0.0
|
|||||||
# pyodide-build
|
# pyodide-build
|
||||||
# pyodide-cli
|
# pyodide-cli
|
||||||
# typer
|
# typer
|
||||||
ruamel-yaml==0.18.12
|
ruamel-yaml==0.18.14
|
||||||
# via pyodide-build
|
# via pyodide-build
|
||||||
ruamel-yaml-clib==0.2.12
|
ruamel-yaml-clib==0.2.12
|
||||||
# via ruamel-yaml
|
# via ruamel-yaml
|
||||||
|
|||||||
@@ -30,5 +30,5 @@ typing-extensions==4.14.0
|
|||||||
# via delocate
|
# via delocate
|
||||||
virtualenv==20.31.2
|
virtualenv==20.31.2
|
||||||
# via -r cibuildwheel/resources/constraints.in
|
# via -r cibuildwheel/resources/constraints.in
|
||||||
zipp==3.22.0
|
zipp==3.23.0
|
||||||
# via importlib-metadata
|
# via importlib-metadata
|
||||||
|
|||||||
@@ -30,5 +30,5 @@ typing-extensions==4.14.0
|
|||||||
# via delocate
|
# via delocate
|
||||||
virtualenv==20.31.2
|
virtualenv==20.31.2
|
||||||
# via -r cibuildwheel/resources/constraints.in
|
# via -r cibuildwheel/resources/constraints.in
|
||||||
zipp==3.22.0
|
zipp==3.23.0
|
||||||
# via importlib-metadata
|
# via importlib-metadata
|
||||||
|
|||||||
@@ -1,47 +1,47 @@
|
|||||||
[x86_64]
|
[x86_64]
|
||||||
manylinux2014 = quay.io/pypa/manylinux2014_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.04-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.04-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.04-1
|
musllinux_1_2 = quay.io/pypa/musllinux_1_2_x86_64:2025.06.08-1
|
||||||
|
|
||||||
[i686]
|
[i686]
|
||||||
manylinux2014 = quay.io/pypa/manylinux2014_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.04-1
|
musllinux_1_2 = quay.io/pypa/musllinux_1_2_i686:2025.06.08-1
|
||||||
|
|
||||||
[aarch64]
|
[aarch64]
|
||||||
manylinux2014 = quay.io/pypa/manylinux2014_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.04-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.04-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.04-1
|
musllinux_1_2 = quay.io/pypa/musllinux_1_2_aarch64:2025.06.08-1
|
||||||
|
|
||||||
[ppc64le]
|
[ppc64le]
|
||||||
manylinux2014 = quay.io/pypa/manylinux2014_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.04-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.04-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.04-1
|
musllinux_1_2 = quay.io/pypa/musllinux_1_2_ppc64le:2025.06.08-1
|
||||||
|
|
||||||
[s390x]
|
[s390x]
|
||||||
manylinux2014 = quay.io/pypa/manylinux2014_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.04-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.04-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.04-1
|
musllinux_1_2 = quay.io/pypa/musllinux_1_2_s390x:2025.06.08-1
|
||||||
|
|
||||||
[pypy_x86_64]
|
[pypy_x86_64]
|
||||||
manylinux2014 = quay.io/pypa/manylinux2014_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.04-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.04-1
|
manylinux_2_34 = quay.io/pypa/manylinux_2_34_x86_64:2025.06.08-1
|
||||||
|
|
||||||
[pypy_i686]
|
[pypy_i686]
|
||||||
manylinux2014 = quay.io/pypa/manylinux2014_i686:2025.06.04-1
|
manylinux2014 = quay.io/pypa/manylinux2014_i686:2025.06.08-1
|
||||||
|
|
||||||
[pypy_aarch64]
|
[pypy_aarch64]
|
||||||
manylinux2014 = quay.io/pypa/manylinux2014_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.04-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.04-1
|
manylinux_2_34 = quay.io/pypa/manylinux_2_34_aarch64:2025.06.08-1
|
||||||
|
|
||||||
[armv7l]
|
[armv7l]
|
||||||
manylinux_2_31 = quay.io/pypa/manylinux_2_31_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.04-1
|
musllinux_1_2 = quay.io/pypa/musllinux_1_2_armv7l:2025.06.08-1
|
||||||
|
|
||||||
[riscv64]
|
[riscv64]
|
||||||
|
|
||||||
|
|||||||
@@ -179,6 +179,10 @@
|
|||||||
"name": "cpython-3.12.11+20250604-s390x-unknown-linux-gnu-install_only.tar.gz",
|
"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"
|
"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",
|
"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"
|
"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",
|
"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"
|
"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",
|
"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"
|
"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",
|
"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"
|
"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",
|
"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"
|
"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",
|
"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"
|
"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",
|
"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"
|
"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.
|
- ⚠️ 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.
|
- ⚠️ 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).
|
- ⚠️ `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
|
#### 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:
|
If you use GitHub Actions for builds, you can use cibuildwheel as an action:
|
||||||
|
|
||||||
```yaml
|
```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.
|
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
|
```bash
|
||||||
# requirements-cibw.txt
|
# 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:
|
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
|
# most runners have pipx preinstalled, but in case you don't
|
||||||
python3 -m pip install pipx
|
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
|
pipx run twine upload wheelhouse/*.whl
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|||||||
+37
-8
@@ -191,10 +191,10 @@ Options:
|
|||||||
- Windows: `AMD64` `x86` `ARM64`
|
- Windows: `AMD64` `x86` `ARM64`
|
||||||
- Pyodide: `wasm32`
|
- Pyodide: `wasm32`
|
||||||
- iOS: `arm64_iphoneos` `arm64_iphonesimulator` `x86_64_iphonesimulator`
|
- iOS: `arm64_iphoneos` `arm64_iphonesimulator` `x86_64_iphonesimulator`
|
||||||
- `auto`: The default archs for your machine - see the table below.
|
- `auto`: The recommended archs for your machine - see the table below.
|
||||||
- `auto64`: Just the 64-bit auto archs
|
- `auto64`: The 64-bit arch(s) supported by your machine (includes device and simulator for iOS)
|
||||||
- `auto32`: Just the 32-bit auto archs
|
- `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).
|
- `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
|
- `all` : expands to all the architectures supported on this OS. You may want
|
||||||
to use [`build`](#build-skip) with this option to target specific
|
to use [`build`](#build-skip) with this option to target specific
|
||||||
architectures via build selectors.
|
architectures via build selectors.
|
||||||
@@ -205,16 +205,34 @@ Default: `auto`
|
|||||||
|
|
||||||
| Runner | `native` | `auto` | `auto64` | `auto32` |
|
| Runner | `native` | `auto` | `auto64` | `auto32` |
|
||||||
|---|---|---|---|---|
|
|---|---|---|---|---|
|
||||||
| Linux / Intel | `x86_64` | `x86_64` `i686` | `x86_64` | `i686` |
|
| Linux / Intel 64-bit | `x86_64` | `x86_64` | `x86_64` | `i686` |
|
||||||
| Windows / Intel | `AMD64` | `AMD64` `x86` | `AMD64` | `x86` |
|
| 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` | |
|
| Windows / ARM64 | `ARM64` | `ARM64` | `ARM64` | |
|
||||||
| macOS / Intel | `x86_64` | `x86_64` | `x86_64` | |
|
| macOS / Intel | `x86_64` | `x86_64` | `x86_64` | |
|
||||||
| macOS / Apple Silicon | `arm64` | `arm64` | `arm64` | |
|
| macOS / Apple Silicon | `arm64` | `arm64` | `arm64` | |
|
||||||
| iOS on macOS / Intel | `x86_64_iphonesimulator` | `x86_64_iphonesimulator` | `x86_64_iphonesimulator` | |
|
| 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` |
|
| 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`.
|
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
|
[setup-qemu-action]: https://github.com/docker/setup-qemu-action
|
||||||
[binfmt]: https://hub.docker.com/r/tonistiigi/binfmt
|
[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
|
# On an Linux Intel runner with qemu installed, build Intel and ARM wheels
|
||||||
[tool.cibuildwheel.linux]
|
[tool.cibuildwheel.linux]
|
||||||
archs = ["auto", "aarch64"]
|
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"
|
!!! 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
|
# On an Linux Intel runner with qemu installed, build Intel and ARM wheels
|
||||||
CIBW_ARCHS_LINUX: "auto aarch64"
|
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.
|
Separate multiple archs with a space.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
It is generally recommended to use the environment variable or
|
It is generally recommended to use the environment variable or
|
||||||
command-line option for Linux, as selecting archs often depends
|
command-line option for Linux, as selecting archs often depends
|
||||||
on your specific runner having qemu installed.
|
on your specific runner having qemu installed.
|
||||||
@@ -1253,6 +1276,12 @@ The available Pyodide versions are determined by the version of `pyodide-build`
|
|||||||
!!! tip
|
!!! tip
|
||||||
You can set the version of `pyodide-build` using the [`dependency-versions`](#dependency-versions) option.
|
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
|
#### Examples
|
||||||
|
|
||||||
!!! tab examples "pyproject.toml"
|
!!! 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 |
|
| [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. |
|
| [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 |
|
| [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. |
|
| [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 |
|
| [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 |
|
| [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. |
|
| [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. |
|
| [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. |
|
| [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 |
|
| [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 |
|
| [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. |
|
| [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 |
|
| [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 |
|
| [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 |
|
| [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 |
|
||||||
| [power-grid-model][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Python/C++ library for distribution power system analysis |
|
| [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 |
|
| [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. |
|
| [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. |
|
| [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 |
|
| [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
|
[mosec]: https://github.com/mosecorg/mosec
|
||||||
[Picologging]: https://github.com/microsoft/picologging
|
[Picologging]: https://github.com/microsoft/picologging
|
||||||
[pybind11 cmake_example]: https://github.com/pybind/cmake_example
|
[pybind11 cmake_example]: https://github.com/pybind/cmake_example
|
||||||
[Rtree]: https://github.com/Toblerity/rtree
|
|
||||||
[markupsafe]: https://github.com/pallets/markupsafe
|
[markupsafe]: https://github.com/pallets/markupsafe
|
||||||
|
[Rtree]: https://github.com/Toblerity/rtree
|
||||||
[KDEpy]: https://github.com/tommyod/KDEpy
|
[KDEpy]: https://github.com/tommyod/KDEpy
|
||||||
[dd-trace-py]: https://github.com/DataDog/dd-trace-py
|
[dd-trace-py]: https://github.com/DataDog/dd-trace-py
|
||||||
[tgcalls]: https://github.com/MarshalX/tgcalls
|
[tgcalls]: https://github.com/MarshalX/tgcalls
|
||||||
@@ -191,8 +191,8 @@ title: Working examples
|
|||||||
[sourmash]: https://github.com/sourmash-bio/sourmash
|
[sourmash]: https://github.com/sourmash-bio/sourmash
|
||||||
[abess]: https://github.com/abess-team/abess
|
[abess]: https://github.com/abess-team/abess
|
||||||
[python-snappy]: https://github.com/intake/python-snappy
|
[python-snappy]: https://github.com/intake/python-snappy
|
||||||
[jq.py]: https://github.com/mwilliamson/jq.py
|
|
||||||
[cyvcf2]: https://github.com/brentp/cyvcf2
|
[cyvcf2]: https://github.com/brentp/cyvcf2
|
||||||
|
[jq.py]: https://github.com/mwilliamson/jq.py
|
||||||
[matrixprofile]: https://github.com/matrix-profile-foundation/matrixprofile
|
[matrixprofile]: https://github.com/matrix-profile-foundation/matrixprofile
|
||||||
[Tokenizer]: https://github.com/OpenNMT/Tokenizer
|
[Tokenizer]: https://github.com/OpenNMT/Tokenizer
|
||||||
[iminuit]: https://github.com/scikit-hep/iminuit
|
[iminuit]: https://github.com/scikit-hep/iminuit
|
||||||
@@ -204,8 +204,8 @@ title: Working examples
|
|||||||
[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
|
||||||
[power-grid-model]: https://github.com/PowerGridModel/power-grid-model
|
[power-grid-model]: https://github.com/PowerGridModel/power-grid-model
|
||||||
[bx-python]: https://github.com/bxlab/bx-python
|
|
||||||
[pybase64]: https://github.com/mayeut/pybase64
|
[pybase64]: https://github.com/mayeut/pybase64
|
||||||
|
[bx-python]: https://github.com/bxlab/bx-python
|
||||||
[boost-histogram]: https://github.com/scikit-hep/boost-histogram
|
[boost-histogram]: https://github.com/scikit-hep/boost-histogram
|
||||||
[Imagecodecs (fork)]: https://github.com/czaki/imagecodecs_build
|
[Imagecodecs (fork)]: https://github.com/czaki/imagecodecs_build
|
||||||
[Python-WebRTC]: https://github.com/MarshalX/python-webrtc
|
[Python-WebRTC]: https://github.com/MarshalX/python-webrtc
|
||||||
|
|||||||
@@ -1,12 +1,12 @@
|
|||||||
jobs:
|
jobs:
|
||||||
- job: linux
|
- job: linux
|
||||||
pool: {vmImage: 'Ubuntu-20.04'}
|
pool: {vmImage: 'ubuntu-latest'}
|
||||||
steps:
|
steps:
|
||||||
- task: UsePythonVersion@0
|
- task: UsePythonVersion@0
|
||||||
- bash: |
|
- bash: |
|
||||||
set -o errexit
|
set -o errexit
|
||||||
python3 -m pip install --upgrade pip
|
python3 -m pip install --upgrade pip
|
||||||
pip3 install cibuildwheel==3.0.0rc2
|
pip3 install cibuildwheel==3.0.0rc3
|
||||||
displayName: Install dependencies
|
displayName: Install dependencies
|
||||||
- bash: cibuildwheel --output-dir wheelhouse .
|
- bash: cibuildwheel --output-dir wheelhouse .
|
||||||
displayName: Build wheels
|
displayName: Build wheels
|
||||||
@@ -14,13 +14,13 @@ jobs:
|
|||||||
inputs: {pathtoPublish: 'wheelhouse'}
|
inputs: {pathtoPublish: 'wheelhouse'}
|
||||||
|
|
||||||
- job: macos
|
- job: macos
|
||||||
pool: {vmImage: 'macOS-13'}
|
pool: {vmImage: 'macOS-latest'}
|
||||||
steps:
|
steps:
|
||||||
- task: UsePythonVersion@0
|
- task: UsePythonVersion@0
|
||||||
- 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==3.0.0rc2
|
python3 -m pip install cibuildwheel==3.0.0rc3
|
||||||
displayName: Install dependencies
|
displayName: Install dependencies
|
||||||
- bash: cibuildwheel --output-dir wheelhouse .
|
- bash: cibuildwheel --output-dir wheelhouse .
|
||||||
displayName: Build wheels
|
displayName: Build wheels
|
||||||
@@ -28,13 +28,13 @@ jobs:
|
|||||||
inputs: {pathtoPublish: wheelhouse}
|
inputs: {pathtoPublish: wheelhouse}
|
||||||
|
|
||||||
- job: windows
|
- job: windows
|
||||||
pool: {vmImage: 'windows-2019'}
|
pool: {vmImage: 'windows-latest'}
|
||||||
steps:
|
steps:
|
||||||
- task: UsePythonVersion@0
|
- task: UsePythonVersion@0
|
||||||
- bash: |
|
- bash: |
|
||||||
set -o errexit
|
set -o errexit
|
||||||
python -m pip install --upgrade pip
|
python -m pip install --upgrade pip
|
||||||
pip install cibuildwheel==3.0.0rc2
|
pip install cibuildwheel==3.0.0rc3
|
||||||
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==3.0.0rc2
|
python3 -m pip install --user cibuildwheel==3.0.0rc3
|
||||||
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==3.0.0rc2
|
python3 -m pip install --user cibuildwheel==3.0.0rc3
|
||||||
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==3.0.0rc2
|
pip3 install cibuildwheel==3.0.0rc3
|
||||||
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==3.0.0rc2
|
- python -m pip install cibuildwheel==3.0.0rc3
|
||||||
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==3.0.0rc2
|
- python -m pip install cibuildwheel==3.0.0rc3
|
||||||
run_cibuildwheel_script:
|
run_cibuildwheel_script:
|
||||||
- cibuildwheel
|
- cibuildwheel
|
||||||
wheels_artifacts:
|
wheels_artifacts:
|
||||||
@@ -52,9 +52,13 @@ windows_x86_task:
|
|||||||
memory: 4G
|
memory: 4G
|
||||||
|
|
||||||
install_pre_requirements_script:
|
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
|
- choco install -y --no-progress python3 --version 3.12.4
|
||||||
- refreshenv
|
- 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
|
<<: *BUILD_AND_STORE_WHEELS
|
||||||
|
|
||||||
macos_arm64_task:
|
macos_arm64_task:
|
||||||
|
|||||||
@@ -44,7 +44,7 @@ jobs:
|
|||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v4
|
||||||
|
|
||||||
- name: Build wheels
|
- name: Build wheels
|
||||||
uses: pypa/cibuildwheel@v3.0.0rc2
|
uses: pypa/cibuildwheel@v3.0.0rc3
|
||||||
env:
|
env:
|
||||||
CIBW_PLATFORM: ${{ matrix.platform }}
|
CIBW_PLATFORM: ${{ matrix.platform }}
|
||||||
CIBW_ARCHS: ${{ matrix.archs }}
|
CIBW_ARCHS: ${{ matrix.archs }}
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ jobs:
|
|||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v4
|
||||||
|
|
||||||
- name: Build wheels
|
- name: Build wheels
|
||||||
uses: pypa/cibuildwheel@v3.0.0rc2
|
uses: pypa/cibuildwheel@v3.0.0rc3
|
||||||
# env:
|
# env:
|
||||||
# CIBW_SOME_OPTION: value
|
# CIBW_SOME_OPTION: value
|
||||||
# ...
|
# ...
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ jobs:
|
|||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v4
|
||||||
|
|
||||||
- name: Build wheels
|
- name: Build wheels
|
||||||
run: pipx run cibuildwheel==3.0.0rc2
|
run: pipx run cibuildwheel==3.0.0rc3
|
||||||
|
|
||||||
- uses: actions/upload-artifact@v4
|
- uses: actions/upload-artifact@v4
|
||||||
with:
|
with:
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ jobs:
|
|||||||
platforms: all
|
platforms: all
|
||||||
|
|
||||||
- name: Build wheels
|
- name: Build wheels
|
||||||
uses: pypa/cibuildwheel@v3.0.0rc2
|
uses: pypa/cibuildwheel@v3.0.0rc3
|
||||||
env:
|
env:
|
||||||
# configure cibuildwheel on Linux to build native archs ('auto'),
|
# configure cibuildwheel on Linux to build native archs ('auto'),
|
||||||
# and to split the remaining architectures between the x86_64 and
|
# and to split the remaining architectures between the x86_64 and
|
||||||
|
|||||||
@@ -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==3.0.0rc2
|
- python -m pip install cibuildwheel==3.0.0rc3
|
||||||
- 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 --allow-downgrade --version 3.12.4
|
- choco install python -y --allow-downgrade --version 3.12.4
|
||||||
- choco install git.install -y
|
- choco install git.install -y
|
||||||
- py -m pip install cibuildwheel==3.0.0rc2
|
- py -m pip install cibuildwheel==3.0.0rc3
|
||||||
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==3.0.0rc2
|
- python3 -m pip install cibuildwheel==3.0.0rc3
|
||||||
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==3.0.0rc2
|
- python -m pip install cibuildwheel==3.0.0rc3
|
||||||
# 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==3.0.0rc2
|
- python3 -m pip install cibuildwheel==3.0.0rc3
|
||||||
|
|
||||||
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==3.0.0rc2
|
- python3 -m pip install cibuildwheel==3.0.0rc3
|
||||||
|
|
||||||
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==3.0.0rc2 twine
|
install: python3 -m pip install cibuildwheel==3.0.0rc3 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==3.0.0rc2 twine
|
install: python3 -m pip install cibuildwheel==3.0.0rc3 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
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
|
|||||||
|
|
||||||
[project]
|
[project]
|
||||||
name = "cibuildwheel"
|
name = "cibuildwheel"
|
||||||
version = "3.0.0rc2"
|
version = "3.0.0rc3"
|
||||||
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"
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
import socket
|
||||||
import textwrap
|
import textwrap
|
||||||
|
|
||||||
from . import test_projects, utils
|
from . import test_projects, utils
|
||||||
@@ -24,6 +25,9 @@ def test(tmp_path):
|
|||||||
project_dir = tmp_path / "project"
|
project_dir = tmp_path / "project"
|
||||||
project_with_ssl_tests.generate(project_dir)
|
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)
|
actual_wheels = utils.cibuildwheel_run(project_dir)
|
||||||
|
|
||||||
expected_wheels = utils.expected_wheels("spam", "0.1.0")
|
expected_wheels = utils.expected_wheels("spam", "0.1.0")
|
||||||
|
|||||||
+2
-1
@@ -175,6 +175,7 @@ def expected_wheels(
|
|||||||
include_universal2: bool = False,
|
include_universal2: bool = False,
|
||||||
single_python: bool = False,
|
single_python: bool = False,
|
||||||
single_arch: bool = False,
|
single_arch: bool = False,
|
||||||
|
full_auto: bool = False,
|
||||||
) -> list[str]:
|
) -> list[str]:
|
||||||
"""
|
"""
|
||||||
Returns the expected wheels from a run of cibuildwheel.
|
Returns the expected wheels from a run of cibuildwheel.
|
||||||
@@ -194,7 +195,7 @@ def expected_wheels(
|
|||||||
|
|
||||||
architectures = [machine_arch]
|
architectures = [machine_arch]
|
||||||
if not single_arch:
|
if not single_arch:
|
||||||
if platform == "linux":
|
if platform == "linux" and full_auto:
|
||||||
if machine_arch == "x86_64":
|
if machine_arch == "x86_64":
|
||||||
architectures.append("i686")
|
architectures.append("i686")
|
||||||
elif (
|
elif (
|
||||||
|
|||||||
@@ -34,8 +34,8 @@ def test_arch_auto(platform_machine):
|
|||||||
arch_set = Architecture.auto_archs("linux")
|
arch_set = Architecture.auto_archs("linux")
|
||||||
expected = {
|
expected = {
|
||||||
"32": {Architecture.i686},
|
"32": {Architecture.i686},
|
||||||
"64": {Architecture.x86_64, Architecture.i686},
|
"64": {Architecture.x86_64},
|
||||||
"arm": {Architecture.aarch64, Architecture.armv7l},
|
"arm": {Architecture.aarch64},
|
||||||
}
|
}
|
||||||
assert arch_set == expected[machine_name]
|
assert arch_set == expected[machine_name]
|
||||||
|
|
||||||
@@ -94,5 +94,24 @@ def test_arch_auto_no_aarch32(monkeypatch):
|
|||||||
arch_set = Architecture.parse_config("auto64", "linux")
|
arch_set = Architecture.parse_config("auto64", "linux")
|
||||||
assert arch_set == {Architecture.aarch64}
|
assert arch_set == {Architecture.aarch64}
|
||||||
|
|
||||||
|
monkeypatch.setattr(cibuildwheel.architecture, "_check_aarch32_el0", lambda: True)
|
||||||
arch_set = Architecture.parse_config("auto32", "linux")
|
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]
|
options = intercepted_build_args.args[0]
|
||||||
|
|
||||||
if platform == "linux":
|
if platform == "linux":
|
||||||
assert options.globals.architectures == {Architecture.x86_64, Architecture.i686}
|
assert options.globals.architectures == {Architecture.x86_64}
|
||||||
elif platform == "windows":
|
elif platform == "windows":
|
||||||
assert options.globals.architectures == {Architecture.AMD64, Architecture.x86}
|
assert options.globals.architectures == {Architecture.AMD64, Architecture.x86}
|
||||||
else:
|
else:
|
||||||
|
|||||||
@@ -51,6 +51,7 @@ def mock_build_container(monkeypatch):
|
|||||||
@pytest.mark.usefixtures("mock_build_container", "fake_package_dir")
|
@pytest.mark.usefixtures("mock_build_container", "fake_package_dir")
|
||||||
def test_build_default_launches(monkeypatch):
|
def test_build_default_launches(monkeypatch):
|
||||||
monkeypatch.setattr(sys, "argv", [*sys.argv, "--platform=linux"])
|
monkeypatch.setattr(sys, "argv", [*sys.argv, "--platform=linux"])
|
||||||
|
monkeypatch.setenv("CIBW_ARCHS", "auto64 auto32")
|
||||||
monkeypatch.delenv("CIBW_ENABLE", raising=False)
|
monkeypatch.delenv("CIBW_ENABLE", raising=False)
|
||||||
|
|
||||||
main()
|
main()
|
||||||
@@ -105,6 +106,7 @@ def test_build_with_override_launches(monkeypatch, tmp_path):
|
|||||||
manylinux-x86_64-image = "manylinux_2_28"
|
manylinux-x86_64-image = "manylinux_2_28"
|
||||||
musllinux-x86_64-image = "musllinux_1_2"
|
musllinux-x86_64-image = "musllinux_1_2"
|
||||||
enable = ["pypy", "pypy-eol", "graalpy", "cpython-freethreading"]
|
enable = ["pypy", "pypy-eol", "graalpy", "cpython-freethreading"]
|
||||||
|
archs = ["auto64", "auto32"]
|
||||||
|
|
||||||
# Before Python 3.10, use manylinux2014
|
# Before Python 3.10, use manylinux2014
|
||||||
[[tool.cibuildwheel.overrides]]
|
[[tool.cibuildwheel.overrides]]
|
||||||
|
|||||||
@@ -25,6 +25,7 @@ PYPROJECT_1 = """
|
|||||||
[tool.cibuildwheel]
|
[tool.cibuildwheel]
|
||||||
build = ["cp38-*", "cp313-*"]
|
build = ["cp38-*", "cp313-*"]
|
||||||
skip = ["*musllinux*"]
|
skip = ["*musllinux*"]
|
||||||
|
archs = ["auto64", "auto32"]
|
||||||
environment = {FOO="BAR"}
|
environment = {FOO="BAR"}
|
||||||
|
|
||||||
test-command = "pyproject"
|
test-command = "pyproject"
|
||||||
|
|||||||
Reference in New Issue
Block a user