name: Memory access checking on: push: pull_request: jobs: skip_duplicates: continue-on-error: true runs-on: ubuntu-latest outputs: should_skip: ${{ steps.skip_check.outputs.should_skip }} steps: - id: skip_check # pin to unreleased SHA so we can use 'same_content_newer' # see https://github.com/fkirc/skip-duplicate-actions/pull/112 uses: fkirc/skip-duplicate-actions@98d1dc89f43a47f8e4fba8e1c1fb8d6c5fc515ee with: concurrent_skipping: 'same_content_newer' skip_after_successful_duplicate: 'true' paths_ignore: '["doc/**", "**/*.md", ".gitignore", "libxcrypt.spec.rpkg", ".packit.yaml", "rpkg.macros", "AUTHORS", "ChangeLog", "COPYING.LIB", "LICENSING", "NEWS", "README", "THANKS", "TODO"]' do_not_skip: '["workflow_dispatch", "schedule"]' Valgrind: needs: skip_duplicates if: ${{ needs.skip_duplicates.outputs.should_skip != 'true' }} runs-on: ubuntu-latest strategy: fail-fast: false matrix: compiler: [gcc, clang] env: CC: ${{matrix.compiler}} VERBOSE: 1 steps: - name: Checkout uses: actions/checkout@v2 - name: Install packages run: sudo apt-get install clang valgrind - name: Versions of build tools id: build-tools run: ./build-aux/ci-log-dependency-versions - name: Get nprocs run: echo "NPROCS=$((`nproc --all 2>/dev/null || sysctl -n hw.ncpu` * 2))" | tee $GITHUB_ENV - name: Cache bootstrap id: cache uses: actions/cache@v2 with: path: | INSTALL Makefile.in aclocal.m4 config.h.in configure autom4te.cache/** build-aux/compile build-aux/config.guess build-aux/config.sub build-aux/depcomp build-aux/install-sh build-aux/libtool.m4 build-aux/ltmain.sh build-aux/ltoptions.m4 build-aux/ltsugar.m4 build-aux/ltversion.m4 build-aux/lt~obsolete.m4 build-aux/missing build-aux/test-driver key: autoreconf-${{ steps.build-tools.outputs.autotools-ver }}-${{ hashFiles('autogen.sh', 'configure.ac', 'Makefile.am', 'build-aux/*.m4') }} - name: Bootstrap if: steps.cache.outputs.cache-hit != 'true' run: ./autogen.sh - name: Configure run: ./build-aux/configure-wrapper --enable-obsolete-api --enable-hashes=all --enable-valgrind-memcheck - name: Build run: | make -j${{ env.NPROCS }} all make -j${{ env.NPROCS }} test-programs - name: Test run: make -j${{ env.NPROCS }} check-valgrind-memcheck - name: Detailed error logs if: failure() run: ./build-aux/ci-log-logfiles ASan-UBSan: needs: skip_duplicates if: ${{ needs.skip_duplicates.outputs.should_skip != 'true' }} runs-on: ubuntu-latest strategy: fail-fast: false matrix: compiler: [gcc, clang] env: CC: ${{matrix.compiler}} DEB_BUILD_MAINT_OPTIONS: hardening=+all sanitize=+address,+leak,+undefined VERBOSE: 1 steps: - name: Checkout uses: actions/checkout@v2 - name: Install packages if: ${{ matrix.compiler == 'clang' }} run: sudo apt-get install clang - name: Versions of build tools id: build-tools run: ./build-aux/ci-log-dependency-versions - name: Cache bootstrap id: cache uses: actions/cache@v2 with: path: | INSTALL Makefile.in aclocal.m4 config.h.in configure autom4te.cache/** build-aux/compile build-aux/config.guess build-aux/config.sub build-aux/depcomp build-aux/install-sh build-aux/libtool.m4 build-aux/ltmain.sh build-aux/ltoptions.m4 build-aux/ltsugar.m4 build-aux/ltversion.m4 build-aux/lt~obsolete.m4 build-aux/missing build-aux/test-driver key: autoreconf-${{ steps.build-tools.outputs.autotools-ver }}-${{ hashFiles('autogen.sh', 'configure.ac', 'Makefile.am', 'build-aux/*.m4') }} - name: Bootstrap if: steps.cache.outputs.cache-hit != 'true' run: ./autogen.sh - name: Configure run: ./build-aux/configure-wrapper --enable-obsolete-api --enable-hashes=all - name: Build run: | make -j${{ env.NPROCS }} all UNDEF_FLAG= make -j${{ env.NPROCS }} test-programs UNDEF_FLAG= - name: Test run: make -j${{ env.NPROCS }} check - name: Detailed error logs if: failure() run: ./build-aux/ci-log-logfiles