blob: 0da000ab7dfdda991551f17a7e77ad2a94a21b0e (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
|
#!/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}
}
# Allow to load /home/travis/build/apache/httpd/.gdbinit
echo "add-auto-load-safe-path /home/travis/build/apache/httpd/.gdbinit" >> /home/travis/.gdbinit
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 TEST_OPENSSL3; then
# Build the requested version of OpenSSL if it's not already
# installed in the cached ~/root
if ! test -f $HOME/root/openssl-is-${TEST_OPENSSL3}; then
# Remove any previous install.
rm -rf $HOME/root/openssl3
mkdir -p build/openssl
pushd build/openssl
curl "https://www.openssl.org/source/openssl-${TEST_OPENSSL3}.tar.gz" |
tar -xzf -
cd openssl-${TEST_OPENSSL3}
./Configure --prefix=$HOME/root/openssl3 shared no-tests
make $MFLAGS
make install_sw
touch $HOME/root/openssl-is-${TEST_OPENSSL3}
popd
fi
# Point APR/APR-util at the installed version of OpenSSL.
if test -v APU_VERSION; then
APU_CONFIG="${APU_CONFIG} --with-openssl=$HOME/root/openssl3"
elif test -v APR_VERSION; then
APR_CONFIG="${APR_CONFIG} --with-openssl=$HOME/root/openssl3"
else
: Non-system APR/APR-util must be used to build with OpenSSL 3 to avoid mismatch with system libraries
exit 1
fi
fi
if test -v APR_VERSION; then
install_apx apr ${APR_VERSION} "${APR_CONFIG}"
ldd $HOME/root/apr-${APR_VERSION}/lib/libapr-?.so || true
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}
ldd $HOME/root/apr-util-${APU_VERSION}/lib/libaprutil-?.so || true
fi
|