Improve Core Builds for Linux (#3706)

This commit is contained in:
Bart Louwers
2025-08-09 21:12:46 +02:00
committed by GitHub
parent 16be52ed55
commit 76d317ebc3
8 changed files with 70 additions and 88 deletions

View File

@@ -78,8 +78,8 @@ jobs:
- name: Build mbgl-core for Linux
run: |
cmake --preset linux-${{ matrix.renderer }}-core -DCMAKE_CXX_COMPILER_LAUNCHER=""
cmake --build --preset linux-${{ matrix.renderer }}-core
cmake --preset linux-${{ matrix.renderer }} -DCMAKE_CXX_COMPILER_LAUNCHER=""
cmake --build build-linux-${{ matrix.renderer }} --target mbgl-core
- name: Rename artifact
run: |

View File

@@ -24,6 +24,9 @@ permissions:
contents: read # needed for CodeQL
security-events: write # needed for CodeQL
env:
EGL_PLATFORM: surfaceless
jobs:
pre_job:
runs-on: ubuntu-22.04
@@ -53,7 +56,13 @@ jobs:
strategy:
fail-fast: true
matrix:
renderer: [vulkan, drawable, drawable-rust]
variant:
- renderer: vulkan
rust: false
- renderer: opengl
rust: false
- renderer: opengl
rust: true
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v4
@@ -75,17 +84,8 @@ jobs:
- name: Install dependencies
run: .github/scripts/install-linux-deps
- if: matrix.renderer == 'drawable-rust'
run: |
echo "renderer_flag_cmake=DMLN_WITH_OPENGL=ON -DMLN_USE_RUST=ON" >> "$GITHUB_ENV"
cargo install cxxbridge-cmd --version 1.0.157 --locked
- if: matrix.renderer == 'drawable'
run: |
echo "-DMLN_WITH_OPENGL=ON" >> "$GITHUB_ENV"
- if: matrix.renderer == 'vulkan'
run: echo renderer_flag_cmake="-DMLN_WITH_VULKAN=ON -DMLN_WITH_OPENGL=OFF" >> "$GITHUB_ENV"
- if: matrix.variant.rust
run: cargo install cxxbridge-cmd --version 1.0.157 --locked
- name: Install sccache
run: |
@@ -103,7 +103,7 @@ jobs:
role-to-assume: ${{ vars.OIDC_AWS_ROLE_TO_ASSUME }}
role-session-name: ${{ github.run_id }}
- name: Build MapLibre Native Core
- name: Build MapLibre Native
env:
CI: 1
run: |
@@ -118,12 +118,12 @@ jobs:
export SCCACHE_S3_NO_CREDENTIALS=1
fi
cmake -B build -GNinja -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ -DCMAKE_BUILD_TYPE=RelWithDebInfo -DMLN_WITH_CLANG_TIDY=ON \
cmake --preset linux-${{ matrix.variant.renderer }} \
-DMLN_WITH_CLANG_TIDY=ON \
-DCMAKE_C_COMPILER_LAUNCHER=sccache \
-DCMAKE_CXX_COMPILER_LAUNCHER=sccache \
-DMLN_WITH_COVERAGE=ON \
${{ env.renderer_flag_cmake }}
cmake --build build --target mbgl-core mbgl-test-runner mbgl-render-test-runner mbgl-expression-test mbgl-render mbgl-benchmark-runner
-DMLN_WITH_COVERAGE=ON
cmake --build build-linux-${{ matrix.variant.renderer }} --target mbgl-core mbgl-test-runner mbgl-render-test-runner mbgl-expression-test mbgl-render mbgl-benchmark-runner
# mbgl-render (used for size test) & mbgl-benchmark-runner
@@ -131,26 +131,26 @@ jobs:
run: sccache --show-stats
- name: Upload mbgl-render as artifact
if: matrix.renderer == 'drawable' && github.event_name == 'pull_request'
if: matrix.variant.renderer == 'opengl' && !matrix.variant.rust && github.event_name == 'pull_request'
uses: actions/upload-artifact@v4
with:
name: mbgl-render
path: |
build/bin/mbgl-render
build-linux-${{ matrix.variant.renderer }}/bin/mbgl-render
- name: Upload mbgl-benchmark-runner as artifact
if: matrix.renderer == 'drawable' && github.event_name == 'pull_request'
if: matrix.variant.renderer == 'opengl' && !matrix.variant.rust && github.event_name == 'pull_request'
uses: actions/upload-artifact@v4
with:
name: mbgl-benchmark-runner
path: |
build/mbgl-benchmark-runner
build-linux-${{ matrix.variant.renderer }}/mbgl-benchmark-runner
- name: Upload mbgl-render & mbgl-benchmark-runner to S3
if: matrix.renderer == 'drawable' && github.ref == 'refs/heads/main' && vars.OIDC_AWS_ROLE_TO_ASSUME
if: matrix.variant.renderer == 'opengl' && !matrix.variant.rust && github.ref == 'refs/heads/main' && vars.OIDC_AWS_ROLE_TO_ASSUME
run: |
aws s3 cp build/bin/mbgl-render s3://maplibre-native/mbgl-render-main
aws s3 cp build/mbgl-benchmark-runner s3://maplibre-native/mbgl-benchmark-runner-main
aws s3 cp build-linux-${{ matrix.variant.renderer }}/bin/mbgl-render s3://maplibre-native/mbgl-render-main
aws s3 cp build-linux-${{ matrix.variant.renderer }}/mbgl-benchmark-runner s3://maplibre-native/mbgl-benchmark-runner-main
# CodeQL
@@ -161,39 +161,39 @@ jobs:
# unit tests
- run: chmod +x build/mbgl-test-runner
- run: chmod +x build-linux-${{ matrix.variant.renderer }}/mbgl-test-runner
- name: Run C++ tests
continue-on-error: ${{ matrix.renderer == 'vulkan' }}
run: xvfb-run -a build/mbgl-test-runner
continue-on-error: ${{ matrix.variant.renderer == 'vulkan' }}
run: xvfb-run -a build-linux-${{ matrix.variant.renderer }}/mbgl-test-runner
# render tests
- run: chmod +x build/mbgl-render-test-runner
- run: chmod +x build-linux-${{ matrix.variant.renderer }}/mbgl-render-test-runner
- name: Run render test
id: render_test
run: |
renderer="${{ matrix.renderer }}"
renderer="${{ matrix.variant.renderer }}"
if [[ "$renderer" == *-rust ]]; then
renderer=${renderer%-rust}
fi
xvfb-run -a build/mbgl-render-test-runner --manifestPath=metrics/linux-"$renderer".json
xvfb-run -a build-linux-${{ matrix.variant.renderer }}/mbgl-render-test-runner --manifestPath=metrics/linux-"$renderer".json
- name: Upload render test result
if: always() && steps.render_test.outcome == 'failure'
uses: actions/upload-artifact@v4
with:
name: render-test-result-${{ matrix.renderer }}
name: render-test-result-${{ matrix.variant.renderer }}
path: |
metrics/linux-${{ matrix.renderer }}.html
metrics/linux-${{ matrix.variant.renderer }}.html
# expression tests
- run: chmod +x build/expression-test/mbgl-expression-test
- run: chmod +x build-linux-${{ matrix.variant.renderer }}/expression-test/mbgl-expression-test
- name: Run expression test
run: build/expression-test/mbgl-expression-test
run: build-linux-${{ matrix.variant.renderer }}/expression-test/mbgl-expression-test
- if: github.event_name == 'pull_request'
uses: ./.github/actions/save-pr-number