You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
157 lines
3.6 KiB
157 lines
3.6 KiB
#!/bin/bash
|
|
|
|
set -e
|
|
|
|
# Helper for travis folding
|
|
travis_fold() {
|
|
local action=$1
|
|
local name=$2
|
|
echo -en "travis_fold:${action}:${name}\r"
|
|
}
|
|
|
|
# Helper to write output every minute
|
|
function bell() {
|
|
while true; do
|
|
echo "travis_wait for it..."
|
|
sleep 60
|
|
done
|
|
}
|
|
|
|
# Helper for distinguishing between different runs
|
|
run() {
|
|
case "$1" in
|
|
Build*)
|
|
if [[ "$1" == "Build1" ]]
|
|
then
|
|
# CMake
|
|
travis_fold start cmake
|
|
mkdir build
|
|
cd build
|
|
cmake .. "${CMAKE_ARGS[@]}"
|
|
echo
|
|
if [ -f "CMakeFiles/CMakeError.log" ]
|
|
then
|
|
echo "Content of CMakeFiles/CMakeError.log:"
|
|
cat CMakeFiles/CMakeError.log
|
|
fi
|
|
echo
|
|
cd ..
|
|
travis_fold end cmake
|
|
fi
|
|
|
|
# Make
|
|
travis_fold start make
|
|
cd build
|
|
make -j$N_JOBS
|
|
travis_fold end make
|
|
# Set skip-file
|
|
if [[ "$1" != "BuildLast" ]]
|
|
then
|
|
touch skip.txt
|
|
else
|
|
rm -rf skip.txt
|
|
fi
|
|
;;
|
|
|
|
TestAll)
|
|
# Test all
|
|
travis_fold start test_all
|
|
cd build
|
|
ctest test --output-on-failure
|
|
travis_fold end test_all
|
|
|
|
# Check correctness of build types
|
|
echo "Checking correctness of build types"
|
|
case "$CONFIG" in
|
|
DefaultDebug*)
|
|
./bin/storm --version | grep "with flags .* -g" || (echo "Error: Missing flag '-g' for debug build." && return 1)
|
|
;;
|
|
DefaultRelease*)
|
|
./bin/storm --version | grep "with flags .* -O3" || (echo "Error: Missing flag '-O3' for release build." && return 1)
|
|
./bin/storm --version | grep "with flags .* -DNDEBUG" || (echo "Error: Missing flag '-DNDEBUG' for release build." && return 1)
|
|
;;
|
|
*)
|
|
echo "Unrecognized value of CONFIG: $CONFIG"; exit 1
|
|
;;
|
|
esac
|
|
;;
|
|
|
|
*)
|
|
echo "Unrecognized value of run: $1"
|
|
exit 1
|
|
esac
|
|
}
|
|
|
|
|
|
# This only exists in OS X, but it doesn't cause issues in Linux (the dir doesn't exist, so it's
|
|
# ignored).
|
|
export PATH="/usr/local/opt/coreutils/libexec/gnubin:$PATH"
|
|
|
|
case $COMPILER in
|
|
gcc-6)
|
|
export CC=gcc-6
|
|
export CXX=g++-6
|
|
;;
|
|
|
|
gcc)
|
|
export CC=gcc
|
|
export CXX=g++
|
|
;;
|
|
|
|
clang-4)
|
|
case "$OS" in
|
|
linux)
|
|
export CC=clang-4.0
|
|
export CXX=clang++-4.0
|
|
;;
|
|
osx)
|
|
export CC=/usr/local/opt/llvm/bin/clang-4.0
|
|
export CXX=/usr/local/opt/llvm/bin/clang++
|
|
;;
|
|
*) echo "Error: unexpected OS: $OS"; exit 1 ;;
|
|
esac
|
|
;;
|
|
|
|
clang)
|
|
export CC=clang
|
|
export CXX=clang++
|
|
;;
|
|
|
|
*)
|
|
echo "Unrecognized value of COMPILER: $COMPILER"
|
|
exit 1
|
|
esac
|
|
|
|
# Build
|
|
echo CXX version: $($CXX --version)
|
|
echo C++ Standard library location: $(echo '#include <vector>' | $CXX -x c++ -E - | grep 'vector\"' | awk '{print $3}' | sed 's@/vector@@;s@\"@@g' | head -n 1)
|
|
echo Normalized C++ Standard library location: $(readlink -f $(echo '#include <vector>' | $CXX -x c++ -E - | grep 'vector\"' | awk '{print $3}' | sed 's@/vector@@;s@\"@@g' | head -n 1))
|
|
|
|
case "$CONFIG" in
|
|
DefaultDebug*)
|
|
CMAKE_ARGS=(-DCMAKE_BUILD_TYPE=Debug -DSTORM_DEVELOPER=ON -DSTORM_PORTABLE=ON -DCMAKE_CXX_FLAGS="$STLARG")
|
|
;;
|
|
DefaultRelease*)
|
|
CMAKE_ARGS=(-DCMAKE_BUILD_TYPE=Release -DSTORM_DEVELOPER=OFF -DSTORM_PORTABLE=ON -DCMAKE_CXX_FLAGS="$STLARG")
|
|
;;
|
|
*)
|
|
echo "Unrecognized value of CONFIG: $CONFIG"; exit 1
|
|
;;
|
|
esac
|
|
|
|
# Restore timestamps of files
|
|
travis_fold start mtime
|
|
if [[ "$1" == "Build1" ]]
|
|
then
|
|
# Remove old mtime cache
|
|
rm -rf travis/mtime_cache/cache.json
|
|
fi
|
|
ruby travis/mtime_cache/mtime_cache.rb -g travis/mtime_cache/globs.txt -c travis/mtime_cache/cache.json
|
|
travis_fold end mtime
|
|
|
|
# Run and print output to avoid travis timeout
|
|
bell &
|
|
bellPID=$!
|
|
trap 'rc=$?; kill $bellPID; exit $rc' EXIT
|
|
run "$1"
|
|
|