From cac67b24a21ccd4d7b8202fac820685bb829dc10 Mon Sep 17 00:00:00 2001 From: Ivan Zhakov Date: Mon, 12 Sep 2022 14:41:40 +0000 Subject: On 1.7.x branch: Merge r1902092, r1902096, r1902139, r1902140, r1902141, r1902143, r1902146, r1902164, r1902166, r1902226, r1902295 from trunk: GitHub Actions configuration. git-svn-id: https://svn.apache.org/repos/asf/apr/apr/branches/1.7.x@1904011 13f79535-47bb-0310-9956-ffa450edef68 --- .github/workflows/linux.yml | 59 +++++++++++++++++++++++++++++++++++++++++++ .github/workflows/macos.yml | 32 +++++++++++++++++++++++ .github/workflows/windows.yml | 42 ++++++++++++++++++++++++++++++ 3 files changed, 133 insertions(+) create mode 100644 .github/workflows/linux.yml create mode 100644 .github/workflows/macos.yml create mode 100644 .github/workflows/windows.yml diff --git a/.github/workflows/linux.yml b/.github/workflows/linux.yml new file mode 100644 index 000000000..be46a2a74 --- /dev/null +++ b/.github/workflows/linux.yml @@ -0,0 +1,59 @@ +name: Linux + +on: + push: + branches: [ "*" ] + pull_request: + branches: [ "trunk" ] + +env: + MARGS: "-j2" + +jobs: + + build: + strategy: + matrix: + include: + - name: Default + - name: Static + config: --enable-static + - name: Maintainer-mode + config: --enable-maintainer-mode + - name: Pool-debug + config: --enable-pool-debug + - name: Pool-debug, maintainer-mode + config: --enable-pool-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: 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 + 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 + - uses: actions/checkout@v3 + - name: buildconf + run: ./buildconf + - name: configure + run: ./configure ${{ matrix.config }} + - name: make + run: make $MARGS + - name: make check + run: make check diff --git a/.github/workflows/macos.yml b/.github/workflows/macos.yml new file mode 100644 index 000000000..dfbc95dbb --- /dev/null +++ b/.github/workflows/macos.yml @@ -0,0 +1,32 @@ +name: macOS + +on: + push: + branches: [ "*" ] + pull_request: + branches: [ "trunk" ] + +env: + MARGS: "-j2" + +jobs: + + build: + strategy: + matrix: + os: [ "macos-latest" ] + + runs-on: ${{ matrix.os }} + env: + NOTEST_CFLAGS: ${{ matrix.notest-cflags }} + name: ${{ matrix.name }} + steps: + - uses: actions/checkout@v3 + - name: buildconf + run: ./buildconf + - name: configure + run: ./configure + - name: make + run: make $MARGS + - name: make check + run: make check diff --git a/.github/workflows/windows.yml b/.github/workflows/windows.yml new file mode 100644 index 000000000..a7f7603bc --- /dev/null +++ b/.github/workflows/windows.yml @@ -0,0 +1,42 @@ +name: Windows + +on: + push: + branches: [ "*" ] + pull_request: + branches: [ "trunk" ] + +jobs: + build: + strategy: + matrix: + os: [windows-latest] + build-type: [Debug, Release] + generator: [ "Visual Studio 17 2022" ] + arch: [ "Win32", "x64" ] + toolset: [ "v143", "v142", "v141" ] + fail-fast: false + + name: "MSVC ${{ matrix.toolset }} ${{ matrix.arch }} [${{ matrix.build-type }}] on ${{ matrix.os }}" + # The CMake configure and build commands are platform agnostic and should work equally well on Windows or Mac. + # You can convert this to a matrix build if you need cross-platform coverage. + # See: https://docs.github.com/en/free-pro-team@latest/actions/learn-github-actions/managing-complex-workflows#using-a-build-matrix + runs-on: ${{ matrix.os }} + + steps: + - uses: actions/checkout@v3 + + - name: Configure CMake + # Configure CMake in a 'build' subdirectory. `CMAKE_BUILD_TYPE` is only required if you are using a single-configuration generator such as make. + # See https://cmake.org/cmake/help/latest/variable/CMAKE_BUILD_TYPE.html?highlight=cmake_build_type + run: cmake -B ${{github.workspace}}/build -DCMAKE_BUILD_TYPE=${{ matrix.build-type }} -DAPR_BUILD_TESTAPR=ON -G "${{ matrix.generator }}" -A ${{ matrix.arch }} -T ${{ matrix.toolset }} + + - name: Build + # Build your program with the given configuration + run: cmake --build ${{github.workspace}}/build --config ${{ matrix.build-type }} + + - name: Test + working-directory: ${{github.workspace}}/build + # Execute tests defined by the CMake configuration. + # See https://cmake.org/cmake/help/latest/manual/ctest.1.html for more detail + run: ctest -C ${{ matrix.build-type }} --output-on-failure -- cgit v1.2.1