summaryrefslogtreecommitdiff
path: root/scripts/code_cov_gen_report
diff options
context:
space:
mode:
authorMauro Carvalho Chehab <mchehab@kernel.org>2022-04-14 14:24:51 +0200
committerPetri Latvala <petri.latvala@intel.com>2022-04-14 18:19:39 +0300
commitce05f2d4d34b2f4b506ffce04b34b9d242b3c4cc (patch)
tree1198745725fb26573d04f53fd581429360b32f0f /scripts/code_cov_gen_report
parenta3885810ccc0ce9e6552a20c910a0a322eca466c (diff)
scripts/code_cov*: remove the extensions from them
As those scripts will be installed and executed from the PATH, remove the extensions from them, in order to make it more elegant when installed on distros. Reviewed-by: Petri Latvala <petri.latvala@intel.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@kernel.org>
Diffstat (limited to 'scripts/code_cov_gen_report')
-rwxr-xr-xscripts/code_cov_gen_report170
1 files changed, 170 insertions, 0 deletions
diff --git a/scripts/code_cov_gen_report b/scripts/code_cov_gen_report
new file mode 100755
index 00000000..05efebe1
--- /dev/null
+++ b/scripts/code_cov_gen_report
@@ -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 <file or dir> --kernel-source <dir> --kernel-object <dir>
+ --output-dir <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