summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMaarten Hoes <hoes.maarten@gmail.com>2022-06-09 17:41:27 +0200
committerThorsten Behrens <thorsten.behrens@allotropia.de>2022-08-18 11:05:11 +0200
commitbb1f2058eead6aa7f2df0b2f5c6933d98db75e2a (patch)
treecb31c91c6e68e1c0d49cc6cdb696a67db5417761
parent776dfacac65eff820b6f986829067a338d2b62c9 (diff)
Simplified usage, changed order of steps, better exclusions.HEADmaster
The old script required you to run the script multiple times, in multiple 'steps/phases',and for you to run a manual 'make check' in between these steps at some point. The new version only needs to be run once, and only needs flags to tell it where the sources are, where the report should go, etc. Changed the order of the required steps to be more in line with the lcov man page. Added '--disable-ccache', as it may interfere with producing accurate results. Make sure that unwanted '$BUILD_DIR/foo' and '$SRC_DIR/foo' (/workdir/*, /instdir/*, /external/*) all get excluded from the final report, regardless of doing an in-source or out-of-source build. Change-Id: Icf7a7da49cfd423228e64059376a3b2f6e6ce952 Reviewed-on: https://gerrit.libreoffice.org/c/buildbot/+/135560 Reviewed-by: Norbert Thiebaud <nthiebaud@gmail.com> Tested-by: Thorsten Behrens <thorsten.behrens@allotropia.de> Reviewed-by: Thorsten Behrens <thorsten.behrens@allotropia.de>
-rw-r--r--lcov-report/README129
-rwxr-xr-xlcov-report/lcov-report.sh355
-rw-r--r--lcov-report/tinderbox/.tb/profiles/lcov-make-check/autogen.lastrun5
-rw-r--r--lcov-report/tinderbox/.tb/profiles/lcov-make-check/config13
-rw-r--r--lcov-report/tinderbox/.tb/profiles/lcov-make-check/phases.sh61
5 files changed, 211 insertions, 352 deletions
diff --git a/lcov-report/README b/lcov-report/README
index f8afd82..df9962e 100644
--- a/lcov-report/README
+++ b/lcov-report/README
@@ -4,121 +4,50 @@ NAME
DESCRIPTION
- A small script to create gcov/lcov code coverage reports of tests run
- on the libreoffice source code.
+ A small script to create gcov/lcov code coverage reports of
+ tests run on the libreoffice source code.
SYNOPSIS
- lcov-report.sh [-a|-b|-c] -s [DIRECTORY] -t [DIRECTORY] \
- -w [DIRECTORY] -d "test description"
-
--b
- Run lcov commands before you run your tests. This creates a
- baseline lcov tracefile. You can only supply one of '-a', '-b'
- or '-c' simultaneously.
-
--a
- Run lcov commands after you run your tests. This creates a
- tracefile that contains the results of your tests, and combines
- it with the baseline. You can only supply one of '-a', '-b' or
- '-c' simultaneously.
-
--c
- Specifies to compile the libreoffice sources in the location
- specified by the '-s' flag. This flag is optional. If you
- choose to omit it, you must make sure the libreoffice source
- code is built using the appropriate FLAGS ('-fprofile-arcs
- -ftest-coverage'). You can only supply one of '-a', '-b' or
- '-c' simultaneously.
-
--C
- Specifies the location the sourcecode gets compiled in.
+ lcov-report.sh -s [DIRECTORY] -t [DIRECTORY] -r [DIRECTORY] \
+ -b [DIRECTORY]
-s
- Specify the location where the libreoffice source code is
- located. This flag is mandatory.
+ Specify the location where the libreoffice source code is
+ located. This is expected to be a git repository. This option
+ is mandatory.
-t
- Specifies the directory in which to contain the lcov
- tracefile's. This flag is mandatory when you run '-a' or '-b'.
-
--w
- Specifies the directory in which to contain the generated HTML
- report files. This flag is mandatory when you run '-a'.
+ Specifies the directory in which to put the lcov tracefile's.
+ This option is mandatory.
--d
- Specify a descriptive name for the test(s) you wish to create
- a report for. For example, if your test consists of the make
- target 'make check', you could specify '-d "make check"'.
+-r
+ Specifies the directory in which to contain the generated HTML
+ report files. This option is mandatory.
+-b
+ Specify a directory in which to build the libreoffice project,
+ in case you want to perform a 'out-of-source' build. This option
+ is optional: if you omit this option, a 'in-source-tree' build
+ is performed, and the build will be done in the same dirctory
+ that you specified with the '-s' option.
EXAMPLE
- Summary.
-
- In essence, you run the following commands:
-
- 1.) Compile LibreOffice.
- 2.) Run 'lcov-report.sh' before you run your tests.
- 3.) Run your tests.
- 4.) Run 'lcov-report.sh' after your tests.
-
- That's it.
-
-
- 1.) Compile LibreOffice.
-
- The first step is to compile the libreoffice code using
- the appropriate FLAGS and options to autogen.sh and/or
- ./configure. You can do this with lcov-report.sh in
- the following way:
-
- lcov-report.sh -c -C /home/user/build -s \
- /home/user/src/libreoffice
-
- '-c' specifies that you want to compile the code.
-
- If you choose to build libreoffice yourself instead, make
- sure to set these FLAGS: LDFLAGS+='-fprofile-arcs'
- CFLAGS+='-fprofile-arcs -ftest-coverage'
- CXXFLAGS+='-fprofile-arcs -ftest-coverage'
- CPPFLAGS+='-fprofile-arcs -ftest-coverage'. Also, you
- need to supply --disable-online-update to autogen.sh
- and/or configure.
-
-
- 2.) Run 'lcov-report.sh -b'.
-
- The next step is to create a gcov/lcov baseline. You
- run this command ('-b') before you run your tests.
-
- lcov-report.sh -b -C /home/user/build -t \
- /home/user/traces -s /home/user/src/libreoffice \
- -d "make check"
-
-
- 3.) Run tests.
-
- Now you can run the tests for which you want to report
- code coverage. This could be as simple as
- 'gb_GCOV=YES make check' in the build directory.
-
-
- 4.) Run 'lcov-report.sh -a'.
+ Running the script could be as easy as running the following
+ command :
- The last step is to create a lcov/gcov tracefile that
- contains the data about the tests that were run, and
- to create the html report. You run this command ('-a')
- after you have completed running your tests.
+ ./lcov-report.sh -s ~/src/core -t ~/tmp/traces -r ~/tmp/html
- lcov-report.sh -a -C /home/user/build \
- -s /home/user/src/libreoffice -t \
- /home/user/traces -w /home/user/html -d "make check"
+ The '-s' option in this example tells the script to go look for
+ the libreoffice source code in '~/src/core', the '-t' option
+ to put the lcov 'tracefiles' in '~/tmp/traces', and the '-r'
+ option to put the final html report in '~/tmp/html'. Because the
+ '-b' option is omitted in this example, a 'in-source-tree' build
+ will be performed. If you would like to perform an out-of-tree
+ build instead, you would only need to add someting like '-b
+ ~/tmp/build' to the commandline example above.
- Make sure that you specify the same directory for the
- tracefiles ('-t') as you did when running the command
- '-b' before your tests, as lcov needs access to the
- baseline file that was created in that step.
diff --git a/lcov-report/lcov-report.sh b/lcov-report/lcov-report.sh
index ab62d68..f9d9210 100755
--- a/lcov-report/lcov-report.sh
+++ b/lcov-report/lcov-report.sh
@@ -19,202 +19,193 @@
#
die()
{
- echo "Error:" "$@" >&2
- exit -1;
+ echo "Error:" "$@" >&2
+ exit 1;
}
init()
{
- if [ "${SOURCE_COMPILE?}${AFTER?}${BEFORE?}" != "TRUE" ] ; then
- die "You can only supply one of '-a', '-b' or '-c' simultaneously."
- fi
-
- if [ -n "${SRC_DIR?}" ] ; then
- if [ "${SRC_DIR?}" = "${BUILD_DIR?}" ] ; then
- die "Cannot set the source directory to the same value as the build directory."
- fi
-
- if [ ! -d "${SRC_DIR?}" ] ; then
- die "Failed to locate source code directory $SRC_DIR."
- else
- SRC_DIR=$(readlink -f "${SRC_DIR?}")
- fi
-
- if [ ! -d "${SRC_DIR?}/.git" ] ; then
- die "${SRC_DIR?} is not a git repository."
- fi
-
- fi
-
- if [ "${AFTER?}" = "TRUE" ] ; then
- if [ -z "${HTML_DIR?}" ] ; then
- die "When specifying '-a', you also need to specify '-w'."
- fi
-
- if [ -z "${BUILD_DIR?}" ] ; then
- die "When specifying '-a', you also need to specify '-C'."
- fi
-
- if [ -z "${SRC_DIR?}" ] ; then
- die "When specifying '-a', you also need to specify '-s'."
- fi
-
- if [ ! -d "${TRACEFILE_DIR?}" ] ; then
- die "Failed to locate tracefile directory ${TRACEFILE_DIR?}."
- fi
-
- if [ ! -d "${HTML_DIR?}" ] ; then
- mkdir "${HTML_DIR?}" || die "Failed to create html directory ${HTML_DIR?}."
- HTML_DIR=$(readlink -f "${HTML_DIR?}")
- else
- rm -rf "${HTML_DIR?}"
- mkdir "${HTML_DIR?}" || die "Failed to create html directory ${HTML_DIR?}."
- HTML_DIR=$(readlink -f "${HTML_DIR?}")
- fi
- fi
-
- if [ "${BEFORE?}" = "TRUE" -o "${AFTER?}" = "TRUE" ] ; then
- if [ -z "${TRACEFILE_DIR?}" ] ; then
- die "When specifying '-a' or '-b', you also need to specify '-t'."
- fi
-
- if [ -z "${TEST_NAME?}" ] ; then
- die "When specifying '-a' or '-b', you also need to specify '-d'."
- fi
-
- if [ -z "${SRC_DIR?}" ] ; then
- die "When specifying '-a', you also need to specify '-s'."
- fi
-
- BUILD_DIR=$(readlink -f "${BUILD_DIR?}")
- fi
-
- if [ "${BEFORE?}" = "TRUE" ] ; then
- if [ ! -d "${TRACEFILE_DIR?}" ] ; then
- mkdir "${TRACEFILE_DIR?}" || die "Failed to create tracefile directory ${TRACEFILE_DIR?}."
- TRACEFILE_DIR=$(readlink -f "${TRACEFILE_DIR?}")
- else
- rm -rf "${TRACEFILE_DIR?}"
- mkdir "${TRACEFILE_DIR?}" || die "Failed to create tracefile directory ${TRACEFILE_DIR?}."
- TRACEFILE_DIR=$(readlink -f "${TRACEFILE_DIR?}")
- fi
- fi
-
- if [ "${SOURCE_COMPILE?}" = "TRUE" ] ; then
- if [ -z "${BUILD_DIR?}" ] ; then
- die "When specifying '-c', you also need to specify '-C'."
- fi
-
- if [ -z "${SRC_DIR?}" ] ; then
- die "When specifying '-c', you also need to specify '-s'."
- fi
- if [ ! -d "$BUILD_DIR" ] ; then
- mkdir "$BUILD_DIR" || die "Failed to create source compile directory $BUILD_DIR."
- BUILD_DIR=$(readlink -f "${BUILD_DIR?}")
- else
- rm -rf "$BUILD_DIR"
- mkdir "$BUILD_DIR" || die "Failed to create source compile directory $BUILD_DIR."
- BUILD_DIR=$(readlink -f "${BUILD_DIR?}")
- fi
- fi
+ if [ -z "${HTML_DIR?}" ]
+ then
+ die "HTML_DIR was not set."
+ fi
+
+ if [ -z "${SRC_DIR?}" ]
+ then
+ die "SRC_DIR was not set."
+ fi
+
+ if [ -z "${TRACEFILE_DIR?}" ]
+ then
+ die "TRACEFILE_DIR was not set."
+ fi
+
+ if [ -z "${TEST_NAME?}" ]
+ then
+ die "TEST_NAME was not set."
+ fi
+
+ if [ -n "${SRC_DIR?}" ]
+ then
+ if [ -z "${BUILD_DIR?}" ]
+ then
+ BUILD_DIR="${SRC_DIR?}" || die "Failed to set BUILD_DIR to SRC_DIR"
+ fi
+
+ if [ ! -d "${SRC_DIR?}" ]
+ then
+ die "Failed to locate source code directory $SRC_DIR."
+ else
+ SRC_DIR=$(readlink -f "${SRC_DIR?}")
+ fi
+
+ if [ ! -d "${SRC_DIR?}/.git" ]
+ then
+ die "${SRC_DIR?} is not a git repository."
+ fi
+
+ fi
+
+ if [ ! -d "${HTML_DIR?}" ]
+ then
+ mkdir "${HTML_DIR?}" || die "Failed to create html directory ${HTML_DIR?}."
+ HTML_DIR=$(readlink -f "${HTML_DIR?}")
+ else
+ rm -rf "${HTML_DIR?}"
+ mkdir "${HTML_DIR?}" || die "Failed to create html directory ${HTML_DIR?}."
+ HTML_DIR=$(readlink -f "${HTML_DIR?}")
+ fi
+
+ if [ ! -d "${TRACEFILE_DIR?}" ]
+ then
+ mkdir "${TRACEFILE_DIR?}" || die "Failed to create tracefile directory ${TRACEFILE_DIR?}."
+ TRACEFILE_DIR=$(readlink -f "${TRACEFILE_DIR?}")
+ else
+ rm -rf "${TRACEFILE_DIR?}"
+ mkdir "${TRACEFILE_DIR?}" || die "Failed to create tracefile directory ${TRACEFILE_DIR?}."
+ TRACEFILE_DIR=$(readlink -f "${TRACEFILE_DIR?}")
+ fi
+
+ if [ ! -d "${BUILD_DIR?}" ]
+ then
+ mkdir "${BUILD_DIR?}" || die "Failed to create source compile directory $BUILD_DIR."
+ BUILD_DIR=$(readlink -f "${BUILD_DIR?}")
+ else
+ BUILD_DIR=$(readlink -f "${BUILD_DIR?}")
+ fi
}
lcov_cleanup()
{
- lcov --zerocounters --directory "${BUILD_DIR?}"
+ lcov --zerocounters --directory "${BUILD_DIR?}" || die "Failed to run lcov --zerocounters --directory $BUILD_DIR"
+}
+
+make_clean()
+{
+ pushd "${BUILD_DIR?}" > /dev/null || die "Failed to change directory to $BUILD_DIR"
+
+ if [ -f "${BUILD_DIR?}"/Makefile ]
+ then
+ make distclean || die "Failed to make distclean"
+ fi
+
+ popd > /dev/null || die "Failed to change directory out of $BUILD_DIR"
}
source_build()
{
- cd "${BUILD_DIR?}"
+ pushd "${BUILD_DIR?}" > /dev/null || die "Failed to change directory to $BUILD_DIR"
- LDFLAGS+='-fprofile-arcs' CFLAGS+='-fprofile-arcs -ftest-coverage' CXXFLAGS+='-fprofile-arcs -ftest-coverage' CPPFLAGS+='-fprofile-arcs -ftest-coverage' \
- "${SRC_DIR?}/autogen.sh" --enable-python=internal --disable-online-update --without-system-libs --without-system-headers \
- || die "autogen.sh failed."
+ LDFLAGS+='-fprofile-arcs -lgcov' CFLAGS+='-fprofile-arcs -ftest-coverage' CXXFLAGS+='-fprofile-arcs -ftest-coverage' \
+ "${SRC_DIR?}/autogen.sh" --enable-python=internal --without-system-libs --without-system-headers --disable-ccache \
+ || die "autogen.sh failed."
- gb_GCOV=YES make build-nocheck || die "make build-nocheck failed."
+ gb_GCOV=YES verbose=t make --output-sync=target || die "gb_GCOV=YES make failed."
- cd -
+ popd > /dev/null || die "Failed to change directory out of $BUILD_DIR"
+}
+
+run_tests()
+{
+ pushd "${BUILD_DIR?}" > /dev/null || die "Failed to change directory to $BUILD_DIR"
+
+ gb_GCOV=YES verbose=t make check --output-sync=target || die "make check failed."
+
+ popd > /dev/null || die "Failed to change directory out of $BUILD_DIR"
}
lcov_tracefile_baseline()
{
- lcov --rc geninfo_auto_base=1 --capture --initial --directory "${BUILD_DIR?}" --output-file "${TRACEFILE_DIR?}/lcov_base.info" --test-name "${TEST_NAME?}" \
- || die "Tracefile ${TRACEFILE_DIR?}/lcov_base.info generation failed."
+ lcov --rc geninfo_auto_base=1 --capture --initial --directory "${BUILD_DIR?}" --output-file "${TRACEFILE_DIR?}/lcov_base.info" --test-name "${TEST_NAME?}" \
+ || die "Tracefile ${TRACEFILE_DIR?}/lcov_base.info generation failed."
}
lcov_tracefile_tests()
{
- lcov --rc geninfo_auto_base=1 --capture --directory "${BUILD_DIR?}" --output-file "${TRACEFILE_DIR?}/lcov_test.info" --test-name "${TEST_NAME?}" \
- || die "Tracefile ${TRACEFILE_DIR?}/lcov_test.info generation failed."
+ lcov --rc geninfo_auto_base=1 --capture --directory "${BUILD_DIR?}" --output-file "${TRACEFILE_DIR?}/lcov_test.info" --test-name "${TEST_NAME?}" \
+ || die "Tracefile ${TRACEFILE_DIR?}/lcov_test.info generation failed."
}
lcov_tracefile_join()
{
- lcov --rc geninfo_auto_base=1 --add-tracefile "${TRACEFILE_DIR?}/lcov_base.info" \
- --add-tracefile "${TRACEFILE_DIR?}/lcov_test.info" --output-file "${TRACEFILE_DIR?}/lcov_total.info" --test-name "${TEST_NAME?}" \
- || die "Tracefile generation $TRACEFILE_DIR/lcov_total.info failed."
+ lcov --rc geninfo_auto_base=1 --add-tracefile "${TRACEFILE_DIR?}/lcov_base.info" \
+ --add-tracefile "${TRACEFILE_DIR?}/lcov_test.info" --output-file "${TRACEFILE_DIR?}/lcov_total.info" --test-name "${TEST_NAME?}" \
+ || die "Tracefile generation $TRACEFILE_DIR/lcov_total.info failed."
}
lcov_tracefile_cleanup()
{
- lcov --rc geninfo_auto_base=1 --remove "${TRACEFILE_DIR?}/lcov_total.info" \
- "/usr/include/*" "/usr/lib/*" "${SRC_DIR?}/*/UnpackedTarball/*" "${SRC_DIR?}/workdir/*" \
- "${BUILD_DIR?}/workdir/*" "${SRC_DIR?}/instdir/*" "${SRC_DIR?}/external/*" \
- -o "${TRACEFILE_DIR?}/lcov_filtered.info" --test-name "${TEST_NAME?}" \
- || die "tracefile generation ${TRACEFILE_DIR?}/lcov_filtered.info failed."
+ lcov --rc geninfo_auto_base=1 --remove "${TRACEFILE_DIR?}/lcov_total.info" \
+ "/usr/include/*" "/usr/lib/*" "${SRC_DIR?}/*/UnpackedTarball/*" "${SRC_DIR?}/workdir/*" \
+ "${BUILD_DIR?}/workdir/*" "${SRC_DIR?}/instdir/*" "${BUILD_DIR?}/instdir/*" \
+ "${SRC_DIR?}/external/*" "${BUILD_DIR?}/external/*" \
+ -o "${TRACEFILE_DIR?}/lcov_filtered.info" --test-name "${TEST_NAME?}" \
+ || die "tracefile generation ${TRACEFILE_DIR?}/lcov_filtered.info failed."
}
lcov_mkhtml()
{
- mkdir "${HTML_DIR?}/report" || die "Failed to create subdirectory in ${HTML_DIR?}/report"
+ mkdir "${HTML_DIR?}/report" || die "Failed to create subdirectory in ${HTML_DIR?}/report"
- genhtml --rc geninfo_auto_base=1 --prefix "${SRC_DIR?}" --ignore-errors source "${TRACEFILE_DIR?}/lcov_filtered.info" \
- --legend --title "${TEST_NAME?}" --rc genhtml_desc_html=1 \
- --output-directory="${HTML_DIR?}/report" --description-file "${TRACEFILE_DIR?}/${DESC_FILE?}" \
- || die "ERROR: Generation of html files in ${HTML_DIR?}/report failed."
+ genhtml --rc geninfo_auto_base=1 --prefix "${SRC_DIR?}" --ignore-errors source "${TRACEFILE_DIR?}/lcov_filtered.info" \
+ --legend --title "${TEST_NAME?}" --rc genhtml_desc_html=1 \
+ --output-directory="${HTML_DIR?}/report" --description-file "${TRACEFILE_DIR?}/${DESC_FILE?}" \
+ || die "ERROR: Generation of html files in ${HTML_DIR?}/report failed."
}
lcov_get_commit()
{
- cd "${SRC_DIR?}"
+ pushd "${SRC_DIR?}" > /dev/null || die "Failed to change directory to $SRC_DIR"
- COMMIT_SHA1=$(git log --date=iso | head -3 | awk '/^commit/ {print $2}')
- COMMIT_DATE=$(git log --date=iso | head -3 | awk '/^Date/ {print $2}')
- COMMIT_TIME=$(git log --date=iso | head -3 | awk '/^Date/ {print $3}')
+ COMMIT_SHA1=$(git log --date=iso | head -3 | awk '/^commit/ {print $2}')
+ COMMIT_DATE=$(git log --date=iso | head -3 | awk '/^Date/ {print $2}')
+ COMMIT_TIME=$(git log --date=iso | head -3 | awk '/^Date/ {print $3}')
- cd -
+ popd > /dev/null || die "Failed to change directory out of $SRC_DIR"
}
lcov_mk_desc()
{
- echo "TN: ${TEST_NAME?}" > "${TRACEFILE_DIR?}/${DESC_FILE?}"
- echo "TD: Commit SHA1: ${COMMIT_SHA1?} <br>" >> "${TRACEFILE_DIR?}/${DESC_FILE?}"
- echo "TD: Commit DATE: ${COMMIT_DATE?} ${COMMIT_TIME?} <br>" >> "${TRACEFILE_DIR?}/${DESC_FILE?}"
- echo "TD: Source Code Directory: ${SRC_DIR?} <br>" >> "${TRACEFILE_DIR?}/${DESC_FILE?}"
+ echo "TN: ${TEST_NAME?}" > "${TRACEFILE_DIR?}/${DESC_FILE?}"
+ echo "TD: Commit SHA1: ${COMMIT_SHA1?} <br>" >> "${TRACEFILE_DIR?}/${DESC_FILE?}"
+ echo "TD: Commit DATE: ${COMMIT_DATE?} ${COMMIT_TIME?} <br>" >> "${TRACEFILE_DIR?}/${DESC_FILE?}"
+ echo "TD: Source Code Directory: ${SRC_DIR?} <br>" >> "${TRACEFILE_DIR?}/${DESC_FILE?}"
}
usage()
{
- echo >&2 "Usage: lcov-report.sh [-a|-b|-c] -s [DIRECTORY] -C [DIRECTORY] -t [DIRECTORY] -w [DIRECTORY] -d "test description"
- -b run lcov commands before your tests
- -a run lcov commands after your tests
- -c compile libreoffice sources
- -C build directory to compile libreoffice sources in
- -s source code directory
- -t tracefile directory
- -w html (www) directory
- -d description of test that was ran"
- exit 1
+ echo >&2 "Usage: lcov-report.sh -s [DIRECTORY] -b [DIRECTORY] -t [DIRECTORY] -r [DIRECTORY]
+ -b build directory to compile libreoffice sources in. if omitted, will be set to the same value as source code directory.
+ -s source code directory.
+ -t tracefile directory.
+ -r html report directory."
+ exit 1
}
#
# Main
#
-SOURCE_COMPILE=
-BEFORE=
-AFTER=
SRC_DIR=
TRACEFILE_DIR=
HTML_DIR=
@@ -222,62 +213,48 @@ BUILD_DIR=
COMMIT_SHA1=
COMMIT_DATE=
COMMIT_TIME=
-TEST_NAME=
+
+TEST_NAME="LibreOffice_make_check"
DESC_FILE=descfile.desc
-if [ "$#" = "0" ] ; then
- usage
+if [ "$#" != "8" -a "$#" != "6" ]
+then
+ usage
fi
-while getopts ":s:t:w:C:d:abc" opt ; do
- case "$opt" in
- s)
- SRC_DIR="${OPTARG?}"
- ;;
- t)
- TRACEFILE_DIR="${OPTARG?}"
- ;;
- w)
- HTML_DIR="${OPTARG?}"
- ;;
- c)
- SOURCE_COMPILE=TRUE
- ;;
- C)
- BUILD_DIR="${OPTARG?}"
- ;;
- b)
- BEFORE=TRUE
- ;;
- a)
- AFTER=TRUE
- ;;
- d)
- TEST_NAME="${OPTARG?}"
- ;;
- *)
- usage
- ;;
- esac
+while getopts ":s:t:r:b:" opt
+do
+ case "$opt" in
+ s)
+ SRC_DIR="${OPTARG?}"
+ ;;
+ t)
+ TRACEFILE_DIR="${OPTARG?}"
+ ;;
+ r)
+ HTML_DIR="${OPTARG?}"
+ ;;
+ b)
+ BUILD_DIR="${OPTARG?}"
+ ;;
+ *)
+ usage
+ ;;
+ esac
done
init
+make_clean
+source_build
+lcov_cleanup
-if [ "${BEFORE?}" = "TRUE" ] ; then
- lcov_cleanup
- lcov_get_commit
- lcov_tracefile_baseline
- lcov_mk_desc
-fi
+lcov_get_commit
+lcov_tracefile_baseline
+lcov_mk_desc
-if [ "${SOURCE_COMPILE?}" = "TRUE" ] ; then
- source_build
-fi
+run_tests
-if [ "${AFTER?}" = "TRUE" ] ; then
- lcov_get_commit
- lcov_tracefile_tests
- lcov_tracefile_join
- lcov_tracefile_cleanup
- lcov_mkhtml
-fi
+lcov_tracefile_tests
+lcov_tracefile_join
+lcov_tracefile_cleanup
+lcov_mkhtml
diff --git a/lcov-report/tinderbox/.tb/profiles/lcov-make-check/autogen.lastrun b/lcov-report/tinderbox/.tb/profiles/lcov-make-check/autogen.lastrun
index 972c3e5..ffb238d 100644
--- a/lcov-report/tinderbox/.tb/profiles/lcov-make-check/autogen.lastrun
+++ b/lcov-report/tinderbox/.tb/profiles/lcov-make-check/autogen.lastrun
@@ -1,4 +1 @@
---enable-python=internal
---disable-online-update
---without-system-libs
---without-system-headers
+# No need to set these for gcov/lcov code coverage, it is handled by the 'lcov-report.sh' script itself.
diff --git a/lcov-report/tinderbox/.tb/profiles/lcov-make-check/config b/lcov-report/tinderbox/.tb/profiles/lcov-make-check/config
index b7e778e..a37a756 100644
--- a/lcov-report/tinderbox/.tb/profiles/lcov-make-check/config
+++ b/lcov-report/tinderbox/.tb/profiles/lcov-make-check/config
@@ -3,13 +3,12 @@ TB_TYPE=tb
# These are for use in the lcov script
TB_LCOV_TRACEFILE_DIR=~/tmp/traces
TB_LCOV_HTML_DIR=~/tmp/html
-TB_LCOV_TEST_NAME="make check"
TB_LCOV_REPORT=~/source/buildbot/lcov-report/lcov-report.sh
-# These are set for gcov/lcov code coverage
-LDFLAGS='-fprofile-arcs'
-CFLAGS='-fprofile-arcs -ftest-coverage'
-CXXFLAGS='-fprofile-arcs -ftest-coverage'
-CPPFLAGS='-fprofile-arcs -ftest-coverage'
-export LDFLAGS CFLAGS CXXFLAGS CPPFLAGS
+# No need to set these for gcov/lcov code coverage, it is handled by the 'lcov-report.sh' script itself.
+# LDFLAGS='-fprofile-arcs -lgcov'
+# CFLAGS='-fprofile-arcs -ftest-coverage'
+# CXXFLAGS='-fprofile-arcs -ftest-coverage'
+# CPPFLAGS='-fprofile-arcs -ftest-coverage'
+# export LDFLAGS CFLAGS CXXFLAGS
diff --git a/lcov-report/tinderbox/.tb/profiles/lcov-make-check/phases.sh b/lcov-report/tinderbox/.tb/profiles/lcov-make-check/phases.sh
index f4218be..8186688 100644
--- a/lcov-report/tinderbox/.tb/profiles/lcov-make-check/phases.sh
+++ b/lcov-report/tinderbox/.tb/profiles/lcov-make-check/phases.sh
@@ -1,69 +1,26 @@
#!/usr/bin/env bash
# -*- tab-width : 4; indent-tabs-mode : nil -*-
-lcov-make-check_do_make()
+lcov-make-check_do_lcov_report()
{
- if [ "${R}" = "0" ] ; then
- # we for MAKE_RESTARTS=1 because 1/ we know that Makefile is up to date
- # and 2/ the 'restart' mechanism in make is messed-up by the fact that we trap SIGINT
- if ! ${TB_NICE} ${TB_WATCHDOG} ${MAKE?} MAKE_RESTARTS=1 gb_GCOV=YES build-nocheck > "tb_${P?}_build-nocheck.log" 2>&1 ; then
- tb_REPORT_LOG="tb_${P?}_build-nocheck.log"
- tb_REPORT_MSGS="build failed - error is:"
- [ $V ] && echo "make failed :"
- [ $V ] && cat tb_${P?}_build-nocheck.log
- R=1
- else
- if ! ${TB_LCOV_REPORT} -b -C "$TB_BUILD_DIR" -s "$TB_GIT_DIR" -t "$TB_LCOV_TRACEFILE_DIR" -d "$TB_LCOV_TEST_NAME" >> "tb_${P?}_build-nocheck.log" 2>&1 ; then
- tb_REPORT_LOG="tb_${P}_build-nocheck.log"
- tb_REPORT_MSGS="lcov before failed - error is:"
- [ $V ] && echo "lcov before failed :"
- [ $V ] && cat tb_${P?}_build-nocheck.log
- R=1
- else
- if ! ${TB_NICE} ${TB_WATCHDOG} ${MAKE?} MAKE_RESTARTS=1 gb_GCOV=YES check >> "tb_${P?}_build-nocheck.log" 2>&1 ; then
- tb_REPORT_LOG="tb_${P?}_build-nocheck.log"
- tb_REPORT_MSGS="make check failed - error is:"
- [ $V ] && echo "make failed :"
- [ $V ] && cat tb_${P?}_build-nocheck.log
- R=1
- else
- if ! ${TB_LCOV_REPORT} -a -s "$TB_GIT_DIR" -C "$TB_BUILD_DIR" -t "$TB_LCOV_TRACEFILE_DIR" -d "$TB_LCOV_TEST_NAME" -w "$TB_LCOV_HTML_DIR" >> "tb_${P?}_build-nocheck.log" 2>&1 ; then
- tb_REPORT_LOG="tb_${P?}_build-nocheck.log"
- tb_REPORT_MSGS="lcov after failed - error is:"
- [ $V ] && echo "lcov after failed :"
- [ $V ] && cat tb_${P?}_build-nocheck.log
+ if ! ${TB_LCOV_REPORT} -s "$TB_GIT_DIR" -b "$TB_BUILD_DIR" -t "$TB_LCOV_TRACEFILE_DIR" -r "$TB_LCOV_HTML_DIR" >> "tb_${P?}_make-check.log" 2>&1 ; then
+ tb_REPORT_LOG="tb_${P?}_make-check.log"
+ tb_REPORT_MSGS="lcov report failed - error is:"
+ [ $V ] && echo "lcov report failed :"
+ [ $V ] && cat tb_${P?}_make-check.log
R=1
fi
- fi
- fi
- fi
- fi
}
do_make()
{
- lcov-make-check_do_make
+ lcov-make-check_do_lcov_report
}
lcov-make-check_do_autogen()
{
-local current_timestamp=
-
- if [ "${R}" = "0" ] ; then
- export EXTRA_BUILDID=
- if [ "${TB_TYPE?}" = "tb" ] ; then
- current_timestamp=$(sed -e "s/ /_/" "${TB_METADATA_DIR?}/${P?}_current-git-timestamp.log")
- export EXTRA_BUILDID="TinderBox: ${TB_NAME?}, Branch:${TB_BRANCH?}, Time: $current_timestamp"
- fi
- "${TB_GIT_DIR?}/autogen.sh" > "tb_${P?}_autogen.log" 2>&1
- if [ "$?" != "0" ] ; then
- tb_REPORT_LOG=tb_${P?}_autogen.log
- tb_REPORT_MSGS="autogen/configure failed - error is:"
- [ $V ] && echo "autogen failed"
- [ $V ] && cat tb_${P?}_autogen.log
- R=1
- fi
- fi
+ # no need to run autogen.sh, it is handled by the 'lcov-report.sh' script itself.
+ return 0
}
do_autogen()