From: Luca Boccassi Date: Fri, 17 Oct 2025 13:00:23 +0000 (+0100) Subject: ci: re-enable bpf-framework option for build and unit test jobs X-Git-Tag: v259-rc1~298 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=3b11139c0db9dd0a37b0493a8d2ad5f531a92344;p=thirdparty%2Fsystemd.git ci: re-enable bpf-framework option for build and unit test jobs Use the same trickery we do in the package build and search for the actual bpftool binary. For the CI job any one we find is good enough. When we switch all jobs to 26.04 we can drop all of this. This reverts commit cc814110af7a453db898ea2990a0281616d5ceff. --- diff --git a/.github/workflows/build-test.sh b/.github/workflows/build-test.sh index f99d06d931c..15f8a54d910 100755 --- a/.github/workflows/build-test.sh +++ b/.github/workflows/build-test.sh @@ -47,6 +47,7 @@ PACKAGES=( libxkbcommon-dev libxtables-dev libzstd-dev + linux-tools-generic mold mount net-tools @@ -143,6 +144,12 @@ sudo apt-get -y install "${PACKAGES[@]}" pip3 install --user -r .github/workflows/requirements.txt --require-hashes --break-system-packages export PATH="$HOME/.local/bin:$PATH" +# TODO: drop after we switch to ubuntu 26.04 +bpftool_dir=$(dirname "$(find /usr/lib/linux-tools/ /usr/lib/linux-tools-* -name 'bpftool' -perm /u=x 2>/dev/null | sort -r | head -n1)") +if [ -n "$bpftool_dir" ]; then + export PATH="$bpftool_dir:$PATH" +fi + if [[ -n "$CUSTOM_PYTHON" ]]; then # If CUSTOM_PYTHON is set we need to pull jinja2 from pip, as a local interpreter is used pip3 install --user --break-system-packages jinja2 @@ -168,7 +175,6 @@ for args in "${ARGS[@]}"; do meson setup \ -Dtests=unsafe -Dslow-tests=true -Dfuzz-tests=true --werror \ -Dnobody-group=nogroup -Ddebug=false \ - -Dbpf-framework=disabled \ $args build; then cat build/meson-logs/meson-log.txt diff --git a/.github/workflows/unit-tests.sh b/.github/workflows/unit-tests.sh index d4d995c5cd6..ceecaf3fe0e 100755 --- a/.github/workflows/unit-tests.sh +++ b/.github/workflows/unit-tests.sh @@ -18,6 +18,7 @@ ADDITIONAL_DEPS=( libtss2-dev libxkbcommon-dev libzstd-dev + linux-tools-generic python3-libevdev python3-pip python3-pyelftools @@ -74,6 +75,12 @@ for phase in "${PHASES[@]}"; do capsh --drop=all -- -c "stat $PWD/meson.build" ;; RUN|RUN_GCC|RUN_CLANG|RUN_CLANG_RELEASE) + # TODO: drop after we switch to ubuntu 26.04 + bpftool_dir=$(dirname "$(find /usr/lib/linux-tools/ /usr/lib/linux-tools-* -name 'bpftool' -perm /u=x 2>/dev/null | sort -r | head -n1)") + if [ -n "$bpftool_dir" ]; then + export PATH="$bpftool_dir:$PATH" + fi + if [[ "$phase" =~ ^RUN_CLANG ]]; then export CC=clang export CXX=clang++ @@ -99,12 +106,18 @@ for phase in "${PHASES[@]}"; do fi MESON_ARGS+=(--fatal-meson-warnings) - run_meson -Dnobody-group=nogroup --werror -Dtests=unsafe -Dslow-tests=true -Dfuzz-tests=true -Dbpf-framework=disabled "${MESON_ARGS[@]}" build + run_meson -Dnobody-group=nogroup --werror -Dtests=unsafe -Dslow-tests=true -Dfuzz-tests=true "${MESON_ARGS[@]}" build ninja -C build -v # Ensure setting a timezone (like the reproducible build tests do) does not break time/date unit tests TZ=GMT+12 meson test "${MESON_TEST_ARGS[@]}" -C build --print-errorlogs ;; RUN_ASAN_UBSAN|RUN_GCC_ASAN_UBSAN|RUN_CLANG_ASAN_UBSAN|RUN_CLANG_ASAN_UBSAN_NO_DEPS) + # TODO: drop after we switch to ubuntu 26.04 + bpftool_dir=$(dirname "$(find /usr/lib/linux-tools/ /usr/lib/linux-tools-* -name 'bpftool' -perm /u=x 2>/dev/null | sort -r | head -n1)") + if [ -n "$bpftool_dir" ]; then + export PATH="$bpftool_dir:$PATH" + fi + MESON_ARGS=(--optimization=1) if [[ "$phase" =~ ^RUN_CLANG_ASAN_UBSAN ]]; then @@ -122,7 +135,7 @@ for phase in "${PHASES[@]}"; do fi fi MESON_ARGS+=(--fatal-meson-warnings) - run_meson -Dnobody-group=nogroup --werror -Dtests=unsafe -Db_sanitize=address,undefined -Dbpf-framework=disabled "${MESON_ARGS[@]}" build + run_meson -Dnobody-group=nogroup --werror -Dtests=unsafe -Db_sanitize=address,undefined "${MESON_ARGS[@]}" build ninja -C build -v export ASAN_OPTIONS=strict_string_checks=1:detect_stack_use_after_return=1:check_initialization_order=1:strict_init_order=1