1b0d29bc4SBrooks Davis#! /bin/sh 2b0d29bc4SBrooks Davis# Copyright 2014 The Kyua Authors. 3b0d29bc4SBrooks Davis# All rights reserved. 4b0d29bc4SBrooks Davis# 5b0d29bc4SBrooks Davis# Redistribution and use in source and binary forms, with or without 6b0d29bc4SBrooks Davis# modification, are permitted provided that the following conditions are 7b0d29bc4SBrooks Davis# met: 8b0d29bc4SBrooks Davis# 9b0d29bc4SBrooks Davis# * Redistributions of source code must retain the above copyright 10b0d29bc4SBrooks Davis# notice, this list of conditions and the following disclaimer. 11b0d29bc4SBrooks Davis# * Redistributions in binary form must reproduce the above copyright 12b0d29bc4SBrooks Davis# notice, this list of conditions and the following disclaimer in the 13b0d29bc4SBrooks Davis# documentation and/or other materials provided with the distribution. 14b0d29bc4SBrooks Davis# * Neither the name of Google Inc. nor the names of its contributors 15b0d29bc4SBrooks Davis# may be used to endorse or promote products derived from this software 16b0d29bc4SBrooks Davis# without specific prior written permission. 17b0d29bc4SBrooks Davis# 18b0d29bc4SBrooks Davis# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 19b0d29bc4SBrooks Davis# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 20b0d29bc4SBrooks Davis# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 21b0d29bc4SBrooks Davis# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 22b0d29bc4SBrooks Davis# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 23b0d29bc4SBrooks Davis# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 24b0d29bc4SBrooks Davis# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 25b0d29bc4SBrooks Davis# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 26b0d29bc4SBrooks Davis# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 27b0d29bc4SBrooks Davis# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 28b0d29bc4SBrooks Davis# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 29b0d29bc4SBrooks Davis 30b0d29bc4SBrooks Davisset -e -x 31b0d29bc4SBrooks Davis 32b0d29bc4SBrooks Davisrun_autoreconf() { 33b0d29bc4SBrooks Davis if [ -d /usr/local/share/aclocal ]; then 34b0d29bc4SBrooks Davis autoreconf -isv -I/usr/local/share/aclocal 35b0d29bc4SBrooks Davis else 36b0d29bc4SBrooks Davis autoreconf -isv 37b0d29bc4SBrooks Davis fi 38b0d29bc4SBrooks Davis} 39b0d29bc4SBrooks Davis 40b0d29bc4SBrooks Davisdo_apidocs() { 41b0d29bc4SBrooks Davis run_autoreconf || return 1 42b0d29bc4SBrooks Davis ./configure --with-doxygen || return 1 43b0d29bc4SBrooks Davis make check-api-docs 44b0d29bc4SBrooks Davis} 45b0d29bc4SBrooks Davis 46b0d29bc4SBrooks Davisdo_distcheck() { 47b0d29bc4SBrooks Davis run_autoreconf || return 1 48b0d29bc4SBrooks Davis ./configure || return 1 49b0d29bc4SBrooks Davis 50b0d29bc4SBrooks Davis sudo sysctl -w "kernel.core_pattern=core.%p" 51b0d29bc4SBrooks Davis 52b0d29bc4SBrooks Davis local archflags= 53b0d29bc4SBrooks Davis [ "${ARCH?}" != i386 ] || archflags=-m32 54b0d29bc4SBrooks Davis 55b0d29bc4SBrooks Davis cat >kyua.conf <<EOF 56b0d29bc4SBrooks Davissyntax(2) 57b0d29bc4SBrooks Davis 58b0d29bc4SBrooks Davis-- We do not know how many CPUs the test machine has. However, parallelizing 59b0d29bc4SBrooks Davis-- the execution of our tests to _any_ degree speeds up the time it takes to 60b0d29bc4SBrooks Davis-- complete a test run because many of our tests are blocking. 61b0d29bc4SBrooks Davisparallelism = 4 62b0d29bc4SBrooks DavisEOF 63b0d29bc4SBrooks Davis [ "${UNPRIVILEGED_USER:-no}" = no ] || \ 64*6b13d60bSMuhammad Moinur Rahman echo "unprivileged_user = 'nobody'" >>kyua.conf 65b0d29bc4SBrooks Davis 66b0d29bc4SBrooks Davis local f= 67b0d29bc4SBrooks Davis f="${f} CFLAGS='${archflags}'" 68b0d29bc4SBrooks Davis f="${f} CPPFLAGS='-I/usr/local/include'" 69b0d29bc4SBrooks Davis f="${f} CXXFLAGS='${archflags}'" 70b0d29bc4SBrooks Davis f="${f} LDFLAGS='-L/usr/local/lib -Wl,-R/usr/local/lib'" 71b0d29bc4SBrooks Davis f="${f} PKG_CONFIG_PATH='/usr/local/lib/pkgconfig'" 72b0d29bc4SBrooks Davis f="${f} KYUA_CONFIG_FILE_FOR_CHECK=$(pwd)/kyua.conf" 73b0d29bc4SBrooks Davis if [ "${AS_ROOT:-no}" = yes ]; then 74b0d29bc4SBrooks Davis sudo -H PATH="${PATH}" make distcheck DISTCHECK_CONFIGURE_FLAGS="${f}" 75b0d29bc4SBrooks Davis else 76b0d29bc4SBrooks Davis make distcheck DISTCHECK_CONFIGURE_FLAGS="${f}" 77b0d29bc4SBrooks Davis fi 78b0d29bc4SBrooks Davis} 79b0d29bc4SBrooks Davis 80b0d29bc4SBrooks Davisdo_style() { 81b0d29bc4SBrooks Davis run_autoreconf || return 1 82b0d29bc4SBrooks Davis mkdir build 83b0d29bc4SBrooks Davis cd build 84b0d29bc4SBrooks Davis ../configure || return 1 85b0d29bc4SBrooks Davis make check-style 86b0d29bc4SBrooks Davis} 87b0d29bc4SBrooks Davis 88b0d29bc4SBrooks Davismain() { 89b0d29bc4SBrooks Davis if [ -z "${DO}" ]; then 90b0d29bc4SBrooks Davis echo "DO must be defined" 1>&2 91b0d29bc4SBrooks Davis exit 1 92b0d29bc4SBrooks Davis fi 93b0d29bc4SBrooks Davis for step in ${DO}; do 94b0d29bc4SBrooks Davis "do_${DO}" || exit 1 95b0d29bc4SBrooks Davis done 96b0d29bc4SBrooks Davis} 97b0d29bc4SBrooks Davis 98b0d29bc4SBrooks Davismain "${@}" 99