| # |
| # 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. |
| # |
| # cmake.yml -- Configuration for CMake GitHub Action workflow. |
| # |
| |
| name: CMake |
| |
| on: |
| push: |
| branches: ["*"] |
| |
| concurrency: |
| group: ${{ github.ref }} |
| cancel-in-progress: false |
| |
| defaults: |
| run: |
| shell: pwsh |
| |
| jobs: |
| build: |
| strategy: |
| fail-fast: false |
| matrix: |
| include: |
| - name: Windows, shared, x64, with tests |
| os: windows-latest |
| build_shared: ON |
| cmake_generator: Ninja |
| vcpkg_triplet: x64-windows |
| arch: x64 |
| run_tests: true |
| - name: Windows, shared, x64, vs2022, with tests |
| os: windows-latest |
| build_shared: ON |
| cmake_generator: 'Visual Studio 17 2022' |
| vcpkg_triplet: x64-windows |
| arch: x64 |
| run_tests: true |
| - name: Windows, shared, x86 |
| os: windows-latest |
| build_shared: ON |
| cmake_generator: Ninja |
| vcpkg_triplet: x86-windows |
| arch: x86 |
| - name: Windows, static, x64, with tests |
| os: windows-latest |
| build_shared: OFF |
| cmake_generator: Ninja |
| vcpkg_triplet: x64-windows-static-md |
| arch: x64 |
| run_tests: true |
| - name: Linux, shared, with tests |
| os: ubuntu-latest |
| cmake_generator: Ninja |
| build_shared: ON |
| run_tests: true |
| extra_config_opts: > |
| -DSVN_ENABLE_AUTH_KWALLET=ON |
| -DSVN_ENABLE_AUTH_GNOME_KEYRING=ON |
| extra_packages: > |
| libkf5wallet-dev |
| libkf5coreaddons-dev |
| libkf5i18n-dev |
| libdbus-1-dev |
| qtbase5-dev |
| libsecret-1-dev |
| |
| runs-on: ${{ matrix.os }} |
| name: ${{ matrix.name }} |
| |
| env: |
| VCPKG_BINARY_SOURCES: "clear;x-gha,readwrite" |
| CMAKE_GENERATOR: ${{ matrix.cmake_generator }} |
| |
| steps: |
| - name: Prepare Environment (Windows) |
| if: runner.os == 'Windows' |
| run: | |
| $root = "C:\Program Files\Microsoft Visual Studio\2022\Enterprise" |
| Import-Module "$root\Common7\Tools\Microsoft.VisualStudio.DevShell.dll" |
| Enter-VsDevShell -VsInstallPath $root -DevCmdArguments "-arch=${{ matrix.arch }}" |
| |
| ls env: | foreach { "$($_.Name)=$($_.Value)" >> $env:GITHUB_ENV } |
| |
| - name: Prepare Environment (Linux) |
| if: runner.os == 'Windows' |
| run: | |
| # nothing yet |
| |
| - name: Export GitHub Actions cache environment variables |
| if: runner.os == 'Windows' |
| uses: actions/github-script@v7 |
| with: |
| script: | |
| core.exportVariable('ACTIONS_CACHE_URL', process.env.ACTIONS_CACHE_URL || ''); |
| core.exportVariable('ACTIONS_RUNTIME_TOKEN', process.env.ACTIONS_RUNTIME_TOKEN || ''); |
| |
| - name: Install dependencies (Windows, vcpkg) |
| if: runner.os == 'Windows' |
| run: | |
| C:\vcpkg\vcpkg.exe install --triplet ${{ matrix.vcpkg_triplet }} ` |
| apr apr-util serf expat zlib sqlite3 |
| |
| "CMAKE_TOOLCHAIN_FILE=C:/vcpkg/scripts/buildsystems/vcpkg.cmake" >> $env:GITHUB_ENV |
| |
| - 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 |
| ninja-build |
| ${{ matrix.extra_packages }} |
| |
| - name: Use LF for Git checkout |
| run: | |
| git config --global core.autocrlf false |
| git config --global core.eol lf |
| |
| - uses: actions/checkout@v4 |
| |
| - name: gen-make |
| run: python ./gen-make.py -t cmake |
| |
| - name: Configure CMake |
| run: > |
| cmake -B out |
| -DBUILD_SHARED_LIBS=${{ matrix.build_shared }} |
| -DSVN_ENABLE_TESTS=ON |
| -DSVN_ENABLE_RA_SERF=ON |
| -DCMAKE_INSTALL_PREFIX=${{ github.workspace }}/installdir |
| -DVCPKG_TARGET_TRIPLET=${{ matrix.vcpkg_triplet }} |
| -DSVN_TEST_CONFIGURE_FOR_PARALLEL=ON |
| ${{ matrix.extra_config_opts }} |
| |
| - name: Build CMake |
| run: cmake --build out --config Release |
| |
| - name: Install |
| run: cmake --install out --config Release |
| |
| - name: Run all tests |
| id: run_all_tests |
| if: matrix.run_tests |
| working-directory: out |
| run: ctest --output-on-failure --verbose -C Release --parallel 16 |
| |
| - name: Test shelf2 |
| if: matrix.run_tests |
| working-directory: out |
| env: |
| SVN_EXPERIMENTAL_COMMANDS: shelf2 |
| run: ctest -R shelf2 --verbose -C Release |
| |
| - name: Test shelf3 |
| if: matrix.run_tests |
| working-directory: out |
| env: |
| SVN_EXPERIMENTAL_COMMANDS: shelf3 |
| run: ctest -R shelf3 --verbose -C Release |