# # Licensed to the Apache Software Foundation (ASF) under one # or more contributor license agreements. See the NOTICE file # distributed with this work for additional information # regarding copyright ownership. The ASF licenses this file # to you under the Apache License, Version 2.0 (the # "License"); you may not use this file except in compliance # with the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, # software distributed under the License is distributed on an # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY # KIND, either express or implied. See the License for the # specific language governing permissions and limitations # under the License. # # autoconf.yml -- Configuration for autoconf GitHub Action workflow. # name: autoconf on: push: branches: ["*"] paths-ignore: - 'doc/**' - 'notes/**' - CHANGES - COMMITTERS - INSTALL - STATUS - README pull_request: branches: ["*"] paths-ignore: - 'doc/**' - 'notes/**' - CHANGES - COMMITTERS - INSTALL - STATUS - README concurrency: group: ${{ github.workflow }}-${{ github.ref }} cancel-in-progress: false jobs: build: strategy: fail-fast: false matrix: check-target: [check, davautocheck] os: [ubuntu-latest, ubuntu-22.04-arm, macos-latest] httpd: [system, trunk, 2.4.x] # Only run davautocheck for httpd trunk/2.4.x # Disable non-system (i.e., Homebrew) httpd on macOS exclude: - check-target: check httpd: trunk - check-target: check httpd: 2.4.x - httpd: trunk os: macos-latest - httpd: 2.4.x os: macos-latest runs-on: ${{ matrix.os }} name: ${{ matrix.os }}, target ${{ matrix.check-target }}, ${{ matrix.httpd }} httpd steps: - name: Install dependencies (Linux, apt-get) if: runner.os == 'Linux' run: > sudo apt-get update && sudo apt-get install libtool libtool-bin libapr1-dev libaprutil1-dev libserf-dev libexpat1-dev zlib1g-dev libsqlite3-dev liblz4-dev libutf8proc-dev ${{ matrix.httpd == 'system' && 'apache2-dev' || '' }} libsecret-1-dev python3-lxml python3-rnc2rng - name: Install dependencies (macOS, homebrew) if: runner.os == 'macOS' run: > brew install autoconf libtool apr apr-util apache-serf httpd sqlite3 lz4 utf8proc - name: Install dependencies (macOS, python) if: runner.os == 'macOS' run: | python3 -m venv "$HOME/test-python-venv" "$HOME/test-python-venv/bin/python3" -m pip \ -v \ --disable-pip-version-check \ install lxml==6.1.0 rnc2rng==2.7.0 - name: Use LF for Git checkout run: | git config --global core.autocrlf false git config --global core.eol lf - name: Install Apache httpd (Linux) if: runner.os == 'Linux' run: | test "${{ matrix.httpd }}" != 'system' || exit 0 git clone -q --depth=1 -b ${{ matrix.httpd }} https://github.com/apache/httpd cd httpd ./buildconf --with-apr=/usr/bin/apr-1-config ./configure --prefix=$HOME/root/httpd --enable-mpms-shared=event --enable-mods-shared=most --enable-dav make -j make install - uses: actions/checkout@v6 - name: Set platform-specific values id: platform run: | if test "$RUNNER_OS" = 'macOS'; then echo "python=$HOME/test-python-venv/bin/python3" >> "$GITHUB_OUTPUT" echo "apache-mpm=prefork" >> "$GITHUB_OUTPUT" else echo "python=$(which python3)" >> "$GITHUB_OUTPUT" echo "apache-mpm=event" >> "$GITHUB_OUTPUT" fi - name: Autogen env: PYTHON: ${{ steps.platform.outputs.python }} run: ./autogen.sh - name: Configure (Linux) if: runner.os == 'Linux' env: PYTHON: ${{ steps.platform.outputs.python }} run: | ./configure --enable-maintainer-mode \ --with-apxs=${{ matrix.httpd == 'system' && '/usr/bin/apxs' || '${HOME}/root/httpd/bin/apxs' }} - name: Configure (macOS) if: runner.os == 'macOS' env: CC: clang CXX: clang++ PYTHON: ${{ steps.platform.outputs.python }} run: | export PATH="$(dirname "$PYTHON"):$PATH" ./configure --enable-maintainer-mode \ --disable-nls \ --enable-keychain \ --enable-svnbrowse \ --with-apr="$(brew --prefix apr)" \ --with-apr-util="$(brew --prefix apr-util)" \ --with-serf="$(brew --prefix apache-serf)" \ --with-sqlite="$(brew --prefix sqlite)" \ --with-lz4="$(brew --prefix lz4)" \ --with-utf8proc="$(brew --prefix utf8proc)" \ --with-apxs="$(brew --prefix httpd)/bin/apxs" \ --disable-mod-activation \ --without-libmagic \ --without-berkeley-db \ --without-swig - name: Build (make) run: make -j4 - name: Run tests run: | make ${{matrix.check-target}} PARALLEL=6 \ APACHE_MPM="${{ steps.platform.outputs.apache-mpm }}" \ CHECK_XML_SCHEMA=1 - name: Archive test logs if: always() uses: actions/upload-artifact@v7 with: name: tests-${{matrix.os}}-${{matrix.check-target}}-${{matrix.httpd}} path: | tests.log subversion/tests/cmdline/httpd**/*_log - name: Install (make install) run: sudo make install