# GitHub actions workflow. # https://docs.github.com/en/actions/learn-github-actions/workflow-syntax-for-github-actions name: Build+Test CI #on: # push: # branches: [master, gh-actions] # tags: [v*] # pull_request: # types: [created, opened, edited, push] on: [pull_request, push] jobs: make: strategy: matrix: os: [ubuntu-latest] cc: [gcc, clang] sanitize: [none, asan, ubsan] fail-fast: false runs-on: ${{ matrix.os }} env: CC: ${{ matrix.cc }} SANITIZER: ${{ matrix.sanitize }} ASAN_OPTIONS: "detect_leaks=0" # known leaks in install-xattr UBSAN_OPTIONS: "print_stacktrace=1:halt_on_error=1" steps: - name: Install dependencies run: | sudo apt-get update -qq sudo apt-get install build-essential gcc clang attr libattr1-dev autotools-dev automake autoconf libelf-dev libtool -qy case "$SANITIZER" in none) ;; asan) echo CFLAGS="-O2 -ggdb3 -fsanitize=address" >> $GITHUB_ENV echo CXXFLAGS="-O2 -ggdb3 -fsanitize=address" >> $GITHUB_ENV echo LDFLAGS="-fsanitize=address" >> $GITHUB_ENV ;; ubsan) echo CFLAGS="-O2 -ggdb3 -fsanitize=undefined" >> $GITHUB_ENV echo CXXFLAGS="-O2 -ggdb3 -fsanitize=undefined" >> $GITHUB_ENV echo LDFLAGS="-fsanitize=undefined" >> $GITHUB_ENV ;; esac - uses: actions/checkout@v3 name: Checkout - name: Build (main) run: | ./autogen.sh ./configure || cat config.log make V=1 make V=1 check make V=1 distcheck - name: Build (misc/fix-gnustack) run: | case "$CC" in gcc) ;; clang) # Clang doesn't create executable stacks by default, so # tests for fix-gnustack fail without this. export CFLAGS="$CFLAGS -Wl,-z,execstack" export LDFLAGS="$LDFLAGS -Wl,-z,execstack" ;; esac cd misc/fix-gnustack ./autogen.sh ./configure || cat config.log make V=1 make V=1 check make V=1 distcheck - name: Build (misc/install-xattr) run: | cd misc/install-xattr make V=1 make check