From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by gabe.freedesktop.org (Postfix) with ESMTPS id 0ABC010E603 for ; Wed, 16 Mar 2022 15:02:08 +0000 (UTC) Received: from maurocar by linux.intel.com with local (Exim 4.94.2) (envelope-from ) id 1nUV8B-006e1B-9D for igt-dev@lists.freedesktop.org; Wed, 16 Mar 2022 16:00:07 +0100 From: Mauro Carvalho Chehab To: igt-dev@lists.freedesktop.org Date: Wed, 16 Mar 2022 16:00:00 +0100 Message-Id: <20220316150003.1583681-8-mauro.chehab@linux.intel.com> In-Reply-To: <20220316150003.1583681-1-mauro.chehab@linux.intel.com> References: <20220316150003.1583681-1-mauro.chehab@linux.intel.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Subject: [igt-dev] [PATCH v3 07/10] scripts/code_cov_gen_report.sh: add a script to generate code coverage reports List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: igt-dev-bounces@lists.freedesktop.org Sender: "igt-dev" List-ID: From: Mauro Carvalho Chehab The proper sequence to process the results at the build machine is not trivial. Add a script automating such steps. Reviewed-by: Tomi Sarvela Signed-off-by: Mauro Carvalho Chehab --- scripts/code_cov_gen_report.sh | 170 +++++++++++++++++++++++++++++++++ 1 file changed, 170 insertions(+) create mode 100755 scripts/code_cov_gen_report.sh diff --git a/scripts/code_cov_gen_report.sh b/scripts/code_cov_gen_report.sh new file mode 100755 index 000000000000..05efebe19ee4 --- /dev/null +++ b/scripts/code_cov_gen_report.sh @@ -0,0 +1,170 @@ +#!/bin/bash + +MERGED_INFO="merged" +GATHER_ON_BUILD="code_cov_gather_on_build.sh" +PARSE_INFO="code_cov_parse_info.pl" + +trap 'catch $LINENO' ERR +catch() { + echo "$0: error on line $1. HTML report not generated." + exit $1 +} + +usage() { + printf >&2 "\ +Usage: + $(basename $0) + --read --kernel-source --kernel-object + --output-dir [--info or --tar] [--force-override] + +--kernel-object is only needed when Kernel was built with make O=dir +" + exit $1 +} + +MODE= +RESULTS= +KSRC= +KOBJ= +DEST_DIR= +FORCE= + +while [ "$1" != "" ]; do + case $1 in + --info|-i) + MODE=info + ;; + --tar|--tarball|-t) + MODE=tar.gz + ;; + --kernel-source|-k) + if [ "$2" == "" ]; then + usage 1 + else + KSRC=$(realpath $2) + shift + fi + ;; + --kernel-object|-O) + if [ "$2" == "" ]; then + usage 1 + else + KOBJ=$(realpath $2) + shift + fi + ;; + --output-dir|-o) + if [ "$2" == "" ]; then + usage 1 + else + DEST_DIR=$(realpath $2) + shift + fi + ;; + --read|-r) + if [ "$2" == "" ]; then + usage 1 + else + RESULTS=$(realpath $2) + shift + fi + ;; + --force-override|-f) + FORCE=1 + ;; + --help) + usage 0 + ;; + + *) + echo "Unknown argument '$1'" + usage 1 + ;; + esac + shift +done + +if [ "x$RESULTS" == "x" -o "x$KSRC" == "x" -o "x$DEST_DIR" == "x" -o "x$MODE" == "x" ]; then + echo "Missing a mandatory argument" + usage 1 +fi + +if [ -z "$KOBJ" ]; then + KOBJ=$KSRC +fi + +SCRIPT_DIR=$(dirname $(realpath $0)) +RESULTS=$(realpath $RESULTS) +KSRC=$(realpath $KSRC) +KOBJ=$(realpath $KOBJ) +DEST_DIR=$(realpath $DEST_DIR) + +if [ -e "$DEST_DIR" ]; then + if [ "x$FORCE" != "x" -a -d "$DEST_DIR" ]; then + rm -rf $DEST_DIR/ + else + echo "Directory exists. Won't override." + exit 1 + fi +fi + +mkdir -p $DEST_DIR +cd $DEST_DIR + +if [ "$MODE" != "info" ]; then + echo "Generating source tarball from $KSRC (O=$KOBJ)..." + ${SCRIPT_DIR}/${GATHER_ON_BUILD} $KSRC $KOBJ source.tar.gz + + echo "Adding source files..." + tar xf source.tar.gz + + if [ -d "$RESULTS" ]; then + echo "Creating per-file info files..." + echo -n "" >${MERGED_INFO}.info + for i in $RESULTS/*.tar.gz; do + TITLE=$(basename $i) + TITLE=${TITLE/.tar.gz/} + + echo "Adding results from $i..." + tar xf $i + + echo "Generating $TITLE.info..." + lcov -q -t ${TITLE} --rc lcov_branch_coverage=1 -o $TITLE.info -c -d . + + cat $TITLE.info >>${MERGED_INFO}.info + + # Remove the contents of the results tarball + rm -rf sys/ + done + + TITLE=${MERGED_INFO} + else + TITLE=$(basename $RESULTS) + TITLE=${TITLE/.tar.gz/} + + echo "Adding results from $RESULTS..." + tar xf $RESULTS + + echo "Generating $TITLE.info..." + lcov -q -t ${TITLE} --rc lcov_branch_coverage=1 -o $TITLE.info -c -d . + fi +else + if [ -d "$RESULTS" ]; then + echo "Merging info files..." + echo -n "" >${MERGED_INFO}.info + for i in $RESULTS/*.info; do + cat $i >>${MERGED_INFO}.info + done + + TITLE=${MERGED_INFO} + else + echo "Copying $RESULTS to $DEST_DIR..." + cp $RESULTS . + + TITLE=$(basename $RESULTS) + TITLE=${TITLE/.info/} + fi +fi + +echo "Generating HTML files..." +genhtml -q ${TITLE}.info -- 2.35.1