|
# Linux glibc (manylinux_2_17 floor) — cross-compiled with zig. |
|
- { os: ubuntu-latest, target: x86_64-unknown-linux-gnu, zigtarget: x86_64-unknown-linux-gnu.2.17, plat: manylinux_2_17_x86_64, zig: true, native: true } |
|
- { os: ubuntu-latest, target: aarch64-unknown-linux-gnu, zigtarget: aarch64-unknown-linux-gnu.2.17, plat: manylinux_2_17_aarch64, zig: true, native: false } |
|
- { os: ubuntu-latest, target: armv7-unknown-linux-gnueabihf, zigtarget: armv7-unknown-linux-gnueabihf.2.17, plat: manylinux_2_17_armv7l, zig: true, native: false } |
|
# Linux musl / Alpine. crt-static is musl's default, and rustc |
|
# silently *drops* cdylib output under it (a warning, not an error) |
|
# since a fully-static binary can't also be a shared library — |
|
# -C target-feature=-crt-static switches to dynamic linking against |
|
# musl libc so a real cdylib gets produced. |
|
- { os: ubuntu-latest, target: x86_64-unknown-linux-musl, zigtarget: x86_64-unknown-linux-musl, plat: musllinux_1_2_x86_64, zig: true, native: false, rustflags: "-C target-feature=-crt-static" } |
|
- { os: ubuntu-latest, target: aarch64-unknown-linux-musl, zigtarget: aarch64-unknown-linux-musl, plat: musllinux_1_2_aarch64, zig: true, native: false, rustflags: "-C target-feature=-crt-static" } |
|
- { os: ubuntu-latest, target: armv7-unknown-linux-musleabihf, zigtarget: armv7-unknown-linux-musleabihf, plat: musllinux_1_2_armv7l, zig: true, native: false, rustflags: "-C target-feature=-crt-static" } |
|
# macOS. Both build on the arm64 runner (macos-14): Apple Silicon |
|
# runners are plentiful, while the last Intel runner (macos-13) is |
|
# deprecated and frequently unschedulable. The Apple toolchain |
|
# cross-links x86_64 Mach-O natively, so the Intel wheel is a cross |
|
# build (native: false -> content-verified, not import-smoked, since |
|
# an x86_64 lib can't be imported on the arm64 runner). |
|
- { os: macos-14, target: x86_64-apple-darwin, plat: macosx_10_12_x86_64, zig: false, native: false, deployment: "10.12" } |
|
- { os: macos-14, target: aarch64-apple-darwin, plat: macosx_11_0_arm64, zig: false, native: true, deployment: "11.0" } |
|
# Windows x64 (native), x86 and arm64 (cross-compiled). |
|
- { os: windows-latest, target: x86_64-pc-windows-msvc, plat: win_amd64, zig: false, native: true } |
|
- { os: windows-latest, target: i686-pc-windows-msvc, plat: win32, zig: false, native: false } |
|
- { os: windows-latest, target: aarch64-pc-windows-msvc, plat: win_arm64, zig: false, native: false } |
Summary
Seven cross-built native wheel targets are published after archive/content checks only. The verifier confirms that one file with an expected suffix exists and that wheel tags are non-pure, but it does not prove the embedded binary format/machine matches the wheel tag, required C ABI symbols are exported, or dynamic dependencies/minimum-OS linkage are valid. Only host-architecture matrix entries are installed and loaded.
Evidence
native: false:xy/.github/workflows/release.yml
Lines 41 to 64 in 99eda6d
if: matrix.native:xy/.github/workflows/release.yml
Lines 96 to 129 in 99eda6d
verify_wheel.pyrecognizes a native artifact by path/suffix and checks count/pure tags, but never parses ELF/Mach-O/PE headers, exports, or dependencies:xy/scripts/verify_wheel.py
Lines 386 to 415 in 99eda6d
xy/.github/workflows/release.yml
Lines 135 to 188 in 99eda6d
Acceptance criteria