apache / apache/hudi-rs

move the linux wheel builds to manylinux_2_28

Open
#756 0 comments 0 reactions 0 assignees View on GitHub
ci
Dominant language
Rust
Stars
279
Forks
67
Avg merge
3d 1h
Merged PRs (30d)
40

Description

The linux wheels build on `manylinux2014`, whose CentOS 7 base predates every native toolchain need this project has grown. Getting 0.5.0 to build there (#750, #751) required downloading protoc (distro version 2.5.0), installing libclang from an LLVM 7 software collection, and handing bindgen the library path and builtin-header include explicitly because the SCL layout defeats libclang's own resource lookup. The aarch64 step additionally carries `CFLAGS_aarch64_unknown_linux_gnu="-D__ARM_ARCH=8"` for ring, with a comment saying it can go once the image moves to 2_28.

Moving to `manylinux_2_28` (AlmaLinux 8) removes all of that except the pinned protoc download (the 8.x distro protoc is 3.5, still too old): the distro `clang-devel` is clang 21 and bindgen finds it with no environment handed in, and ring compiles without the CFLAGS workaround. Verified in `quay.io/pypa/manylinux_2_28`: `lance-encoding` 11.0.0, `librocksdb-sys` 0.16.0 and `ring` 0.17.14 all compile clean.

The cost is the wheel floor moving from glibc 2.17 to 2.28, dropping CentOS 7, Ubuntu 18.04, and Amazon Linux 2, all past end of life. In practice nothing is lost: pyarrow, numpy, and the datafusion python package, the packages hudi wheels run alongside, ship `manylinux_2_28` wheels only, so any environment excluded by the new floor already cannot install the surrounding stack.

Targeting 0.6.0: the 0.5.0 release ships from `manylinux2014` (#751) so the floor does not change mid-release, and 0.5.0 already raises the Python floor to 3.10, so the two compatibility changes land in separate releases.

Contributor guide

Open the contributing guide

Research direction

No file or test is named in the issue. Start at the Linux wheel build entry point that selects manylinux2014 and compare it with the manylinux_2_28 environment described here. Done means the 0.6.0 wheels use the new image, retain the pinned protoc download, remove the clang and aarch64 workarounds, and compile the listed dependencies cleanly.

Written by the indexing model from the issue text.

Assessment

Tech stack
python, rust
Domain
build-system, release
Issue type
Refactor
Difficulty
4/5
Estimated time
3-5 days
Activity status
Active
Clarity
Mostly clear
Newbie friendliness
55/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.