From 818052344265e2c4e70f1b0e746bb855bb234c07 Mon Sep 17 00:00:00 2001 From: Marcus Holland-Moritz Date: Sun, 17 Aug 2025 12:34:05 +0200 Subject: [PATCH] chore: configure coveralls as code coverage backup --- .docker/build-linux.sh | 7 ++++--- .github/workflows/docker-run-build.yml | 25 +++++++++++++++++++++++-- CMakeLists.txt | 6 ++++++ 3 files changed, 33 insertions(+), 5 deletions(-) diff --git a/.docker/build-linux.sh b/.docker/build-linux.sh index 09cceb43..5c4e4c40 100755 --- a/.docker/build-linux.sh +++ b/.docker/build-linux.sh @@ -422,10 +422,11 @@ esac if [[ "-$BUILD_TYPE-" == *-coverage-* ]]; then rm -f /tmp-runner/dwarfs-coverage.txt + rm -f /tmp-runner/dwarfs-coverage.info + _objects="$(for i in mkdwarfs dwarfs dwarfsck dwarfsextract *_test *_tests ricepp/ricepp_test; do echo $i; done | sed -e's/^/-object=/')" llvm-profdata$CLANG_VERSION merge -sparse profile/* -o dwarfs.profdata - llvm-cov$CLANG_VERSION show -instr-profile=dwarfs.profdata \ - $(for i in mkdwarfs dwarfs dwarfsck dwarfsextract *_test *_tests ricepp/ricepp_test; do echo $i; done | sed -e's/^/-object=/') \ - >/tmp-runner/dwarfs-coverage.txt + llvm-cov$CLANG_VERSION export -format=lcov -compilation-dir="${GITHUB_WORKSPACE}" -instr-profile=dwarfs.profdata \ + -ignore-filename-regex='(^|/)(fsst|folly|fbthrift)/' $_objects >/tmp-runner/dwarfs-coverage.lcov fi if [[ "-$BUILD_TYPE-" == *-static-* ]]; then diff --git a/.github/workflows/docker-run-build.yml b/.github/workflows/docker-run-build.yml index dccc935c..43d55400 100644 --- a/.github/workflows/docker-run-build.yml +++ b/.github/workflows/docker-run-build.yml @@ -81,6 +81,7 @@ jobs: --env BUILD_ARCH=${{ inputs.build_arch }} \ --env CROSS_ARCH=${{ inputs.cross_arch }} \ --env BUILD_DIST=${{ inputs.build_dist }} \ + --env GITHUB_WORKSPACE \ --env GITHUB_REF_NAME \ --env GITHUB_REF_TYPE \ --env GITHUB_RUN_ID \ @@ -88,14 +89,24 @@ jobs: --env GITHUB_RUN_ATTEMPT \ dwarfs-linux-build-${{ inputs.build_dist }} - - name: Upload Coverage Data + - name: Upload Coverage Data (Codecov) uses: codecov/codecov-action@v5 with: token: ${{ secrets.CODECOV_TOKEN }} - files: ${{ runner.temp }}/dwarfs-coverage.txt + files: ${{ runner.temp }}/dwarfs-coverage.lcov fail_ci_if_error: false if: ${{ inputs.upload_coverage }} + - name: Upload Coverage Data (Coveralls) + uses: coverallsapp/github-action@v2 + with: + file: ${{ runner.temp }}/dwarfs-coverage.lcov + format: 'lcov' + fail-on-error: false + env: + COVERALLS_REPO_TOKEN: ${{ secrets.COVERALLS_REPO_TOKEN }} + if: ${{ inputs.upload_coverage }} + - name: Prepare Artifact Upload run: cat ${{ runner.temp }}/artifacts.env >> $GITHUB_ENV if: ${{ inputs.upload_artifacts }} @@ -132,3 +143,13 @@ jobs: env: ACTIONS_ARTIFACT_UPLOAD_CONCURRENCY: 5 if: ${{ inputs.upload_artifacts }} + + - name: Upload Coverage Data Artifact + uses: actions/upload-artifact@v4 + with: + name: dwarfs-coverage + path: ${{ runner.temp }}/dwarfs-coverage.* + if-no-files-found: error + env: + ACTIONS_ARTIFACT_UPLOAD_CONCURRENCY: 5 + if: ${{ inputs.upload_coverage }} diff --git a/CMakeLists.txt b/CMakeLists.txt index 23c55335..b53e661a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -834,6 +834,12 @@ foreach(tgt ${LIBDWARFS_TARGETS} ${LIBDWARFS_OBJECT_TARGETS} dwarfs_test_helpers -fno-omit-frame-pointer) target_link_options(${tgt} PRIVATE -fprofile-instr-generate -fcoverage-mapping) + if(DEFINED ENV{GITHUB_WORKSPACE}) + target_compile_options(${tgt} PRIVATE -fcoverage-prefix-map=${CMAKE_SOURCE_DIR}=$ENV{GITHUB_WORKSPACE} + -ffile-compilation-dir=$ENV{GITHUB_WORKSPACE}) + target_link_options(${tgt} PRIVATE -fcoverage-prefix-map=${CMAKE_SOURCE_DIR}=$ENV{GITHUB_WORKSPACE} + -ffile-compilation-dir=$ENV{GITHUB_WORKSPACE}) + endif() endif() target_compile_definitions(${tgt} PRIVATE DWARFS_COVERAGE_ENABLED=1) endif()