blob: 865c44aef02d5a8b23a8397e8d3cc5eda331a017 [file] [log] [blame]
#!/usr/bin/env bash
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
# http://www.apache.org/licenses/LICENSE-2.0
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
set -e
set -o pipefail
SRCDIR=/tmp/SRC
# Prepare sources
git clone --depth 1 file:///SRC "${SRCDIR}"
cd "${SRCDIR}"
# NOTE: We have googletest write test reports into container fs and manually
# copy out to host fs because we have seen some strange behavior in CI where
# gooletest writing directly into mounted host directory sometimes fails (with
# no proper error message).
function copy_out_test_reports {
find ${SRCDIR} -name \*-tests.xml -exec cp {} /SRC \;
}
trap copy_out_test_reports EXIT
export GTEST_OUTPUT=xml:${SRCDIR}/
export DISTCHECK_CONFIGURE_FLAGS=${CONFIGURATION}
export ${ENVIRONMENT}
case ${COMPILER} in
gcc)
export CC=gcc
export CXX=g++
;;
clang)
export CC=clang
export CXX=clang++
;;
*)
echo "Unknown compiler ${COMPILER}"
exit 1
;;
esac
case ${BUILDTOOL} in
autotools)
./bootstrap
mkdir build && cd build
../configure ${CONFIGURATION}
make -j "${JOBS}" distcheck 2>&1
;;
cmake)
# Transform autotools-like parameters to cmake-like.
# Remove "'".
CONFIGURATION=${CONFIGURATION//\'/""}
# Replace "-" with "_".
CONFIGURATION=${CONFIGURATION//-/"_"}
# Replace "__" with "-D".
CONFIGURATION=${CONFIGURATION//__/"-D"}
# To Upper Case.
CONFIGURATION=${CONFIGURATION^^}
# Add "=1" suffix to each variable.
IFS=' ' read -r -a array <<< "${CONFIGURATION}"
CONFIGURATION=""
for element in "${array[@]}"
do
CONFIGURATION="${CONFIGURATION} $element=1"
done
mkdir build && cd build
cmake ${CONFIGURATION} ..
make -j "${JOBS}" check 2>&1
;;
*)
echo "Unknown build tool ${BUILDTOOL}"
exit 1
;;
esac