forked from wesnoth/wesnoth
-
Notifications
You must be signed in to change notification settings - Fork 0
/
docker_run.sh
executable file
·108 lines (94 loc) · 3.03 KB
/
docker_run.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
#!/bin/bash
# set the fake display for unit tests
export DISPLAY=:99.0
/sbin/start-stop-daemon --start --quiet --pidfile /tmp/custom_xvfb_99.pid --make-pidfile --background --exec /usr/bin/Xvfb -- :99 -ac -screen 0 1024x768x24
# name the parameters
NLS="$1"
TOOL="$2"
CC="$3"
CXX="$4"
CXXSTD="$5"
EXTRA_FLAGS_RELEASE="$6"
WML_TESTS="$7"
WML_TEST_TIME="$8"
PLAY_TEST="$9"
MP_TEST="${10}"
BOOST_TEST="${11}"
# only enable strict builds when no optimizations are done
if [ "$EXTRA_FLAGS_RELEASE" == "-O0" ]; then
STRICT="true"
else
STRICT="false"
fi
echo "Using configuration:"
echo "NLS: $NLS"
echo "TOOL: $TOOL"
echo "CC: $CC"
echo "CXX: $CXX"
echo "CXXSTD: $CXXSTD"
echo "EXTRA_FLAGS_RELEASE: $EXTRA_FLAGS_RELEASE"
echo "WML_TESTS: $WML_TESTS"
echo "WML_TEST_TIME: $WML_TEST_TIME"
echo "PLAY_TEST: $PLAY_TEST"
echo "MP_TEST: $MP_TEST"
echo "BOOST_TEST: $BOOST_TEST"
$CXX --version
# if doing the translations, don't build anything else
if [ "$NLS" == "true" ]; then
if [ "$TOOL" == "cmake" ]; then
cmake -DENABLE_NLS=true -DENABLE_GAME=false -DENABLE_SERVER=false -DENABLE_CAMPAIGN_SERVER=false -DENABLE_TESTS=false && make VERBOSE=1 -j2
else
scons translations build=release --debug=time nls=true jobs=2
fi
else
# if not doing the translations, build wesnoth, wesnothd, campaignd, boost_unit_tests
if [ "$TOOL" == "cmake" ]; then
cmake -DCMAKE_BUILD_TYPE=Release -DENABLE_GAME=true -DENABLE_SERVER=true -DENABLE_CAMPAIGN_SERVER=true -DENABLE_TESTS=true -DENABLE_NLS=false -DEXTRA_FLAGS_CONFIG="-pipe" -DEXTRA_FLAGS_RELEASE="$EXTRA_FLAGS_RELEASE" -DENABLE_STRICT_COMPILATION="$STRICT" -DENABLE_LTO=false && make VERBOSE=1 -j2
else
scons wesnoth wesnothd campaignd boost_unit_tests build=release ctool=$CC cxxtool=$CXX --debug=time extra_flags_config="-pipe" extra_flags_release="$EXTRA_FLAGS_RELEASE" strict="$STRICT" cxx_std=$CXXSTD nls=false jobs=2 enable_lto=false
fi
# check if the build was successful
BUILD_RET=$?
if [ $BUILD_RET != 0 ]; then
exit $BUILD_RET
fi
# needed since docker returns the exit code of the final comman executed, so a failure needs to be returned if any unit tests fail
EXIT_VAL=0
if [ "$WML_TESTS" == "true" ]; then
echo "Executing run_wml_tests"
./run_wml_tests -g -v -c -t "$WML_TEST_TIME"
RET=$?
if [ $RET != 0 ]; then
EXIT_VAL=$RET
fi
fi
if [ "$PLAY_TEST" == "true" ]; then
echo "Executing play_test_executor.sh"
./utils/travis/play_test_executor.sh
RET=$?
if [ $RET != 0 ]; then
EXIT_VAL=$RET
fi
fi
if [ "$MP_TEST" == "true" ]; then
echo "Executing mp_test_executor.sh"
./utils/travis/mp_test_executor.sh
RET=$?
if [ $RET != 0 ]; then
EXIT_VAL=$RET
fi
fi
if [ "$BOOST_TEST" == "true" ]; then
echo "Executing boost unit tests"
./utils/travis/test_executor.sh
RET=$?
if [ $RET != 0 ]; then
EXIT_VAL=$RET
fi
fi
if [ -f "errors.log" ]; then
echo -e "\n*** \n*\n* Errors reported in wml unit tests, here is errors.log...\n*\n*** \n"
cat errors.log
fi
exit $EXIT_VAL
fi