Archived
82 lines
3.3 KiB
YAML
82 lines
3.3 KiB
YAML
name: linux
|
|
|
|
on: [push, pull_request]
|
|
|
|
jobs:
|
|
build:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v6
|
|
|
|
- name: setup prerequisites
|
|
run: |
|
|
sudo apt update
|
|
sudo apt install -y autoconf automake libtool libudev-dev m4 pkg-config clang llvm
|
|
|
|
- name: bootstrap
|
|
run: ./bootstrap.sh
|
|
|
|
- name: netlink
|
|
# Disable tests for netlink as it doesn't seem to work in the CI environment.
|
|
run: .private/ci-build.sh --werror --build-dir build-netlink --no-test -- --disable-udev
|
|
|
|
- name: udev
|
|
run: .private/ci-build.sh --werror --build-dir build-udev -- --enable-udev
|
|
|
|
- name: debug-log
|
|
run: .private/ci-build.sh --werror --build-dir build-debug -- --enable-debug-log
|
|
|
|
- name: disable-log
|
|
run: .private/ci-build.sh --werror --build-dir build-nolog -- --disable-log
|
|
|
|
- uses: mymindstorm/setup-emsdk@v16
|
|
|
|
- run: npm ci
|
|
working-directory: tests/webusb-test-shim
|
|
|
|
- name: emscripten
|
|
run: emconfigure .private/ci-build.sh --build-dir build-emscripten -- --host=wasm32-unknown-emscripten
|
|
|
|
- name: umockdev test
|
|
run: .private/ci-container-build.sh docker.io/amd64/ubuntu:rolling
|
|
|
|
# --- Sanitizers + BOS fuzzer smoke, inside linux job (PRs only) ---
|
|
- name: Sanitized rebuild (ASan/UBSan + hardening flags)
|
|
if: ${{ github.event_name == 'pull_request' }}
|
|
env:
|
|
CC: clang
|
|
CXX: clang++
|
|
CFLAGS: "-O1 -g -fsanitize=address,undefined -fno-omit-frame-pointer -fstack-protector-all -ftrivial-auto-var-init=pattern -Wwrite-strings"
|
|
CXXFLAGS: "-O1 -g -fsanitize=address,undefined -fno-omit-frame-pointer -fstack-protector-all -ftrivial-auto-var-init=pattern -Wwrite-strings"
|
|
LDFLAGS: "-fsanitize=address,undefined"
|
|
run: |
|
|
rm -rf build-asan
|
|
mkdir -p build-asan
|
|
cd build-asan
|
|
CC=$CC CXX=$CXX CFLAGS="$CFLAGS" CXXFLAGS="$CXXFLAGS" LDFLAGS="$LDFLAGS" ../configure
|
|
make -j
|
|
|
|
- name: Stage install (pkg-config + runtime)
|
|
if: ${{ github.event_name == 'pull_request' }}
|
|
run: |
|
|
make -C build-asan install DESTDIR="$PWD/build-asan/stage"
|
|
echo "PKG_CONFIG_PATH=$PWD/build-asan/stage/usr/local/lib/pkgconfig" >> $GITHUB_ENV
|
|
echo "LD_LIBRARY_PATH=$PWD/build-asan/stage/usr/local/lib" >> $GITHUB_ENV
|
|
|
|
- name: Build & smoke BOS descriptor fuzzer (C, sanitized, bounded)
|
|
if: ${{ github.event_name == 'pull_request' }}
|
|
env:
|
|
ASAN_OPTIONS: "detect_leaks=0:allocator_may_return_null=1"
|
|
UBSAN_OPTIONS: "print_stacktrace=1:halt_on_error=1"
|
|
run: |
|
|
# Compile against the STAGED headers/libs (DESTDIR), not /usr/local
|
|
clang -std=c99 tests/fuzz/fuzz_bos_descriptor.c \
|
|
-I"$PWD/build-asan/stage/usr/local/include/libusb-1.0" \
|
|
-fsanitize=fuzzer,address,undefined -fno-omit-frame-pointer \
|
|
-fstack-protector-all -ftrivial-auto-var-init=pattern -Wwrite-strings \
|
|
-L"$PWD/build-asan/stage/usr/local/lib" -lusb-1.0 \
|
|
-o fuzz_bos_descriptor
|
|
|
|
./fuzz_bos_descriptor tests/fuzz/corpus/bos \
|
|
-seed=1 -runs=200 -max_total_time=15 -timeout=5 -rss_limit_mb=1536 -print_final_stats=1
|
|
# --- end sanitizers + fuzzer smoke --- |