diff options
Diffstat (limited to 'cibuild.sh')
-rwxr-xr-x | cibuild.sh | 71 |
1 files changed, 71 insertions, 0 deletions
diff --git a/cibuild.sh b/cibuild.sh new file mode 100755 index 000000000..cd30cda0a --- /dev/null +++ b/cibuild.sh @@ -0,0 +1,71 @@ +#!/usr/bin/env bash + +set -e + +export CUBERITE_BUILD_SERIES_NAME="CI $CC $CI_CUBERITE_BUILD_TYPE" +export CUBERITE_BUILD_ID=$CI_JOB_NUMBER +export CUBERITE_BUILD_DATETIME=`date` + +# Use ccache if available +if [ `which ccache` ]; then + # Re-run compile on pre-processed sources on cache miss + # "It's slower actually, but clang builds fail without it." + export CCACHE_CPP2=true + + # Tell CMake of ccache's existence + CACHE_ARGS="-DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_CXX_COMPILER_LAUNCHER=ccache" + + echo "Using ccache installed at $(which ccache)" + ccache --max-size=1G + ccache --zero-stats +fi + +workdir="$CC"_"$CI_CUBERITE_BUILD_TYPE" +mkdir "$workdir" +cd "$workdir" + +# Work around a Clang + ccache issue with failing builds by disabling +# precompiled headers. Turn off LTO for faster build speeds +cmake .. -DCMAKE_BUILD_TYPE=${CI_CUBERITE_BUILD_TYPE} \ + -DBUILD_TOOLS=Yes \ + -DPRECOMPILE_HEADERS=No \ + -DSELF_TEST=Yes \ + -DUNITY_BUILDS=${CI_CUBERITE_UNITY_BUILDS-Yes} \ + -DWHOLE_PROGRAM_OPTIMISATION=No \ + ${CACHE_ARGS}; + +echo "Building..." +cmake --build . --parallel 3; + +if [ `which ccache` ]; then + echo "Built with ccache, outputting cache stats..." + ccache --show-stats +fi + +echo "Testing..." +ctest --output-on-failure --parallel 2; + +cd Server/; +touch apiCheckFailed.flag +if [ "$CI_CUBERITE_BUILD_TYPE" != "COVERAGE" ]; then + ./Cuberite <<- EOF + load APIDump + apicheck + restart + stop + EOF + if [ -f ./NewlyUndocumented.lua ]; then + echo "ERROR: Newly undocumented API symbols found:" + cat ./NewlyUndocumented.lua + exit 1 + fi + if [ -f ./DuplicateDocs.txt ]; then + echo "ERROR: API documentation has duplicate symbol warnings:" + cat ./DuplicateDocs.txt + exit 1 + fi + if [ -f ./apiCheckFailed.flag ]; then + echo "ERROR: API check has failed with an unknown error" + exit 1 + fi +fi |