You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
ci(edriver): static musl build for x86_64 and aarch64
Build the edriver BPF plugin as a fully static musl binary for both
x86_64 and aarch64. Both jobs run in ubuntu:24.04 containers using
musl-gcc; vendored-libelf compiles elfutils --without-zstd so the
resulting libelf.a carries no zstd dependency.
Key issues solved along the way:
1. elfutils ./configure (invoked by libbpf-sys build.rs with
CC=musl-gcc) requires argp_parse, fts_close, and _obstack_free,
which are absent from musl libc. Fix: add a 'Build musl compat
libs' CI step that compiles the three void-linux musl-compat shims
(identical to Alpine's argp-standalone / musl-fts-dev /
musl-obstack-dev packages) with musl-gcc and installs them into
musl-gcc's default sysroot search path
/usr/lib/${ARCH}-linux-musl/ before cargo build runs.
2. libbpf C compilation (make -C libbpf/src) needs gelf.h at BPF-
skeleton-generation time; add libelf-dev and zlib1g-dev to apt
install so clang can find the header.
3. .cargo/config.toml: set CC_*_musl=musl-gcc, linker=musl-gcc,
target-feature=+crt-static for both musl targets. Remove stale
-lzstd link flags (vendored elfutils is --without-zstd).
CI matrix:
x86_64 ubuntu-latest → x86_64-unknown-linux-musl
aarch64 ubuntu-24.04-arm → aarch64-unknown-linux-musl
(ubuntu:24.04 container for both; Alpine ARM64 has no Node.js so
JS GitHub Actions don't work there)
0 commit comments