| name: Linux | |
| on: | |
| push: | |
| branches: [ "*" ] | |
| tags: [ "*" ] | |
| pull_request: | |
| branches: [ "trunk" ] | |
| env: | |
| MARGS: "-j2" | |
| jobs: | |
| build: | |
| strategy: | |
| matrix: | |
| include: | |
| - name: Default | |
| # Check default shm decision logic for Linux: | |
| config-output: APR_USE_SHMEM_MMAP_SHM APR_USE_SHMEM_MMAP_ANON | |
| - name: Static | |
| config: --enable-static | |
| - name: Maintainer-mode | |
| config: --enable-maintainer-mode | |
| - name: Named SHM - SysV, Maintainer-mode | |
| config: --enable-maintainer-mode --enable-sysv-shm | |
| config-output: APR_USE_SHMEM_SHMGET | |
| - name: Named SHM - Classic mmap, Maintainer-mode | |
| config: --enable-maintainer-mode ac_cv_func_shm_open=no ac_cv_func_shmget=no | |
| config-output: APR_USE_SHMEM_MMAP_TMP | |
| - name: Pool-debug | |
| config: --enable-pool-debug | |
| - name: Pool-debug, maintainer-mode | |
| config: --enable-pool-debug --enable-maintainer-mode | |
| - name: Thread-debug, maintainer-mode | |
| config: --enable-thread-debug --enable-maintainer-mode | |
| - name: Maintainer-mode, no IPv6 | |
| config: --enable-maintainer-mode --disable-ipv6 | |
| - name: Maintainer-mode, -Werror | |
| notest-cflags: -Werror | |
| config: --enable-maintainer-mode | |
| - name: With crypto | |
| config: --with-crypto=yes --with-openssl=yes | |
| config-output: APU_HAVE_CRYPTO APU_HAVE_OPENSSL | |
| - name: ASan | |
| # w/o ODBC since DSO unload leaks memory and fails the tests | |
| notest-cflags: -fsanitize=address -fno-sanitize-recover=address -fno-omit-frame-pointer -Werror -O2 | |
| config: --with-odbc=no | |
| - name: ASan, pool-debug | |
| # w/o ODBC since DSO unload leaks memory and fails the tests | |
| notest-cflags: -fsanitize=address -fno-sanitize-recover=address -fno-omit-frame-pointer -Werror -O2 | |
| config: --enable-pool-debug --with-odbc=no | |
| - name: UBsan | |
| notest-cflags: -fsanitize=undefined -fno-sanitize-recover=undefined -fno-omit-frame-pointer -Werror -O2 | |
| - name: LMDB | |
| packages: liblmdb-dev | |
| notest-cflags: -Werror | |
| config: --enable-maintainer-mode --with-lmdb --with-dbm=lmdb | |
| config-output: APU_HAVE_LMDB | |
| - name: Berkeley DB v5.3 | |
| packages: libdb5.3-dev | |
| notest-cflags: -Werror | |
| config: --enable-maintainer-mode --with-berkeley-db --with-dbm=db5 | |
| config-output: APU_HAVE_DB | |
| fail-fast: false | |
| runs-on: ubuntu-latest | |
| env: | |
| NOTEST_CFLAGS: ${{ matrix.notest-cflags }} | |
| name: ${{ matrix.name }} | |
| steps: | |
| - name: Install prerequisites | |
| run: sudo apt-get install libtool libtool-bin ${{ matrix.packages }} | |
| - uses: actions/checkout@v4 | |
| # https://github.com/actions/runner-images/issues/9491#issuecomment-1989718917 | |
| - name: Workaround ASAN issue in Ubuntu 22.04 runners | |
| run: sudo sysctl vm.mmap_rnd_bits=28 | |
| - name: buildconf | |
| run: ./buildconf | |
| - name: configure | |
| run: ./configure --prefix=/tmp/apr ${{ matrix.config }} | |
| - if: ${{ matrix.config-output != '' }} | |
| name: check for expected configure output ${{ matrix.config-output }} | |
| run: for var in ${{ matrix.config-output }}; do grep "^#define *${var} *1" include/apr.h; done | |
| - name: make | |
| run: make $MARGS | |
| - name: install | |
| run: make install | |
| - name: check | |
| run: make check |