a5afa85c0a
Using Docker just doesn't work: simply running "docker pull" fails due to the pull rate limits all the time, see e.g. https://travis-ci.org/github/wxWidgets/wxWidgets/jobs/759810039#L2628 while following Travis own instructions for dealing with this problem at https://blog.travis-ci.com/docker-rate-limits results in the build failure due to secret environment variables not being accessible from the PRs for security reasons, see https://travis-ci.org/github/wxWidgets/wxWidgets/jobs/759820694 So use pip everywhere, even under Ubuntu 14.04, where it doesn't work out of the box as it tries to install globally when it doesn't have the permissions to do it.
181 lines
5.7 KiB
Bash
Executable File
181 lines
5.7 KiB
Bash
Executable File
#!/bin/bash
|
|
#
|
|
# This script is used by Travis CI to configure, build and test wxWidgets
|
|
|
|
set -e
|
|
|
|
wxPROC_COUNT=`getconf _NPROCESSORS_ONLN`
|
|
((wxPROC_COUNT++))
|
|
wxBUILD_ARGS="-j$wxPROC_COUNT"
|
|
|
|
# Setting this variable suppresses "Error retrieving accessibility bus address"
|
|
# messages from WebKit tests that we're not interested in.
|
|
export NO_AT_BRIDGE=1
|
|
|
|
launch_httpbin() {
|
|
echo 'travis_fold:start:httpbin'
|
|
echo 'Running httpbin...'
|
|
|
|
pip install httpbin --user
|
|
python -m httpbin.core &
|
|
WX_TEST_WEBREQUEST_URL="http://localhost:5000"
|
|
|
|
export WX_TEST_WEBREQUEST_URL
|
|
echo 'travis_fold:end:httpbin'
|
|
}
|
|
|
|
case $wxTOOLSET in
|
|
cmake)
|
|
if [ -z $wxCMAKE_TESTS ]; then wxCMAKE_TESTS=CONSOLE_ONLY; fi
|
|
if [ -z $wxCMAKE_SAMPLES ]; then wxCMAKE_SAMPLES=SOME; fi
|
|
if [ "$wxCMAKE_GENERATOR" == "Xcode" ]; then
|
|
wxBUILD_ARGS="-jobs $wxPROC_COUNT -quiet"
|
|
fi
|
|
cmake --version
|
|
|
|
echo 'travis_fold:start:configure'
|
|
echo 'Configuring...'
|
|
mkdir build_cmake
|
|
pushd build_cmake
|
|
cmake -G "$wxCMAKE_GENERATOR" $wxCMAKE_DEFINES -D wxBUILD_SAMPLES=$wxCMAKE_SAMPLES -D wxBUILD_TESTS=$wxCMAKE_TESTS ..
|
|
echo 'travis_fold:end:configure'
|
|
|
|
if [ "$wxCMAKE_GENERATOR" != "Xcode" ]; then
|
|
echo 'travis_fold:start:building'
|
|
echo 'Building...'
|
|
cmake --build . -- $wxBUILD_ARGS
|
|
echo 'travis_fold:end:building'
|
|
fi
|
|
|
|
echo 'travis_fold:start:install'
|
|
if [ "$wxCMAKE_GENERATOR" == "Xcode" ]; then echo -n 'Building and '; fi
|
|
echo 'Installing...'
|
|
sudo env "PATH=$PATH" cmake --build . --target install -- $wxBUILD_ARGS
|
|
echo 'travis_fold:end:install'
|
|
|
|
if [ "$wxCMAKE_TESTS" != "OFF" ]; then
|
|
launch_httpbin
|
|
|
|
echo 'travis_fold:start:testing'
|
|
echo 'Testing...'
|
|
ctest -V -C Debug -E "test_drawing" --output-on-failure --interactive-debug-mode 0 .
|
|
echo 'travis_fold:end:testing'
|
|
fi
|
|
|
|
echo 'travis_fold:start:testinstall'
|
|
echo 'Testing installation...'
|
|
popd
|
|
mkdir build_cmake_install_test
|
|
pushd build_cmake_install_test
|
|
cmake -G "$wxCMAKE_GENERATOR" $wxCMAKE_DEFINES ../samples/minimal
|
|
cmake --build . -- $wxBUILD_ARGS
|
|
popd
|
|
echo 'travis_fold:end:testinstall'
|
|
;;
|
|
*)
|
|
echo 'travis_fold:start:configure'
|
|
echo 'Configuring...'
|
|
|
|
wxCONFIGURE_OPTIONS="--disable-optimise $wxCONFIGURE_FLAGS"
|
|
if [ -n "$wxGTK_VERSION" ]; then
|
|
wxCONFIGURE_OPTIONS="--with-gtk=$wxGTK_VERSION $wxCONFIGURE_OPTIONS"
|
|
fi
|
|
|
|
./configure $wxCONFIGURE_OPTIONS --disable-debug_info || rc=$?
|
|
|
|
if [ -n "$rc" ]; then
|
|
echo '*** Configuring failed, contents of config.log follows: ***'
|
|
echo '-----------------------------------------------------------'
|
|
cat config.log
|
|
echo '-----------------------------------------------------------'
|
|
exit $rc
|
|
fi
|
|
echo 'travis_fold:end:configure'
|
|
|
|
if [ "$wxALLOW_WARNINGS" != 1 ]; then
|
|
case "$TRAVIS_COMPILER" in
|
|
clang)
|
|
allow_warn_opt="-Wno-error=#warnings"
|
|
;;
|
|
|
|
gcc)
|
|
allow_warn_opt="-Wno-error=cpp"
|
|
;;
|
|
|
|
*)
|
|
echo "*** Unknown compiler: $TRAVIS_COMPILER ***"
|
|
;;
|
|
esac
|
|
|
|
error_opts="-Werror $allow_warn_opt"
|
|
wxMAKEFILE_CXXFLAGS="$wxMAKEFILE_CXXFLAGS $error_opts"
|
|
wxMAKEFILE_ERROR_CXXFLAGS=("CXXFLAGS=$error_opts")
|
|
else
|
|
wxMAKEFILE_ERROR_CXXFLAGS=()
|
|
fi
|
|
|
|
wxMAKEFILE_FLAGS=()
|
|
if [ -n "$wxMAKEFILE_CXXFLAGS" ]; then
|
|
wxMAKEFILE_FLAGS+=("CXXFLAGS=$wxMAKEFILE_CXXFLAGS")
|
|
fi
|
|
if [ -n "$wxMAKEFILE_LDFLAGS" ]; then
|
|
wxMAKEFILE_FLAGS+=("LDFLAGS=$wxMAKEFILE_LDFLAGS")
|
|
fi
|
|
|
|
echo 'travis_fold:start:building'
|
|
echo 'Building...'
|
|
make -k $wxBUILD_ARGS "${wxMAKEFILE_ERROR_CXXFLAGS[@]}"
|
|
echo 'travis_fold:end:building'
|
|
|
|
echo 'travis_fold:start:tests'
|
|
echo 'Building tests...'
|
|
[ "$wxSKIP_GUI" = 1 ] || make -C tests $wxBUILD_ARGS failtest
|
|
make -k -C tests $wxBUILD_ARGS "${wxMAKEFILE_FLAGS[@]}"
|
|
echo 'travis_fold:end:tests'
|
|
|
|
if [ "$wxSKIP_TESTING" = 1 ]; then
|
|
echo 'Skipping running tests'
|
|
exit 0
|
|
fi
|
|
|
|
launch_httpbin
|
|
|
|
echo 'travis_fold:start:testing'
|
|
echo 'Testing...'
|
|
pushd tests
|
|
./test
|
|
popd
|
|
echo 'travis_fold:end:testing'
|
|
|
|
if [ "$wxSKIP_GUI" = 1 ]; then
|
|
echo 'Skipping the rest of tests for non-GUI build.'
|
|
exit 0
|
|
fi
|
|
|
|
if [ "$wxUSE_XVFB" = 1 ]; then
|
|
echo 'travis_fold:start:testing_gui'
|
|
echo 'Testing GUI using Xvfb...'
|
|
pushd tests
|
|
xvfb-run -a -s '-screen 0 1600x1200x24' ./test_gui
|
|
popd
|
|
echo 'travis_fold:end:testing_gui'
|
|
fi
|
|
|
|
echo 'travis_fold:start:samples'
|
|
echo 'Building samples...'
|
|
(test "$wxSKIP_SAMPLES" && echo 'SKIPPED') || make -k "${wxMAKEFILE_FLAGS[@]}" samples
|
|
echo 'travis_fold:end:samples'
|
|
|
|
echo 'travis_fold:start:install'
|
|
echo 'Installing...'
|
|
sudo make install
|
|
echo 'travis_fold:end:install'
|
|
|
|
echo 'travis_fold:start:testinstall'
|
|
echo 'Testing installation...'
|
|
make -C samples/minimal -f makefile.unx clean
|
|
make -C samples/minimal -f makefile.unx "${wxMAKEFILE_FLAGS[@]}"
|
|
echo 'travis_fold:end:testinstall'
|
|
;;
|
|
esac
|