Docker isn't available under Mac, unfortunately. Notice that it's still better to use Docker if it is available, rather than using pip everywhere, as pip has trouble installing httpbin in the Ubuntu 14.04 build, for example.
190 lines
6.0 KiB
Bash
Executable File
190 lines
6.0 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...'
|
|
|
|
# Prefer to use docker if it's available as it's more robust than dealing
|
|
# with pip -- but we need to have a fallback as at least Mac builds don't
|
|
# have docker.
|
|
if command -v docker; then
|
|
docker pull kennethreitz/httpbin
|
|
docker run -d -p 80:80 kennethreitz/httpbin
|
|
WX_TEST_WEBREQUEST_URL="http://localhost"
|
|
else
|
|
pip install httpbin
|
|
python -m httpbin.core &
|
|
WX_TEST_WEBREQUEST_URL="http://localhost:5000"
|
|
fi
|
|
|
|
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
|