CI: use clang-20 for code coverage
This commit is contained in:
30
.github/workflows/coverage.yml
vendored
30
.github/workflows/coverage.yml
vendored
@@ -2,7 +2,7 @@ name: Code coverage
|
|||||||
|
|
||||||
on:
|
on:
|
||||||
push:
|
push:
|
||||||
branches: ["master", "test"]
|
branches: ["master"]
|
||||||
paths-ignore:
|
paths-ignore:
|
||||||
- 'docker-compose/**'
|
- 'docker-compose/**'
|
||||||
- 'docs/**'
|
- 'docs/**'
|
||||||
@@ -22,6 +22,12 @@ jobs:
|
|||||||
sudo apt update
|
sudo apt update
|
||||||
sudo apt install -y cmake libuv1-dev libzmq3-dev libgss-dev libcurl4-openssl-dev libidn2-0-dev lcov
|
sudo apt install -y cmake libuv1-dev libzmq3-dev libgss-dev libcurl4-openssl-dev libidn2-0-dev lcov
|
||||||
|
|
||||||
|
- name: Install clang
|
||||||
|
run: |
|
||||||
|
wget https://apt.llvm.org/llvm.sh
|
||||||
|
chmod +x llvm.sh
|
||||||
|
sudo ./llvm.sh 20 all
|
||||||
|
|
||||||
- name: Checkout repository
|
- name: Checkout repository
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v4
|
||||||
with:
|
with:
|
||||||
@@ -32,28 +38,28 @@ jobs:
|
|||||||
cd tests
|
cd tests
|
||||||
mkdir build
|
mkdir build
|
||||||
cd build
|
cd build
|
||||||
cmake .. -DCMAKE_BUILD_TYPE=Debug -DDEV_DEBUG=ON -DWITH_COVERAGE=ON -DCMAKE_C_COMPILER=gcc-14 -DCMAKE_CXX_COMPILER=g++-14 -DCMAKE_POLICY_VERSION_MINIMUM="3.5"
|
cmake .. -DCMAKE_BUILD_TYPE=Release -DDEV_DEBUG=ON -DWITH_COVERAGE=ON -DCMAKE_C_COMPILER=clang-20 -DCMAKE_CXX_COMPILER=clang++-20 -DCMAKE_POLICY_VERSION_MINIMUM="3.5"
|
||||||
make -j$(nproc) p2pool_tests
|
make -j$(nproc) p2pool_tests
|
||||||
|
|
||||||
- name: Run tests
|
- name: Run tests
|
||||||
run: |
|
run: |
|
||||||
cd tests/build
|
cd tests/build
|
||||||
gunzip *.gz
|
gunzip *.gz
|
||||||
./p2pool_tests
|
LLVM_PROFILE_FILE="p2pool_tests.profraw" ./p2pool_tests
|
||||||
|
|
||||||
- name: Run gcov
|
- name: Merge profile data
|
||||||
run: |
|
run: |
|
||||||
cd tests/build/CMakeFiles/p2pool_tests.dir/home/runner/work/p2pool/p2pool/src
|
cd tests/build
|
||||||
gcov-14 *.gcda
|
llvm-profdata-20 merge -sparse ./p2pool_tests.profraw -o ./p2pool_tests.profdata
|
||||||
|
|
||||||
- name: Run lcov
|
- name: Export profile data
|
||||||
run: |
|
run: |
|
||||||
cd tests/build/CMakeFiles/p2pool_tests.dir/home/runner/work/p2pool/p2pool/src
|
cd tests/build
|
||||||
lcov --gcov-tool gcov-14 --directory . --capture --output-file coverage.info
|
llvm-cov-20 export ./p2pool_tests -format=lcov -instr-profile=./p2pool_tests.profdata > coverage.info
|
||||||
|
|
||||||
- name: Run genhtml
|
- name: Run genhtml
|
||||||
run: |
|
run: |
|
||||||
cd tests/build/CMakeFiles/p2pool_tests.dir/home/runner/work/p2pool/p2pool/src
|
cd tests/build
|
||||||
genhtml --demangle-cpp -o coverage coverage.info
|
genhtml --demangle-cpp -o coverage coverage.info
|
||||||
|
|
||||||
- name: Checkout GitHub Pages repository
|
- name: Checkout GitHub Pages repository
|
||||||
@@ -66,7 +72,7 @@ jobs:
|
|||||||
- name: Copy coverage report to GitHub Pages repo
|
- name: Copy coverage report to GitHub Pages repo
|
||||||
run: |
|
run: |
|
||||||
rm -rf gh-pages/p2pool-coverage
|
rm -rf gh-pages/p2pool-coverage
|
||||||
cp -r tests/build/CMakeFiles/p2pool_tests.dir/home/runner/work/p2pool/p2pool/src/coverage gh-pages/p2pool-coverage
|
cp -r tests/build/coverage gh-pages/p2pool-coverage
|
||||||
|
|
||||||
- name: Commit and push coverage report
|
- name: Commit and push coverage report
|
||||||
run: |
|
run: |
|
||||||
@@ -81,4 +87,4 @@ jobs:
|
|||||||
uses: actions/upload-artifact@v4
|
uses: actions/upload-artifact@v4
|
||||||
with:
|
with:
|
||||||
name: p2pool-coverage
|
name: p2pool-coverage
|
||||||
path: tests/build/CMakeFiles/p2pool_tests.dir/home/runner/work/p2pool/p2pool/src/coverage
|
path: tests/build/coverage
|
||||||
|
|||||||
@@ -29,7 +29,6 @@ class P2PServer;
|
|||||||
|
|
||||||
struct MinerShare
|
struct MinerShare
|
||||||
{
|
{
|
||||||
FORCEINLINE MinerShare() : m_weight(), m_wallet(nullptr) {}
|
|
||||||
FORCEINLINE MinerShare(const difficulty_type& w, const Wallet* x) : m_weight(w), m_wallet(x) {}
|
FORCEINLINE MinerShare(const difficulty_type& w, const Wallet* x) : m_weight(w), m_wallet(x) {}
|
||||||
|
|
||||||
FORCEINLINE bool operator==(const MinerShare& s) const { return *m_wallet == *s.m_wallet; }
|
FORCEINLINE bool operator==(const MinerShare& s) const { return *m_wallet == *s.m_wallet; }
|
||||||
|
|||||||
@@ -52,11 +52,20 @@ elseif (CMAKE_CXX_COMPILER_ID MATCHES Clang)
|
|||||||
endif()
|
endif()
|
||||||
|
|
||||||
set(WARNING_FLAGS "-Wall -Wextra -Wno-undefined-internal")
|
set(WARNING_FLAGS "-Wall -Wextra -Wno-undefined-internal")
|
||||||
|
|
||||||
|
if (CMAKE_BUILD_TYPE STREQUAL "Debug")
|
||||||
|
set(OPTIMIZATION_FLAGS "-O0 -g3")
|
||||||
|
else()
|
||||||
set(OPTIMIZATION_FLAGS "-O3 -ffast-math -funroll-loops -fmerge-all-constants")
|
set(OPTIMIZATION_FLAGS "-O3 -ffast-math -funroll-loops -fmerge-all-constants")
|
||||||
|
|
||||||
if (WITH_LTO)
|
if (WITH_LTO)
|
||||||
set(OPTIMIZATION_FLAGS "${OPTIMIZATION_FLAGS} -flto")
|
set(OPTIMIZATION_FLAGS "${OPTIMIZATION_FLAGS} -flto")
|
||||||
endif()
|
endif()
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if (WITH_COVERAGE)
|
||||||
|
set(OPTIMIZATION_FLAGS "${OPTIMIZATION_FLAGS} -fprofile-instr-generate -fcoverage-mapping")
|
||||||
|
endif()
|
||||||
|
|
||||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${GENERAL_FLAGS} ${WARNING_FLAGS} ${OPTIMIZATION_FLAGS}")
|
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${GENERAL_FLAGS} ${WARNING_FLAGS} ${OPTIMIZATION_FLAGS}")
|
||||||
set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} ${GENERAL_FLAGS} ${WARNING_FLAGS} ${OPTIMIZATION_FLAGS}")
|
set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} ${GENERAL_FLAGS} ${WARNING_FLAGS} ${OPTIMIZATION_FLAGS}")
|
||||||
|
|||||||
Reference in New Issue
Block a user