| # |
| # 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 |