From 2bde82ffa2f5fe9161e3322fee82eb45699b9164 Mon Sep 17 00:00:00 2001 From: Tim Wojtulewicz Date: Wed, 15 May 2024 13:58:33 -0700 Subject: [PATCH] CI: Use llvm-cov-18 on Cirrus for building coverage data --- testing/coverage/code_coverage.sh | 44 +++++++++++++++++++------------ 1 file changed, 27 insertions(+), 17 deletions(-) diff --git a/testing/coverage/code_coverage.sh b/testing/coverage/code_coverage.sh index 18fc902435..100f6b8f44 100755 --- a/testing/coverage/code_coverage.sh +++ b/testing/coverage/code_coverage.sh @@ -21,6 +21,21 @@ BASE="$(cd "$CURR" && cd ../../ && pwd)" TMP="${CURR}/tmp.$$" mkdir -p $TMP +GCOV_CMD="" +if [ -n "${CIRRUS_TASK_NAME}" ]; then + GCOV_CMD="$(which llvm-cov-18)" + if [ -n "${GCOV_CMD}" ]; then + GCOV_CMD="${GCOV_CMD} gcov" + fi +else + GCOV_CMD="$(which gcov)" +fi + +if [ -z "${GCOV_CMD}" ]; then + echo "gcov is not installed on system, aborting" + exit 1 +fi + # DEFINE CLEANUP PROCESS function finish { rm -rf $TMP @@ -97,26 +112,21 @@ echo "ok" # 3a. Run gcov (-p to preserve path) and move into tmp directory # ... if system does not have gcov installed, exit with message. echo -n "Creating coverage files... " -if which gcov >/dev/null 2>&1; then - (cd "$TMP" && find "$BASE" -name "*.o" -exec gcov -p {} \; >/dev/null 2>&1) - NUM_GCOVS=$(find "$TMP" -name *.gcov | wc -l) - if [ $NUM_GCOVS -eq 0 ]; then - echo "no gcov files produced, aborting" - exit 1 - fi - - # Account for '^' that occurs in macOS due to LLVM - # This character seems to be equivalent to ".." (up 1 dir) - for file in $(ls $TMP/*.gcov | grep '\^'); do - mv $file "$(sed 's/#[^#]*#\^//g' <<<"$file")" - done - - echo "ok, $NUM_GCOVS coverage files" -else - echo "gcov is not installed on system, aborting" +(cd "$TMP" && find "$BASE" -name "*.o" -exec ${GCOV_CMD} -p {} \; >/dev/null 2>&1) +NUM_GCOVS=$(find "$TMP" -name *.gcov | wc -l) +if [ $NUM_GCOVS -eq 0 ]; then + echo "no gcov files produced, aborting" exit 1 fi +# Account for '^' that occurs in macOS due to LLVM +# This character seems to be equivalent to ".." (up 1 dir) +for file in $(ls $TMP/*.gcov | grep '\^'); do + mv $file "$(sed 's/#[^#]*#\^//g' <<<"$file")" +done + +echo "ok, $NUM_GCOVS coverage files" + # 3b. Prune gcov files that fall outside of the Zeek tree: # Look for files containing gcov's slash substitution character "#" # and remove any that don't contain the Zeek path root.