From f76a0db3225b260cf06b79b3cf1c79928a75dd99 Mon Sep 17 00:00:00 2001 From: Michal R Date: Fri, 5 Dec 2025 15:47:33 +0100 Subject: [PATCH] ci: Enable `llvm-link-static` feature for bpf-linker MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Rust CI does not provide dynamic libLLVM tarballs for macOS—only static ones. Since recent versions of bpf-linker require explicit linkage configuration for libLLVM, enable the `llvm-link-static` feature to ensure correct static linking. Make sure bpf-linker's build.rs sees the downloaded LLVM by adding it to PATH. On macOS, set the `{CXXSTDLIB,ZLIB}_PATH` variables to point to the brew prefixes with static libraries it needs. --- .github/workflows/ci.yml | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 55ed4e99..039048bd 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -279,6 +279,10 @@ jobs: brew bundle echo $(brew --prefix curl)/bin >> $GITHUB_PATH echo $(brew --prefix llvm)/bin >> $GITHUB_PATH + # Point bpf-linker's build.rs to the brew prefixes with static + # libraries it needs. + echo "CXXSTDLIB_PATH=$(brew --prefix llvm)/lib/c++" >> $GITHUB_ENV + echo "ZLIB_PATH=$(brew --prefix zlib)/lib" >> $GITHUB_ENV # https://github.com/actions/setup-python/issues/577 find /usr/local/bin -type l -exec sh -c 'readlink -f "$1" \ @@ -324,7 +328,7 @@ jobs: esac case "${{ runner.os }}" in Linux) - target=${arch}-unknown-linux-gnu + target=${arch}-unknown-linux-musl ;; macOS) target=${arch}-apple-darwin @@ -341,8 +345,13 @@ jobs: # NB: rustc doesn't ship libLLVM.so on macOS, so disable proxying (default feature). We also # --force so that bpf-linker gets always relinked against the latest LLVM downloaded above. # + # Add the downloaded LLVM to PATH for this build step. + # # Do this on all system (not just macOS) to avoid relying on rustc-provided libLLVM.so. - - run: cargo install --git https://github.com/aya-rs/bpf-linker.git bpf-linker --no-default-features --features llvm-21 --force + - run: | + PATH="/tmp/rustc-llvm/bin:$PATH" cargo install \ + --git https://github.com/aya-rs/bpf-linker.git bpf-linker \ + --no-default-features --features llvm-21,llvm-link-static --force - uses: actions/cache@v4 with: