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