#!/bin/sh # # Automated build and test of libarchive on CI systems # # Variables that can be passed via environment: # BUILD_SYSTEM= # BUILDDIR= # SRCDIR= # CONFIGURE_ARGS= # MAKE_ARGS= # ACTIONS= BUILD_SYSTEM="${BUILD_SYSTEM:-autotools}" MAKE="${MAKE:-make}" CMAKE="${CMAKE:-cmake}" CURDIR=`pwd` SRCDIR="${SRCDIR:-`pwd`}" RET=0 usage () { echo "Usage: $0 [-b autotools|cmake] [-a autogen|configure|build|test ] [ -a ... ] [ -d builddir ] [-s srcdir ]" } inputerror () { echo $1 usage exit 1 } while getopts a:b:d:s: opt; do case ${opt} in a) case "${OPTARG}" in autogen) ;; configure) ;; build) ;; test) ;; *) inputerror "Invalid action (-a)" ;; esac ACTIONS="${ACTIONS} ${OPTARG}" ;; b) BUILD_SYSTEM="${OPTARG}" case "${BUILD_SYSTEM}" in autotools) ;; cmake) ;; *) inputerror "Invalid build system (-b)" ;; esac ;; d) BUILDDIR="${OPTARG}" ;; s) SRCDIR="${OPTARG}" if [ ! -f "${SRCDIR}/build/version" ]; then inputerror "Missing file: ${SRCDIR}/build/version" fi ;; esac done if [ -z "${ACTIONS}" ]; then ACTIONS="autogen configure build test" fi if [ -z "${BUILD_SYSTEM}" ]; then inputerror "Missing type (-t) parameter" fi if [ -z "${BUILDDIR}" ]; then BUILDDIR="${CURDIR}/build_ci/${BUILD_SYSTEM}" fi mkdir -p "${BUILDDIR}" for action in ${ACTIONS}; do cd "${BUILDDIR}" case "${action}" in autogen) case "${BUILD_SYSTEM}" in autotools) cd "${SRCDIR}" sh build/autogen.sh RET="$?" ;; esac ;; configure) case "${BUILD_SYSTEM}" in autotools) "${SRCDIR}/configure" ${CONFIGURE_ARGS} ;; cmake) ${CMAKE} ${CONFIGURE_ARGS} "${SRCDIR}" ;; esac RET="$?" ;; build) ${MAKE} ${MAKE_ARGS} RET="$?" ;; test) case "${BUILD_SYSTEM}" in autotools) ${MAKE} ${MAKE_ARGS} check LOG_DRIVER="${SRCDIR}/build/ci_test_driver" ;; cmake) ${MAKE} ${MAKE_ARGS} test ;; esac RET="$?" ;; esac if [ "${RET}" != "0" ]; then exit "${RET}" fi cd "${CURDIR}" done exit "${RET}"