feat: add musllinux support (PEP 656) (#768)
* feat: add musllinux support (PEP 656) Add musllinux support (PEP 656) allowing to build wheels for musl libc based distros (e.g. Alpine) * feat: add musllinux support (PEP 656) doc * doc: combine `CIBW_MANYLINUX_*_IMAGE` & `CIBW_MUSLLINUX_*_IMAGE` options * fix: doc to be squashed * doc: combine manylinux /musllinux in README * Update docs/options.md Co-authored-by: Joe Rickerby <joerick@mac.com> Co-authored-by: Joe Rickerby <joerick@mac.com>
This commit is contained in:
co-authored by
Joe Rickerby
parent
d5add4261f
commit
803c5e46ce
@@ -56,4 +56,6 @@ def test_build_identifiers(tmp_path):
|
||||
build_identifiers = utils.cibuildwheel_get_build_identifiers(
|
||||
project_dir, prerelease_pythons=True
|
||||
)
|
||||
assert len(expected_wheels) == len(build_identifiers)
|
||||
assert len(expected_wheels) == len(
|
||||
build_identifiers
|
||||
), f"{expected_wheels} vs {build_identifiers}"
|
||||
|
||||
@@ -37,14 +37,14 @@ def test(tmp_path):
|
||||
add_env={
|
||||
"CIBW_MANYLINUX_X86_64_IMAGE": "dockcross/manylinux2010-x64",
|
||||
"CIBW_MANYLINUX_I686_IMAGE": "dockcross/manylinux2010-x86",
|
||||
"CIBW_BUILD": "cp3{6,7,8,9}-*",
|
||||
"CIBW_BUILD": "cp3{6,7,8,9}-manylinux*",
|
||||
},
|
||||
)
|
||||
|
||||
# also check that we got the right wheels built
|
||||
expected_wheels = [
|
||||
w
|
||||
for w in utils.expected_wheels("spam", "0.1.0")
|
||||
for w in utils.expected_wheels("spam", "0.1.0", musllinux_versions=[])
|
||||
if "-cp36-" in w or "-cp37-" in w or "-cp38-" in w or "-cp39-" in w
|
||||
]
|
||||
assert set(actual_wheels) == set(expected_wheels)
|
||||
|
||||
@@ -57,6 +57,7 @@ def test(manylinux_image, tmp_path):
|
||||
# CFLAGS environment variable is necessary to fail on 'malloc_info' (on manylinux1) during compilation/linking,
|
||||
# rather than when dynamically loading the Python
|
||||
add_env = {
|
||||
"CIBW_BUILD": "*-manylinux*",
|
||||
"CIBW_ENVIRONMENT": 'CFLAGS="$CFLAGS -O0 -Werror=implicit-function-declaration"',
|
||||
"CIBW_MANYLINUX_X86_64_IMAGE": manylinux_image,
|
||||
"CIBW_MANYLINUX_I686_IMAGE": manylinux_image,
|
||||
@@ -79,7 +80,10 @@ def test(manylinux_image, tmp_path):
|
||||
"manylinux2014": ["manylinux_2_17", "manylinux2014"],
|
||||
}
|
||||
expected_wheels = utils.expected_wheels(
|
||||
"spam", "0.1.0", manylinux_versions=platform_tag_map.get(manylinux_image, [manylinux_image])
|
||||
"spam",
|
||||
"0.1.0",
|
||||
manylinux_versions=platform_tag_map.get(manylinux_image, [manylinux_image]),
|
||||
musllinux_versions=[],
|
||||
)
|
||||
if manylinux_image in {"manylinux1"}:
|
||||
# remove PyPy & CPython 3.10 and above
|
||||
|
||||
@@ -103,6 +103,7 @@ def expected_wheels(
|
||||
package_name,
|
||||
package_version,
|
||||
manylinux_versions=None,
|
||||
musllinux_versions=None,
|
||||
macosx_deployment_target="10.9",
|
||||
machine_arch=None,
|
||||
):
|
||||
@@ -123,6 +124,9 @@ def expected_wheels(
|
||||
else:
|
||||
manylinux_versions = ["manylinux_2_17", "manylinux2014"]
|
||||
|
||||
if musllinux_versions is None:
|
||||
musllinux_versions = ["musllinux_1_1"]
|
||||
|
||||
python_abi_tags = ["cp36-cp36m", "cp37-cp37m", "cp38-cp38", "cp39-cp39", "cp310-cp310"]
|
||||
|
||||
if machine_arch in ["x86_64", "AMD64", "x86", "aarch64"]:
|
||||
@@ -155,6 +159,16 @@ def expected_wheels(
|
||||
)
|
||||
for architecture in architectures
|
||||
]
|
||||
if len(musllinux_versions) > 0 and not python_abi_tag.startswith("pp"):
|
||||
platform_tags.extend(
|
||||
[
|
||||
".".join(
|
||||
f"{musllinux_version}_{architecture}"
|
||||
for musllinux_version in musllinux_versions
|
||||
)
|
||||
for architecture in architectures
|
||||
]
|
||||
)
|
||||
|
||||
elif platform == "windows":
|
||||
if python_abi_tag.startswith("cp"):
|
||||
|
||||
Reference in New Issue
Block a user