diff --git a/.github/workflows/build-test.sh b/.github/workflows/build-test.sh index f99d06d931..15f8a54d91 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 d4d995c5cd..ceecaf3fe0 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