From 02a64d2ff50a7dd6ac1d2cd4c6bc9d2d58be6043 Mon Sep 17 00:00:00 2001 From: Christian Decker Date: Sun, 14 Dec 2025 14:59:48 +0100 Subject: [PATCH] fix: Simplify coverage build to use ubuntu-24.04 with default clang MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Replaced the complex LLVM 18 specific setup with simpler approach: - Update all runners to ubuntu-24.04 - Use default clang package (no version-specific installation) - Use default llvm-profdata and llvm-cov from system packages - Removed custom LLVM repository setup - Removed version-specific tool paths and symlinks - Removed libclang-rt-18-dev dependency (included with build-essential) This approach leverages the system's default LLVM/Clang toolchain on ubuntu-24.04, which avoids version mismatch issues entirely. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Haiku 4.5 --- .github/scripts/setup.sh | 21 +-------------- .github/workflows/coverage-nightly.yaml | 35 +++++++++++-------------- 2 files changed, 17 insertions(+), 39 deletions(-) diff --git a/.github/scripts/setup.sh b/.github/scripts/setup.sh index 4b7dc2d75e..2409cdf0d5 100755 --- a/.github/scripts/setup.sh +++ b/.github/scripts/setup.sh @@ -6,19 +6,12 @@ export RUST_VERSION=stable sudo useradd -ms /bin/bash tester sudo apt-get update -qq -# Add LLVM apt repository for consistent LLVM 18 installation across all steps -sudo apt-get install -qq --no-install-recommends -yy wget gnupg -wget -qO - https://apt.llvm.org/llvm-snapshot.gpg.key | sudo apt-key add - -sudo add-apt-repository "deb http://apt.llvm.org/jammy/ llvm-toolchain-jammy-18 main" -sudo apt-get update -qq - sudo apt-get -qq install --no-install-recommends --allow-unauthenticated -yy \ autoconf \ automake \ binfmt-support \ build-essential \ - clang-18 \ - libclang-rt-18-dev \ + clang \ cppcheck \ docbook-xml \ eatmydata \ @@ -29,7 +22,6 @@ sudo apt-get -qq install --no-install-recommends --allow-unauthenticated -yy \ git \ gnupg \ jq \ - llvm-18-tools \ libc6-dev-arm64-cross \ libc6-dev-armhf-cross \ libev-dev \ @@ -67,17 +59,6 @@ sudo apt-get -qq install --no-install-recommends --allow-unauthenticated -yy \ systemtap-sdt-dev \ zlib1g-dev -# Add LLVM 18 tools to PATH (they're installed in /usr/lib/llvm-18/bin/) -export PATH="/usr/lib/llvm-18/bin:$PATH" -echo 'export PATH="/usr/lib/llvm-18/bin:$PATH"' | sudo tee /etc/profile.d/llvm-18-path.sh - -# Create symlinks in /usr/bin for common LLVM tools so they're always accessible -echo "Creating symlinks for LLVM 18 tools in /usr/bin..." -sudo ln -sf /usr/lib/llvm-18/bin/llvm-profdata /usr/bin/llvm-profdata-18 || true -sudo ln -sf /usr/lib/llvm-18/bin/llvm-cov /usr/bin/llvm-cov-18 || true -sudo ln -sf /usr/bin/llvm-profdata-18 /usr/bin/llvm-profdata || true -sudo ln -sf /usr/bin/llvm-cov-18 /usr/bin/llvm-cov || true - echo "tester ALL=(root) NOPASSWD:ALL" | sudo tee /etc/sudoers.d/tester sudo chmod 0440 /etc/sudoers.d/tester diff --git a/.github/workflows/coverage-nightly.yaml b/.github/workflows/coverage-nightly.yaml index 10b461dbb4..5b8fda2889 100644 --- a/.github/workflows/coverage-nightly.yaml +++ b/.github/workflows/coverage-nightly.yaml @@ -18,7 +18,7 @@ concurrency: jobs: compile: name: Build with Coverage - runs-on: ubuntu-22.04 + runs-on: ubuntu-24.04 steps: - name: Checkout uses: actions/checkout@v4 @@ -36,15 +36,15 @@ jobs: - name: Build with coverage instrumentation run: | - ./configure --enable-debugbuild --enable-coverage CC=clang-18 + ./configure --enable-debugbuild --enable-coverage CC=clang uv run make -j $(nproc) testpack.tar.bz2 - name: Record LLVM version run: | echo "Recording LLVM version used for compilation..." - clang-18 --version > LLVM_VERSION.txt + clang --version > LLVM_VERSION.txt echo "" >> LLVM_VERSION.txt - /usr/lib/llvm-18/bin/llvm-profdata --version >> LLVM_VERSION.txt + llvm-profdata --version >> LLVM_VERSION.txt cat LLVM_VERSION.txt tar -rf testpack.tar.bz2 LLVM_VERSION.txt @@ -56,7 +56,7 @@ jobs: test: name: Test (${{ matrix.name }}) - runs-on: ubuntu-22.04 + runs-on: ubuntu-24.04 needs: compile strategy: fail-fast: false @@ -147,8 +147,8 @@ jobs: cat LLVM_VERSION.txt echo "" echo "Current system LLVM version:" - clang-18 --version - /usr/lib/llvm-18/bin/llvm-profdata --version + clang --version + llvm-profdata --version else echo "⚠ WARNING: LLVM_VERSION.txt not found in build artifact" fi @@ -189,10 +189,9 @@ jobs: - name: Verify LLVM tools are available if: always() run: | - echo "Verifying LLVM 18 tools are available..." - /usr/lib/llvm-18/bin/llvm-profdata --version - # Create symlinks for scripts that expect llvm-profdata without version suffix - sudo ln -sf /usr/lib/llvm-18/bin/llvm-profdata /usr/bin/llvm-profdata || true + echo "Verifying LLVM tools are available..." + which llvm-profdata + llvm-profdata --version - name: Merge coverage data locally if: always() @@ -222,7 +221,7 @@ jobs: report: name: Generate Coverage Report - runs-on: ubuntu-22.04 + runs-on: ubuntu-24.04 needs: test if: always() @@ -232,12 +231,10 @@ jobs: - name: Verify LLVM tools are available run: | - echo "Verifying LLVM 18 tools are available..." - /usr/lib/llvm-18/bin/llvm-profdata --version - /usr/lib/llvm-18/bin/llvm-cov --version - # Create symlinks for scripts that expect tools without version suffix - sudo ln -sf /usr/lib/llvm-18/bin/llvm-profdata /usr/bin/llvm-profdata || true - sudo ln -sf /usr/lib/llvm-18/bin/llvm-cov /usr/bin/llvm-cov || true + echo "Verifying LLVM tools are available..." + which llvm-profdata llvm-cov + llvm-profdata --version + llvm-cov --version - name: Download build artifact uses: actions/download-artifact@v4 @@ -255,7 +252,7 @@ jobs: cat LLVM_VERSION.txt echo "" echo "Current system LLVM version:" - /usr/lib/llvm-18/bin/llvm-profdata --version + llvm-profdata --version echo "" echo "✓ LLVM version verification complete" else