Linux Check #49
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Linux Check | |
on: | |
workflow_dispatch: # Manual trigger | |
push: | |
branches: | |
- master | |
pull_request: | |
paths-ignore: | |
- .gitignore | |
- .github/** | |
- '!.github/workflows/linux-check.yaml' # Run check on self change | |
- CONTRIBUTORS | |
- LICENSE | |
- NOTICE | |
- README.md | |
- android/** | |
- iphone/** | |
- data/strings/** | |
- docs/** | |
- packaging/** | |
- pyhelpers/** | |
- tools/** | |
- '!tools/python/test_server/**' | |
- xcode/** | |
jobs: | |
linux-no-unity: | |
name: Linux no unity build | |
runs-on: ubuntu-22.04 | |
# Cancels previous jobs if the same branch or PR was updated again. | |
concurrency: | |
group: ${{ github.workflow }}-no-unity-${{ github.event.pull_request.number || github.ref }} | |
cancel-in-progress: true | |
steps: | |
- name: Free disk space by removing .NET, Android and Haskell | |
shell: bash | |
run: | | |
sudo rm -rf /usr/share/dotnet /usr/local/lib/android /opt/ghc | |
- name: Checkout sources | |
uses: actions/checkout@v3 | |
with: | |
fetch-depth: 100 # enough to get all commits for the current day | |
- name: Parallel submodules checkout | |
shell: bash | |
run: git submodule update --depth 1 --init --recursive --jobs=$(($(nproc) * 20)) | |
- name: Install build tools and dependencies | |
shell: bash | |
run: | | |
sudo apt update -y | |
sudo apt install -y \ | |
ninja-build \ | |
libgl1-mesa-dev \ | |
libglvnd-dev \ | |
qt6-base-dev \ | |
libqt6svg6-dev \ | |
qt6-positioning-dev \ | |
libqt6positioning6-plugins \ | |
libqt6positioning6 | |
- name: Configure | |
shell: bash | |
run: ./configure.sh | |
- name: Configure ccache | |
uses: hendrikmuhs/[email protected] | |
with: | |
key: ${{ github.workflow }}-no-unity | |
- name: CMake | |
shell: bash | |
env: | |
CC: clang-14 | |
CXX: clang++-14 | |
CMAKE_C_COMPILER_LAUNCHER: ccache | |
CMAKE_CXX_COMPILER_LAUNCHER: ccache | |
# -g1 should slightly reduce build time. | |
run: | | |
cmake . -B build -G Ninja -DCMAKE_BUILD_TYPE=Debug \ | |
-DCMAKE_CXX_FLAGS=-g1 -DUNITY_DISABLE=ON | |
- name: Compile | |
shell: bash | |
working-directory: build | |
run: ninja | |
linux-matrix: | |
name: Linux builds and tests | |
runs-on: ubuntu-22.04 | |
strategy: | |
fail-fast: false | |
matrix: | |
compiler: [{ CXX: g++-12, CC: gcc-12 }, { CXX: clang++-14, CC: clang-14 }] | |
CMAKE_BUILD_TYPE: [Debug, RelWithDebInfo] | |
# Cancels previous jobs if the same branch or PR was updated again. | |
concurrency: | |
group: ${{ github.workflow }}-unity-${{ matrix.compiler.CC }}-${{ matrix.CMAKE_BUILD_TYPE }}-${{ github.event.pull_request.number || github.ref }} | |
cancel-in-progress: true | |
steps: | |
- name: Free disk space by removing .NET, Android and Haskell | |
shell: bash | |
run: | | |
sudo rm -rf /usr/share/dotnet /usr/local/lib/android /opt/ghc | |
- name: Checkout sources | |
uses: actions/checkout@v3 | |
- name: Parallel submodules checkout | |
shell: bash | |
run: git submodule update --depth 1 --init --recursive --jobs=$(($(nproc) * 20)) | |
- name: Install build tools and dependencies | |
shell: bash | |
run: | | |
sudo apt update -y | |
sudo apt install -y \ | |
g++-12 \ | |
gcc-12 \ | |
ninja-build \ | |
libgl1-mesa-dev \ | |
libglvnd-dev \ | |
qt6-base-dev \ | |
libqt6svg6-dev \ | |
qt6-positioning-dev \ | |
libqt6positioning6-plugins \ | |
libqt6positioning6 | |
- name: Configure | |
shell: bash | |
run: ./configure.sh | |
- name: Configure ccache | |
uses: hendrikmuhs/[email protected] | |
with: | |
key: ${{ github.workflow }}-unity-${{ matrix.compiler.CC }}-${{ matrix.CMAKE_BUILD_TYPE }} | |
- name: CMake | |
shell: bash | |
env: | |
CC: ${{ matrix.compiler.CC }} | |
CXX: ${{ matrix.compiler.CXX }} | |
CMAKE_C_COMPILER_LAUNCHER: ccache | |
CMAKE_CXX_COMPILER_LAUNCHER: ccache | |
# -g1 should slightly reduce build time. | |
run: | | |
echo "Building ${{ matrix.CMAKE_BUILD_TYPE }}" | |
cmake . -B build -G Ninja -DCMAKE_BUILD_TYPE=${{ matrix.CMAKE_BUILD_TYPE }} \ | |
-DCMAKE_C_FLAGS=-g1 -DCMAKE_CXX_FLAGS=-g1 | |
- name: Compile | |
shell: bash | |
working-directory: build | |
run: ninja | |
- name: Tests | |
shell: bash | |
working-directory: build | |
env: | |
# drape_tests - requires X Window | |
# generator_integration_tests - https://github.com/organicmaps/organicmaps/issues/225 | |
# opening_hours_integration_tests - https://github.com/organicmaps/organicmaps/issues/219 | |
# opening_hours_supported_features_tests - https://github.com/organicmaps/organicmaps/issues/219 | |
# routing_integration_tests - https://github.com/organicmaps/organicmaps/issues/221 | |
# shaders_tests - https://github.com/organicmaps/organicmaps/issues/223 | |
# world_feed_integration_tests - https://github.com/organicmaps/organicmaps/issues/215 | |
CTEST_EXCLUDE_REGEX: "drape_tests|generator_integration_tests|opening_hours_integration_tests|opening_hours_supported_features_tests|routing_benchmarks|routing_integration_tests|routing_quality_tests|search_quality_tests|storage_integration_tests|shaders_tests|world_feed_integration_tests" | |
run: | | |
ln -s ../data data | |
ctest -LE "fixture" -E "$CTEST_EXCLUDE_REGEX" --output-on-failure |