From 088d47921c083f67e8fe1e1d8361014b32cbd292 Mon Sep 17 00:00:00 2001 From: Maarten Hoes Date: Sun, 21 Dec 2014 19:40:23 +0100 Subject: An example config for integration of lcov-report.sh with tinderbox. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Change-Id: Ibfb619c91ffd0ac41f2d6872817822ca0907f025 Reviewed-on: https://gerrit.libreoffice.org/13581 Reviewed-by: Caolán McNamara Tested-by: Caolán McNamara --- lcov-report/tinderbox/.tb/config | 13 +++ .../.tb/profiles/lcov-make-check/autogen.lastrun | 4 + .../tinderbox/.tb/profiles/lcov-make-check/config | 15 ++++ .../.tb/profiles/lcov-make-check/phases.sh | 93 ++++++++++++++++++++++ lcov-report/tinderbox/README.tb | 22 +++++ 5 files changed, 147 insertions(+) create mode 100644 lcov-report/tinderbox/.tb/config create mode 100644 lcov-report/tinderbox/.tb/profiles/lcov-make-check/autogen.lastrun create mode 100644 lcov-report/tinderbox/.tb/profiles/lcov-make-check/config create mode 100644 lcov-report/tinderbox/.tb/profiles/lcov-make-check/phases.sh create mode 100644 lcov-report/tinderbox/README.tb diff --git a/lcov-report/tinderbox/.tb/config b/lcov-report/tinderbox/.tb/config new file mode 100644 index 0000000..2ba1d30 --- /dev/null +++ b/lcov-report/tinderbox/.tb/config @@ -0,0 +1,13 @@ +TB_ACTIVE_PROFILES=lcov-make-check +TB_BRANCH=master +TB_BUILD_DIR=~/build +TB_GIT_DIR=~/source/libo-core +TB_NAME=Linux-lcovreports-x86@140 +TB_OWNER=someone@somewhere.net +TB_TRIGGER_FILE=~/tmp/TINDERBOX_START_LCOV +TB_LOGFILE=~/tmp/tinderbox.logfile.txt + +TB_SMTP_HOST=foo@bar.com +TB_SMTP_PASSWORD=no.just.no +TB_SMTP_USER=none +TB_SEND_MAIL=none diff --git a/lcov-report/tinderbox/.tb/profiles/lcov-make-check/autogen.lastrun b/lcov-report/tinderbox/.tb/profiles/lcov-make-check/autogen.lastrun new file mode 100644 index 0000000..972c3e5 --- /dev/null +++ b/lcov-report/tinderbox/.tb/profiles/lcov-make-check/autogen.lastrun @@ -0,0 +1,4 @@ +--enable-python=internal +--disable-online-update +--without-system-libs +--without-system-headers diff --git a/lcov-report/tinderbox/.tb/profiles/lcov-make-check/config b/lcov-report/tinderbox/.tb/profiles/lcov-make-check/config new file mode 100644 index 0000000..b7e778e --- /dev/null +++ b/lcov-report/tinderbox/.tb/profiles/lcov-make-check/config @@ -0,0 +1,15 @@ +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 + diff --git a/lcov-report/tinderbox/.tb/profiles/lcov-make-check/phases.sh b/lcov-report/tinderbox/.tb/profiles/lcov-make-check/phases.sh new file mode 100644 index 0000000..3a2b5f8 --- /dev/null +++ b/lcov-report/tinderbox/.tb/profiles/lcov-make-check/phases.sh @@ -0,0 +1,93 @@ +#!/usr/bin/env bash +# -*- tab-width : 4; indent-tabs-mode : nil -*- + +lcov-make-check_do_make() +{ + 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 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 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 + R=1 + fi + fi + fi + fi + fi +} + +do_make() +{ + lcov-make-check_do_make +} + +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 +} + +do_autogen() +{ + lcov-make-check_do_autogen +} + +lcov-make-check_do_test() +{ + return 0 +} + +do_test() +{ + lcov-make-check_do_test +} + +lcov-make-check_do_push() +{ + return 0 +} + +do_push() +{ + lcov-make-check_do_push +} + diff --git a/lcov-report/tinderbox/README.tb b/lcov-report/tinderbox/README.tb new file mode 100644 index 0000000..e525527 --- /dev/null +++ b/lcov-report/tinderbox/README.tb @@ -0,0 +1,22 @@ + +This directory contains an example configuration for the integration of +the lcov-report.sh shell script with tinderbox/buildbot. + + +The directory tree contains the following items: + +- An example profile called 'lcov-make-check', in the directory + '.tb/profiles/lcov-make-check' +- An example configuration file in '.tb/profiles/lcov-make-check/config' +- Custom tinderbox 'phases' or functions in + '.tb/profiles/lcov-make-check/phases.sh' +- Custom autogen.sh / configure.sh flags in + '.tb/profiles/lcov-make-check/autogen.lastrun' + + +If you would like to use these examples, you can copy the '.tb' +directory tree to your existing ~/.tb tree, and add the profile +'lcov-make-check' to 'TB_ACTIVE_PROFILES' in your '~/.tb/config'. You +also need to set 'TB_BRANCH', 'TB_BUILD_DIR', and 'TB_GIT_DIR' +there. Additionally, you need to modify the 'TB_LCOV_*' variables in +'./.tb/profiles/lcov-make-check/config' to reflect your situation. -- cgit v1.2.3