run revision 8dff4a773dd9525ec587cd31646a9f67252122c1
f743002678eb67b99bbc29fee116b65d9530fec0wrowe#!/bin/bash
80833bb9a1bf25dcf19e814438a4b311d2e1f4cffuankg#
a34684a59b60a4173c25035d0c627ef17e6dc215rpluem# Run continuous integration tests.
1337c7673efc1f80f634139fbad7cbb98a0dc657ylavic#
1337c7673efc1f80f634139fbad7cbb98a0dc657ylavic# Copyright (C) 2014 Red Hat
1337c7673efc1f80f634139fbad7cbb98a0dc657ylavic#
1337c7673efc1f80f634139fbad7cbb98a0dc657ylavic# This program is free software; you can redistribute it and/or modify
4da61833a1cbbca94094f9653fd970582b97a72etrawick# it under the terms of the GNU General Public License as published by
4da61833a1cbbca94094f9653fd970582b97a72etrawick# the Free Software Foundation; either version 3 of the License, or
4da61833a1cbbca94094f9653fd970582b97a72etrawick# (at your option) any later version.
4da61833a1cbbca94094f9653fd970582b97a72etrawick#
4da61833a1cbbca94094f9653fd970582b97a72etrawick# This program is distributed in the hope that it will be useful,
4789804be088bcd86ae637a29cdb7fda25169521jailletc# but WITHOUT ANY WARRANTY; without even the implied warranty of
4789804be088bcd86ae637a29cdb7fda25169521jailletc# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
4789804be088bcd86ae637a29cdb7fda25169521jailletc# GNU General Public License for more details.
4789804be088bcd86ae637a29cdb7fda25169521jailletc#
e50c3026198fd496f183cda4c32a202925476778covener# You should have received a copy of the GNU General Public License
e50c3026198fd496f183cda4c32a202925476778covener# along with this program. If not, see <http://www.gnu.org/licenses/>.
e50c3026198fd496f183cda4c32a202925476778covener
5b88c8507d5ef6d0c4cfbc78230294968175b638minfrinset -o nounset -o pipefail -o errexit
5b88c8507d5ef6d0c4cfbc78230294968175b638minfrindeclare -r CI_DIR=`dirname "\`readlink -f \"\$0\"\`"`
6c3b9cebb551140fbb25d58bae08b539b3802133ylavicexport PATH=$CI_DIR:$PATH
6c3b9cebb551140fbb25d58bae08b539b3802133ylavicexport LC_ALL=C
6c3b9cebb551140fbb25d58bae08b539b3802133ylavic
4f29b65ab4b547ad5dbe506e2d0ff5d12ead9247ylavic. deps.sh
4f29b65ab4b547ad5dbe506e2d0ff5d12ead9247ylavic. distro.sh
0a0df13b7f1f4f1a74fe295253d89ca3911b301aylavic. configure.sh
0a0df13b7f1f4f1a74fe295253d89ca3911b301aylavic. misc.sh
0a0df13b7f1f4f1a74fe295253d89ca3911b301aylavic
0a0df13b7f1f4f1a74fe295253d89ca3911b301aylavicdeclare -r DEBUG_CFLAGS="-g3 -O2"
69301145375a889e7e37caf7cc7321ac0f91801erpluemdeclare -r COVERAGE_CFLAGS="-g3 -O0 --coverage"
69301145375a889e7e37caf7cc7321ac0f91801erpluemdeclare -r ARCH=`uname -m`
69301145375a889e7e37caf7cc7321ac0f91801erpluemdeclare -r CPU_NUM=`getconf _NPROCESSORS_ONLN`
506bfe33206b2fece40ef25f695af39dd4130facjkaluzadeclare -r TITLE_WIDTH=24
506bfe33206b2fece40ef25f695af39dd4130facjkaluzadeclare -r RESULT_WIDTH=18
506bfe33206b2fece40ef25f695af39dd4130facjkaluza
506bfe33206b2fece40ef25f695af39dd4130facjkaluza# Minimum percentage of code lines covered by tests
d58a848a016d401b965111e50ef829e1641f7834minfrindeclare -r COVERAGE_MIN_LINES=15
d58a848a016d401b965111e50ef829e1641f7834minfrin# Minimum percentage of code functions covered by tests
d58a848a016d401b965111e50ef829e1641f7834minfrindeclare -r COVERAGE_MIN_FUNCS=0
2e6f4d654c96c98b761fb012fd25c5d5b1558c44sf
2e6f4d654c96c98b761fb012fd25c5d5b1558c44sfdeclare BASE_PFX=""
2e6f4d654c96c98b761fb012fd25c5d5b1558c44sfdeclare DEPS=true
17e6c95f3b22d18acdf8380fb26a8d0e10c80767ylavicdeclare BASE_DIR=`pwd`
17e6c95f3b22d18acdf8380fb26a8d0e10c80767ylavicdeclare MODERATE=false
17e6c95f3b22d18acdf8380fb26a8d0e10c80767ylavicdeclare RIGOROUS=false
17e6c95f3b22d18acdf8380fb26a8d0e10c80767ylavic
17e6c95f3b22d18acdf8380fb26a8d0e10c80767ylavic# Output program usage information.
e8bd80a4bb88199d2f9a24a50345688e52d9c116ylavicfunction usage()
e8bd80a4bb88199d2f9a24a50345688e52d9c116ylavic{
e8bd80a4bb88199d2f9a24a50345688e52d9c116ylavic cat <<EOF
330e16bea8fe9cace4de90c349750c03dfb1fe64ylavicUsage: `basename "$0"` [OPTION...]
330e16bea8fe9cace4de90c349750c03dfb1fe64ylavicRun continuous integration tests.
330e16bea8fe9cace4de90c349750c03dfb1fe64ylavic
330e16bea8fe9cace4de90c349750c03dfb1fe64ylavicOptions:
330e16bea8fe9cace4de90c349750c03dfb1fe64ylavic -h, --help Output this help message and exit.
330e16bea8fe9cace4de90c349750c03dfb1fe64ylavic -p, --prefix=STRING Use STRING as the prefix to prepend to file and
330e16bea8fe9cace4de90c349750c03dfb1fe64ylavic directory paths in output.
d7205b1a86c51c27b71a2c458dc453fd53a261c1covener -n, --no-deps Don't attempt to install dependencies.
d7205b1a86c51c27b71a2c458dc453fd53a261c1covener -e, --essential Run the essential subset of tests.
d7205b1a86c51c27b71a2c458dc453fd53a261c1covener -m, --moderate Run the moderate subset of tests.
d7205b1a86c51c27b71a2c458dc453fd53a261c1covener -r, --rigorous,
d7205b1a86c51c27b71a2c458dc453fd53a261c1covener -f, --full Run the rigorous (full) set of tests.
44ff304057225e944e220e981d434a046d14cf06covener
44ff304057225e944e220e981d434a046d14cf06covenerDefault options: --essential
44ff304057225e944e220e981d434a046d14cf06covenerEOF
44ff304057225e944e220e981d434a046d14cf06covener}
5d1ba75b8794925e67591c209085a49279791de9covener
5d1ba75b8794925e67591c209085a49279791de9covener# Output a file display path: a path relocated from base directory (BASE_DIR)
5d1ba75b8794925e67591c209085a49279791de9covener# to base prefix (BASE_PFX).
032982212dbcc7c3cce95bf89c503bb56e185ac7kbrand# Args: path
032982212dbcc7c3cce95bf89c503bb56e185ac7kbrandfunction disppath()
032982212dbcc7c3cce95bf89c503bb56e185ac7kbrand{
032982212dbcc7c3cce95bf89c503bb56e185ac7kbrand declare -r path=`readlink -f "$1"`
caad2986f81ab263f7af41467dd622dc9add17f3ylavic printf "%s" "$BASE_PFX${path:${#BASE_DIR}+1}"
caad2986f81ab263f7af41467dd622dc9add17f3ylavic}
caad2986f81ab263f7af41467dd622dc9add17f3ylavic
caad2986f81ab263f7af41467dd622dc9add17f3ylavic# Run a stage.
45a10d38e6051fd7bdf9d742aaae633d97ff02abjailletc# Args: id cmd [arg...]
f7317ff316c2b141feea31bddb74d5d3fa1584edjortonfunction stage()
f7317ff316c2b141feea31bddb74d5d3fa1584edjorton{
2165214331e4afafca4048f66f303d0253d7b001covener declare -r id="$1"; shift
a34684a59b60a4173c25035d0c627ef17e6dc215rpluem declare -r log="ci-$id.log"
a34684a59b60a4173c25035d0c627ef17e6dc215rpluem declare status
1e2d421a36999d292042a5539971070d54aa6c63ylavic declare start
1e2d421a36999d292042a5539971070d54aa6c63ylavic declare end
1e2d421a36999d292042a5539971070d54aa6c63ylavic declare duration
fa7ed98b9dc94c5845cf845aea0a44ecacd290c9humbedooh
fa7ed98b9dc94c5845cf845aea0a44ecacd290c9humbedooh printf "%-${TITLE_WIDTH}s" "$id:"
fa7ed98b9dc94c5845cf845aea0a44ecacd290c9humbedooh
0b67eb8568cd58bb77082703951679b42cf098actrawick {
0b67eb8568cd58bb77082703951679b42cf098actrawick printf "Start: "
0b67eb8568cd58bb77082703951679b42cf098actrawick start=`date +%s`
0b67eb8568cd58bb77082703951679b42cf098actrawick date --date="@$start"
5ef3c61605a3a021ff71f488983cb0065f8e1a79covener set +o errexit
fb1985a97912b25ec6564c73e610a31e5fc6e25fcovener (
09c87c777bed1655621bb20e1c46cb6b1a63279dcovener set -o errexit -o xtrace
6502b7b32f980cc2093bb3ebce37e5e4dc68fba4ylavic "$@"
6502b7b32f980cc2093bb3ebce37e5e4dc68fba4ylavic )
3060ce7f798fbda7999cd4ddf89b525d2b294185covener status=$?
c1a63b8fad09c419c1a64f75993feb8a343a6801ylavic set -o errexit
c1a63b8fad09c419c1a64f75993feb8a343a6801ylavic printf "End: "
c1a63b8fad09c419c1a64f75993feb8a343a6801ylavic end=`date +%s`
e6b4bd1113567627ab6bb6c6a7105e1e01a7d889jailletc date --date="@$end"
e6b4bd1113567627ab6bb6c6a7105e1e01a7d889jailletc } &> "$log"
e466c40e1801982602ee0200c9e8b61cc148742djailletc
e466c40e1801982602ee0200c9e8b61cc148742djailletc duration=$((end - start))
457468b82e59d01eba00dd9d0817309c8f5e414ejim
457468b82e59d01eba00dd9d0817309c8f5e414ejim if [ "$status" == 0 ]; then
457468b82e59d01eba00dd9d0817309c8f5e414ejim printf 'success '
04983e3bd1754764eec7d6bb772fe3b0bf391771jorton else
04983e3bd1754764eec7d6bb772fe3b0bf391771jorton printf 'failure '
15890c9306ba98f6fc243e15a3c4778ddc7d773erpluem fi
15660979a30d251681463de2e0584853890082accovener printf "%02u:%02u:%02u " \
15660979a30d251681463de2e0584853890082accovener $((duration / (60 * 60))) \
49dacedb6c387b786b7911082ff35121a45f414bcovener $((duration / 60 % 60)) \
49dacedb6c387b786b7911082ff35121a45f414bcovener $((duration % 60))
cfd9415521847b2f9394fad04fb701cfb955f503rjung disppath "$log"
cfd9415521847b2f9394fad04fb701cfb955f503rjung printf "\n"
cfd9415521847b2f9394fad04fb701cfb955f503rjung
28c31fb73c1264bd1d0ff932573677030b024c7dwrowe return "$status"
28c31fb73c1264bd1d0ff932573677030b024c7dwrowe}
28c31fb73c1264bd1d0ff932573677030b024c7dwrowe
28c31fb73c1264bd1d0ff932573677030b024c7dwrowe# Execute mock as is, or, if the user is not in the "mock" group, under sudo,
28c31fb73c1264bd1d0ff932573677030b024c7dwrowe# which has password prompt/input on the console, instead of stderr/stdin.
8491e0600f69b0405e156ea8a419653c065c645bcovener# Args: [mock_arg...]
63b9f1f5880391261705f696d7d65507bbe9ace3covenerfunction mock_privileged()
63b9f1f5880391261705f696d7d65507bbe9ace3covener{
63b9f1f5880391261705f696d7d65507bbe9ace3covener if memberof mock; then
49dacedb6c387b786b7911082ff35121a45f414bcovener mock "$@"
49dacedb6c387b786b7911082ff35121a45f414bcovener else
49dacedb6c387b786b7911082ff35121a45f414bcovener declare prompt=$'Not a "mock" group member.\n'
49dacedb6c387b786b7911082ff35121a45f414bcovener prompt+="To run mock enter sudo password for $USER: "
3c990331fc6702119e4f5b8ba9eae3021aea5265jim sudo -p "$prompt" mock "$@"
3c990331fc6702119e4f5b8ba9eae3021aea5265jim fi
3c990331fc6702119e4f5b8ba9eae3021aea5265jim}
3c990331fc6702119e4f5b8ba9eae3021aea5265jim
fc42512879dd0504532f52fe5d0d0383dda96a1eniq# Execute mock_privileged with extra chroot configuration added.
fc42512879dd0504532f52fe5d0d0383dda96a1eniq# Args: chroot [mock_arg...]
fc42512879dd0504532f52fe5d0d0383dda96a1eniq# Input: extra configuration
0451df5dc50fa5d8b3e07d92ee6a92e36a1181a5niqfunction mock_privileged_conf()
0451df5dc50fa5d8b3e07d92ee6a92e36a1181a5niq{
0451df5dc50fa5d8b3e07d92ee6a92e36a1181a5niq declare -r chroot="$1"; shift
da0442c0440caef34706e2c2f3af05cb65921cc0jailletc declare conf_dir
983528026996668ea295be95aedb9c7a346af470ylavic
da0442c0440caef34706e2c2f3af05cb65921cc0jailletc conf_dir=`mktemp --tmpdir --directory mock-config.XXXXXXXX`
da0442c0440caef34706e2c2f3af05cb65921cc0jailletc trap 'trap - RETURN; rm -R "$conf_dir";' RETURN
06b8f183140c8e02e0974e938a05078b511d1603covener # Preserve timestamps to avoid unnecessary cache rebuilds
06b8f183140c8e02e0974e938a05078b511d1603covener cp -r --preserve=timestamps /etc/mock/* "$conf_dir"/
06b8f183140c8e02e0974e938a05078b511d1603covener cat >> "${conf_dir}/${chroot}.cfg"
15890c9306ba98f6fc243e15a3c4778ddc7d773erpluem touch --reference="/etc/mock/${chroot}.cfg" "${conf_dir}/${chroot}.cfg"
259878293a997ff49f5ddfc53d3739cbdc25444ecovener mock_privileged --configdir="$conf_dir" --root="$chroot" "$@"
259878293a997ff49f5ddfc53d3739cbdc25444ecovener}
259878293a997ff49f5ddfc53d3739cbdc25444ecovener
259878293a997ff49f5ddfc53d3739cbdc25444ecovener# Execute mock_privileged with dependency package source configuration added.
15890c9306ba98f6fc243e15a3c4778ddc7d773erpluem# Args: chroot [mock_arg...]
b54b024c06a19926832d77d40ba35ad8c41e4d3dminfrinfunction mock_privileged_deps()
b54b024c06a19926832d77d40ba35ad8c41e4d3dminfrin{
b54b024c06a19926832d77d40ba35ad8c41e4d3dminfrin declare -r chroot_name="$1"; shift
65967d05f839dbf27cf91d91fa79585eeae19660minfrin declare -r config=$(basename $(readlink -f "/etc/mock/${chroot_name}.cfg"))
65967d05f839dbf27cf91d91fa79585eeae19660minfrin declare -r chroot="${config%.cfg}"
65967d05f839dbf27cf91d91fa79585eeae19660minfrin declare repo
65967d05f839dbf27cf91d91fa79585eeae19660minfrin
8152945ae46857b170cb227e79bb799f4fc7710dminfrin if [[ "$chroot" == fedora-* ]]; then
8152945ae46857b170cb227e79bb799f4fc7710dminfrin repo='fedora-$releasever-$basearch'
8152945ae46857b170cb227e79bb799f4fc7710dminfrin elif [[ "$chroot" =~ epel-([0-9]+) ]]; then
8152945ae46857b170cb227e79bb799f4fc7710dminfrin repo="epel-${BASH_REMATCH[1]}-\$basearch"
75f5c2db254c0167a0e396254460de09b775d203trawick else
75f5c2db254c0167a0e396254460de09b775d203trawick echo "Unknown chroot config: $chroot" >&2
75f5c2db254c0167a0e396254460de09b775d203trawick exit 1
4f0358189bfa57b8e75bd6b94db264302a8f336amrumph fi
4f0358189bfa57b8e75bd6b94db264302a8f336amrumph
4f0358189bfa57b8e75bd6b94db264302a8f336amrumph mock_privileged_conf "$chroot" "$@" <<<"
5716f9c6daa92dde5f2f9d11ed63f7c9549c223atrawickconfig_opts['yum.conf'] += '''
5716f9c6daa92dde5f2f9d11ed63f7c9549c223atrawick[sssd-deps]
5716f9c6daa92dde5f2f9d11ed63f7c9549c223atrawickname=Extra SSSD dependencies
5716f9c6daa92dde5f2f9d11ed63f7c9549c223atrawickbaseurl=http://copr-be.cloud.fedoraproject.org/results/lslebodn/sssd-deps/$repo/
54d750a84a175d8e338880514d440773eb986b50covenerskip_if_unavailable=true
54d750a84a175d8e338880514d440773eb986b50covenergpgcheck=0
54d750a84a175d8e338880514d440773eb986b50covenerenabled=1
54d750a84a175d8e338880514d440773eb986b50covener'''
54d750a84a175d8e338880514d440773eb986b50covener"
54d750a84a175d8e338880514d440773eb986b50covener}
54d750a84a175d8e338880514d440773eb986b50covener
54d750a84a175d8e338880514d440773eb986b50covener# Run debug build checks.
7a3aa12f0eda24793ee26d6a179bd53132e9dae8covenerfunction build_debug()
54d750a84a175d8e338880514d440773eb986b50covener{
54d750a84a175d8e338880514d440773eb986b50covener # Extended glob pattern matching tests to run under Valgrind.
83b50288fa7d306324bba68832011ea08f5c7832covener # NOTE: The particular pattern below is inverted
4e30ef014533a7e93c92d88306291f5e49c9692ftrawick declare -r valgrind_test_pattern="!(*.py|*/dlopen-tests|*/whitespace_test)"
83b50288fa7d306324bba68832011ea08f5c7832covener export CFLAGS="$DEBUG_CFLAGS"
5f066f496cd9f20a2a701255bc67d44e7cb46daetrawick declare test_dir
5f066f496cd9f20a2a701255bc67d44e7cb46daetrawick declare test_dir_distcheck
5f066f496cd9f20a2a701255bc67d44e7cb46daetrawick declare intgcheck_configure_args
2e15620d724fb8e3a5be183b917359a2fd6e9468covener declare distcheck_configure_args
2e15620d724fb8e3a5be183b917359a2fd6e9468covener declare status
2e15620d724fb8e3a5be183b917359a2fd6e9468covener
2e15620d724fb8e3a5be183b917359a2fd6e9468covener test_dir=`mktemp --directory /dev/shm/ci-test-dir.XXXXXXXX`
1b988c41ee505962781d110a3e4c2c90f1ea0aa4covener stage configure "$BASE_DIR/configure" \
1b988c41ee505962781d110a3e4c2c90f1ea0aa4covener "${CONFIGURE_ARG_LIST[@]}" \
1b988c41ee505962781d110a3e4c2c90f1ea0aa4covener --with-test-dir="$test_dir"
1b988c41ee505962781d110a3e4c2c90f1ea0aa4covener
b8efdc95bec9cf089aa1be0bfd07d46aa1137a7acovener # Not building "tests" due to https://fedorahosted.org/sssd/ticket/2350
b8efdc95bec9cf089aa1be0bfd07d46aa1137a7acovener stage make-tests make-check-wrap -j $CPU_NUM check -- true
b8efdc95bec9cf089aa1be0bfd07d46aa1137a7acovener
f06e7c4b1bce6b6491e5de0b7998d3f5696b293dchrisd status=0
f06e7c4b1bce6b6491e5de0b7998d3f5696b293dchrisd CK_FORK=no \
f06e7c4b1bce6b6491e5de0b7998d3f5696b293dchrisd stage make-check-valgrind \
179565be4043d7e5f9161aa75271fa0a001866d9covener make-check-wrap -j $CPU_NUM check -- \
179565be4043d7e5f9161aa75271fa0a001866d9covener libtool --mode=execute \
179565be4043d7e5f9161aa75271fa0a001866d9covener valgrind-condense 99 \
111436a32ba1254291e4883292fb116d15fe8f64covener "$valgrind_test_pattern" -- \
fce4949fb0b309a5744afcd503c6ed2d35621ee2covener --trace-children=yes \
fce4949fb0b309a5744afcd503c6ed2d35621ee2covener --trace-children-skip='*/bin/*,*/sbin/*' \
fce4949fb0b309a5744afcd503c6ed2d35621ee2covener --leak-check=full \
fce4949fb0b309a5744afcd503c6ed2d35621ee2covener --gen-suppressions=all \
7b7430e701e9a31ce809da7c220bb8dfcf68c86etrawick --suppressions="$CI_DIR/sssd.supp" \
7b7430e701e9a31ce809da7c220bb8dfcf68c86etrawick --verbose ||
7b7430e701e9a31ce809da7c220bb8dfcf68c86etrawick status=$?
ccc20788c1e5fc973f36df634399c89acb70deaejerenkrantz mv "$test_dir" ci-test-dir
ccc20788c1e5fc973f36df634399c89acb70deaejerenkrantz ((status == 0))
ccc20788c1e5fc973f36df634399c89acb70deaejerenkrantz
273e512f20f262e5e2aa8e0e83371d1929fb76adjkaluza if "$MODERATE"; then
273e512f20f262e5e2aa8e0e83371d1929fb76adjkaluza if "$DEPS_INTGCHECK_SATISFIED"; then
273e512f20f262e5e2aa8e0e83371d1929fb76adjkaluza printf -v intgcheck_configure_args " %q" \
efe780dcf13b2b95effabf897d694d8f23feac74trawick "${CONFIGURE_ARG_LIST[@]}"
fe83f60b41477b14a37edcfcd1f7f5c5a1ebfe44minfrin stage make-intgcheck make -j $CPU_NUM intgcheck \
fe83f60b41477b14a37edcfcd1f7f5c5a1ebfe44minfrin INTGCHECK_CONFIGURE_FLAGS=" \
fe83f60b41477b14a37edcfcd1f7f5c5a1ebfe44minfrin $intgcheck_configure_args"
993d1261a278d7322bccef219101220b7b4fb8c5jkaluza fi
993d1261a278d7322bccef219101220b7b4fb8c5jkaluza
993d1261a278d7322bccef219101220b7b4fb8c5jkaluza test_dir_distcheck=`mktemp --directory /dev/shm/ci-test-dir.XXXXXXXX`
ba050a6f942b9fa0e81ed73437588005c569655ccovener # Single thread due to https://fedorahosted.org/sssd/ticket/2354
ba050a6f942b9fa0e81ed73437588005c569655ccovener status=0
ba050a6f942b9fa0e81ed73437588005c569655ccovener printf -v distcheck_configure_args " %q" \
ba050a6f942b9fa0e81ed73437588005c569655ccovener "${CONFIGURE_ARG_LIST[@]}" \
135ddda3a989215d2bedbcf1529bfb269c3eda23niq "--with-test-dir=$test_dir_distcheck"
135ddda3a989215d2bedbcf1529bfb269c3eda23niq stage make-distcheck make distcheck \
135ddda3a989215d2bedbcf1529bfb269c3eda23niq AUX_DISTCHECK_CONFIGURE_FLAGS=" \
001a44c352f89c9ec332ffd3e0a6927dcd19432chumbedooh $distcheck_configure_args" ||
001a44c352f89c9ec332ffd3e0a6927dcd19432chumbedooh status=$?
001a44c352f89c9ec332ffd3e0a6927dcd19432chumbedooh mv "$test_dir_distcheck" ci-test-dir-distcheck
efe780dcf13b2b95effabf897d694d8f23feac74trawick ((status == 0))
793214f67dede32edfd9ee96c664ead04d175cbbjfclere
cc5a4a08dc9783fcbc52ce86f11e01c281a43810minfrin if [[ "$DISTRO_BRANCH" == -redhat-* ]]; then
9b0076ddd1103e5fa9c1f9bafde4b06ce244fbaecovener stage make-srpm env -u CFLAGS -- make srpm
9b0076ddd1103e5fa9c1f9bafde4b06ce244fbaecovener stage mock-build mock_privileged_deps "default" \
9b0076ddd1103e5fa9c1f9bafde4b06ce244fbaecovener --resultdir ci-mock-result \
249d09d51808cb7981af99762c3b3736ca126cd5jkaluza rpmbuild/SRPMS/*.src.rpm
249d09d51808cb7981af99762c3b3736ca126cd5jkaluza fi
249d09d51808cb7981af99762c3b3736ca126cd5jkaluza fi
249d09d51808cb7981af99762c3b3736ca126cd5jkaluza
56589be3d7a3e9343370df240010c6928cc78b39jkaluza unset CFLAGS
56589be3d7a3e9343370df240010c6928cc78b39jkaluza}
56589be3d7a3e9343370df240010c6928cc78b39jkaluza
77ca16c5676da23155311e13cee61e7eaba9fa3ejailletc# Run coverage build checks.
77ca16c5676da23155311e13cee61e7eaba9fa3ejailletcfunction build_coverage()
77ca16c5676da23155311e13cee61e7eaba9fa3ejailletc{
77ca16c5676da23155311e13cee61e7eaba9fa3ejailletc declare -r coverage_report_dir="ci-report-coverage"
f87299dab99bc04b51a6b8cad51b6795db862c0atrawick declare test_dir
f87299dab99bc04b51a6b8cad51b6795db862c0atrawick
f87299dab99bc04b51a6b8cad51b6795db862c0atrawick export CFLAGS="$COVERAGE_CFLAGS"
4d12805e6c18253040223ea637acd6b3b3c18f60jorton
4d12805e6c18253040223ea637acd6b3b3c18f60jorton test_dir=`mktemp --directory /dev/shm/ci-test-dir.XXXXXXXX`
4d12805e6c18253040223ea637acd6b3b3c18f60jorton stage configure "$BASE_DIR/configure" \
85eacfc96a04547ef25aabbc06440039715084c2jorton "${CONFIGURE_ARG_LIST[@]}" \
85eacfc96a04547ef25aabbc06440039715084c2jorton --with-test-dir="$test_dir"
e5d909f2b06bd880fb3675cd49363df981caa631trawick
a4df2cd1e1391575a327c2a90ba4315f805a0a78covener # Build everything, including tests
a4df2cd1e1391575a327c2a90ba4315f805a0a78covener # Not building "tests" due to https://fedorahosted.org/sssd/ticket/2350
a4df2cd1e1391575a327c2a90ba4315f805a0a78covener stage make-tests make-check-wrap -j $CPU_NUM check -- true
cb666b29f81df1d11d65002250153353568021fccovener
cb666b29f81df1d11d65002250153353568021fccovener stage lcov-pre lcov --capture --initial --directory . \
cb666b29f81df1d11d65002250153353568021fccovener --base-directory "$BASE_DIR" \
6a80c3c6f4b8ea7ba5e89402b8b779b09ce020e0covener --output-file ci-base.info
1c2cab00d988fc48cbe59032cf76cc0bab20d6f7covener # Run tests
6a80c3c6f4b8ea7ba5e89402b8b779b09ce020e0covener stage make-check make -j $CPU_NUM check || true
75a230a728338d84dcfe81edd375352f34de22d0covener mv "$test_dir" ci-test-dir
75a230a728338d84dcfe81edd375352f34de22d0covener
75a230a728338d84dcfe81edd375352f34de22d0covener stage lcov-post lcov --capture --directory . \
1f50dc34ae069adeed20b2986e5ffdefa5c410e0covener --base-directory "$BASE_DIR" \
1f50dc34ae069adeed20b2986e5ffdefa5c410e0covener --output-file ci-check.info
1f50dc34ae069adeed20b2986e5ffdefa5c410e0covener stage lcov-merge lcov --add-tracefile ci-base.info \
63a5ea80bddcc84a462e40f402b4f330e0e05411covener --add-tracefile ci-check.info \
63a5ea80bddcc84a462e40f402b4f330e0e05411covener --output-file ci-dirty.info
63a5ea80bddcc84a462e40f402b4f330e0e05411covener stage lcov-clean lcov --remove ci-dirty.info \
63a5ea80bddcc84a462e40f402b4f330e0e05411covener "/usr/*" "src/tests/*" \
65a4e663b82f8bce28ac22ab2edfd7502de36998sf --output-file ci.info
65a4e663b82f8bce28ac22ab2edfd7502de36998sf stage genhtml eval 'genhtml --output-directory \
65a4e663b82f8bce28ac22ab2edfd7502de36998sf "$coverage_report_dir" \
65a4e663b82f8bce28ac22ab2edfd7502de36998sf --title "sssd" --show-details \
c7de1955eb0eaeabf7042902476397692672d549sf --legend --prefix "$BASE_DIR" \
74e7f6c55fd67b10cb400b3f6d1dc718a303d944minfrin ci.info |& tee ci-genhtml.out'
74e7f6c55fd67b10cb400b3f6d1dc718a303d944minfrin printf "%-$((TITLE_WIDTH + RESULT_WIDTH))s%s\n" \
74e7f6c55fd67b10cb400b3f6d1dc718a303d944minfrin "coverage report:" \
74e7f6c55fd67b10cb400b3f6d1dc718a303d944minfrin "`disppath \"\$coverage_report_dir/index.html\"`"
a511a29faf2ff7ead3b67680154a624effb31aafminfrin
a511a29faf2ff7ead3b67680154a624effb31aafminfrin stage lcov-check eval 'lcov_check "$COVERAGE_MIN_LINES" \
a511a29faf2ff7ead3b67680154a624effb31aafminfrin "$COVERAGE_MIN_FUNCS" \
a511a29faf2ff7ead3b67680154a624effb31aafminfrin < ci-genhtml.out'
a511a29faf2ff7ead3b67680154a624effb31aafminfrin
63921358ef93fcb41bc71d9894221ba3d7fbb87bminfrin unset CFLAGS
63921358ef93fcb41bc71d9894221ba3d7fbb87bminfrin}
63921358ef93fcb41bc71d9894221ba3d7fbb87bminfrin
deec48c67d4786bc77112ffbf3a4e70b931097edminfrin# Run a build inside a sub-directory.
6d601599d3d65df0410eae6e573e75b2dbfb1fb4minfrin# Args: id cmd [arg...]
6d601599d3d65df0410eae6e573e75b2dbfb1fb4minfrinfunction run_build()
6d601599d3d65df0410eae6e573e75b2dbfb1fb4minfrin{
6d601599d3d65df0410eae6e573e75b2dbfb1fb4minfrin declare -r id="$1"; shift
684e0cfc200f66287a93bbd1708d1dd8a92a7eefcovener declare -r dir="ci-build-$id"
684e0cfc200f66287a93bbd1708d1dd8a92a7eefcovener
5c43d2fb853f84497b5ece2d414ef9484aa87e5fsf mkdir "$dir"
05a5a9c3e16f21566e1b61f4bd68025ce1b741ccjoes printf "%-$((TITLE_WIDTH + RESULT_WIDTH))s%s\n" \
05a5a9c3e16f21566e1b61f4bd68025ce1b741ccjoes "${id^^} BUILD:" "`disppath \"\$dir\"`"
ef82e8fa164e0a1f8b813f7deb6b7ead96018c94niq
26c5829347f6a355c00f1ba0301d575056b69536niq cd "$dir"
ef82e8fa164e0a1f8b813f7deb6b7ead96018c94niq "$@"
ef82e8fa164e0a1f8b813f7deb6b7ead96018c94niq cd ..
ef82e8fa164e0a1f8b813f7deb6b7ead96018c94niq}
ef82e8fa164e0a1f8b813f7deb6b7ead96018c94niq
ef82e8fa164e0a1f8b813f7deb6b7ead96018c94niq#
ef82e8fa164e0a1f8b813f7deb6b7ead96018c94niq# Main routine
413ee814748f37be168ff12407fa6dba0ceeabe6trawick#
c12917da693bae4028a1d5a5e8224bceed8c739dsfdeclare args_expr
c12917da693bae4028a1d5a5e8224bceed8c739dsfargs_expr=`getopt --name \`basename "\$0"\` \
eafcc0ebf263d0ba69855b6e10958c4c1a2361bdsf --options hp:nemrf \
eafcc0ebf263d0ba69855b6e10958c4c1a2361bdsf --longoptions help,prefix:,no-deps \
eafcc0ebf263d0ba69855b6e10958c4c1a2361bdsf --longoptions essential,moderate,rigorous,full \
eafcc0ebf263d0ba69855b6e10958c4c1a2361bdsf -- "$@"`
eafcc0ebf263d0ba69855b6e10958c4c1a2361bdsfeval set -- "$args_expr"
d7ffd2da16d58b1a0de212e4d56f7aebb72bef26sf
d7ffd2da16d58b1a0de212e4d56f7aebb72bef26sfwhile true; do
d7ffd2da16d58b1a0de212e4d56f7aebb72bef26sf case "$1" in
4576c1a9ef54cd1e5555ee07d016a7f559f80338sf -h|--help)
4576c1a9ef54cd1e5555ee07d016a7f559f80338sf usage; exit 0;;
4576c1a9ef54cd1e5555ee07d016a7f559f80338sf -p|--prefix)
9811aed12bbc71783d2e544ccb5fecd193843eadsf BASE_PFX="$2"; shift 2;;
9811aed12bbc71783d2e544ccb5fecd193843eadsf -n|--no-deps)
9811aed12bbc71783d2e544ccb5fecd193843eadsf DEPS=false; shift;;
88fac54d9d64f85bbdab5d7010816f4377f95bd7rjung -e|--essential)
88fac54d9d64f85bbdab5d7010816f4377f95bd7rjung MODERATE=false; RIGOROUS=false; shift;;
bd3f5647b96d378d9c75c954e3f13582af32c643sf -m|--moderate)
bd3f5647b96d378d9c75c954e3f13582af32c643sf MODERATE=true; RIGOROUS=false; shift;;
bd3f5647b96d378d9c75c954e3f13582af32c643sf -r|--rigorous|-f|--full)
bd3f5647b96d378d9c75c954e3f13582af32c643sf MODERATE=true; RIGOROUS=true; shift;;
bd3f5647b96d378d9c75c954e3f13582af32c643sf --)
2a7beea91d46beb41f043a84eaad060047ee04aafabien shift; break;;
2a7beea91d46beb41f043a84eaad060047ee04aafabien *)
2a7beea91d46beb41f043a84eaad060047ee04aafabien echo "Unknown option: $1" >&2
2a7beea91d46beb41f043a84eaad060047ee04aafabien exit 1;;
584a85dd4047e38d3ed3a29b6662fcc9d100ae4csf esac
584a85dd4047e38d3ed3a29b6662fcc9d100ae4csfdone
584a85dd4047e38d3ed3a29b6662fcc9d100ae4csf
f21e9e3d0bfb7a507ecc5bc963f2159d693503d1sfif [ $# != 0 ]; then
f21e9e3d0bfb7a507ecc5bc963f2159d693503d1sf echo "Positional arguments are not accepted." >&2
f21e9e3d0bfb7a507ecc5bc963f2159d693503d1sf usage >&2
f6b9c755a0b793e8a3a3aebd327ca20a86478117sf exit 1
f6b9c755a0b793e8a3a3aebd327ca20a86478117sffi
f6b9c755a0b793e8a3a3aebd327ca20a86478117sf
132ee6ac1c26d6e8953836316ba50734eefab47bsftrap 'echo FAILURE' EXIT
132ee6ac1c26d6e8953836316ba50734eefab47bsfrm_rf_ro ci-*
132ee6ac1c26d6e8953836316ba50734eefab47bsfexport V=1
85eacfc96a04547ef25aabbc06440039715084c2jortonif "$DEPS"; then
85eacfc96a04547ef25aabbc06440039715084c2jorton stage install-deps deps_install
85eacfc96a04547ef25aabbc06440039715084c2jortonfi
536d2e7cd1fdec1255b8c3bdf41fdc714c506a54trawickstage autoreconf autoreconf --install --force
536d2e7cd1fdec1255b8c3bdf41fdc714c506a54trawickrun_build debug build_debug
536d2e7cd1fdec1255b8c3bdf41fdc714c506a54trawickif "$RIGOROUS"; then
536d2e7cd1fdec1255b8c3bdf41fdc714c506a54trawick run_build coverage build_coverage
79c5787b92ac5f0e1cc82393816c77a006399316trawickfi
79c5787b92ac5f0e1cc82393816c77a006399316trawickunset V
79c5787b92ac5f0e1cc82393816c77a006399316trawicktrap - EXIT
79c5787b92ac5f0e1cc82393816c77a006399316trawickecho SUCCESS
c967bf3bc89e8aa60dbd30d9da388e448ddc1cc4trawick