2b89215eec
Allow reusing it between GitHub and Travis CI. Also show httpbin log in Travis CI logs too, not just on GitHub.
183 lines
5.8 KiB
Bash
Executable File
183 lines
5.8 KiB
Bash
Executable File
#!/bin/bash
|
|
#
|
|
# This script is used by Travis CI to configure, build and test wxWidgets
|
|
|
|
set -e
|
|
|
|
. ./build/tools/httpbin.sh
|
|
|
|
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
|
|
|
|
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
|
|
echo 'travis_fold:start:httpbin'
|
|
httpbin_launch
|
|
echo 'travis_fold:end:httpbin'
|
|
|
|
echo 'travis_fold:start:testing'
|
|
echo 'Testing...'
|
|
ctest -V -C Debug -E "test_drawing" --output-on-failure --interactive-debug-mode 0 . || rc=$?
|
|
echo 'travis_fold:end:testing'
|
|
if [ -n "$rc" ]; then
|
|
httpbin_show_log
|
|
exit $rc
|
|
fi
|
|
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
|
|
|
|
echo 'travis_fold:start:httpbin'
|
|
httpbin_launch
|
|
echo 'travis_fold:end:httpbin'
|
|
|
|
echo 'travis_fold:start:testing'
|
|
echo 'Testing...'
|
|
pushd tests
|
|
./test || rc=$?
|
|
popd
|
|
echo 'travis_fold:end:testing'
|
|
if [ -n "$rc" ]; then
|
|
httpbin_show_log
|
|
exit $rc
|
|
fi
|
|
|
|
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
|