diff options
Diffstat (limited to '.github/workflows/build-test-ci.yml')
-rw-r--r-- | .github/workflows/build-test-ci.yml | 85 |
1 files changed, 85 insertions, 0 deletions
diff --git a/.github/workflows/build-test-ci.yml b/.github/workflows/build-test-ci.yml new file mode 100644 index 0000000..b2f2bf0 --- /dev/null +++ b/.github/workflows/build-test-ci.yml @@ -0,0 +1,85 @@ +# 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 |