blob: 61e844f6b76b4124d473c8d052ab0ac8c6ca016f [file] [log] [blame]
#!/bin/bash -xe
if test -v CLEAR_CACHE; then
rm -rf $HOME/root
fi
: Travis tag = ${TRAVIS_TAG}
: Travis branch = ${TRAVIS_BRANCH}
: /etc/hosts --
cat /etc/hosts
: -- ends
# ### FIXME: This is a workaround, non-x86 builds have an IPv6
# configuration which somehow breaks the test suite runs. Appears
# that Apache::Test only configures the server to Listen on 0.0.0.0
# (that is hard-coded), but then Apache::TestSerer::wait_till_is_up()
# tries to connect via ::1, which fails/times out.
if grep ip6-localhost /etc/hosts; then
sudo sed -i "/ip6-/d" /etc/hosts
cat /etc/hosts
fi
# Use a rudimental retry workflow as workaround to svn export hanging for minutes.
# Travis automatically kills a build if one step takes more than 10 minutes without
# reporting any progress.
function run_svn_export() {
local url=$1
local revision=$2
local dest_dir=$3
local max_tries=$4
# Disable -e to allow fail/retry
set +e
for i in $(seq 1 $max_tries)
do
timeout 60 svn export -r ${revision} --force -q $url $dest_dir
if [ $? -eq 0 ]; then
break
else
if [ $i -eq $max_tries ]; then
exit 1
else
sleep $((100 * i))
fi
fi
done
# Restore -e behavior after fail/retry
set -e
}
function install_apx() {
local name=$1
local version=$2
local root=https://svn.apache.org/repos/asf/apr/${name}
local prefix=${HOME}/root/${name}-${version}
local build=${HOME}/build/${name}-${version}
local config=$3
local buildconf=$4
case $version in
trunk) url=${root}/trunk ;;
*.x) url=${root}/branches/${version} ;;
*) url=${root}/tags/${version} ;;
esac
local revision=`svn info --show-item last-changed-revision ${url}`
# Blow away the cached install root if the revision does not
# match.
test -f ${prefix}/.revision-is-${revision} || rm -rf ${prefix}
if test -d ${prefix}; then
return 0
fi
svn export -q -r ${revision} ${url} ${build}
pushd $build
./buildconf ${buildconf}
./configure --prefix=${prefix} ${config}
make -j2
make install
popd
touch ${prefix}/.revision-is-${revision}
}
if ! test -v SKIP_TESTING; then
### Temporary: purge old svn checkout from the cache
rm -rf $HOME/root/framework
# Make a shallow clone of httpd-tests git repo.
git clone --depth=1 https://github.com/apache/httpd-tests.git test/perl-framework
fi
# For LDAP testing, run slapd listening on port 8389 and populate the
# directory as described in t/modules/ldap.t in the test framework:
if test -v TEST_LDAP -a -x test/perl-framework/scripts/ldap-init.sh; then
docker build -t httpd_ldap -f test/travis_Dockerfile_slapd.centos7 test/
pushd test/perl-framework
./scripts/ldap-init.sh
popd
fi
if test -v TEST_SSL; then
pushd test/perl-framework
./scripts/memcached-init.sh
./scripts/redis-init.sh
popd
fi
if test -v APR_VERSION; then
install_apx apr ${APR_VERSION} "${APR_CONFIG}"
APU_CONFIG="$APU_CONFIG --with-apr=$HOME/root/apr-${APR_VERSION}"
fi
if test -v APU_VERSION; then
install_apx apr-util ${APU_VERSION} "${APU_CONFIG}" --with-apr=$HOME/build/apr-${APR_VERSION}
fi