eee962e6 |
1 | #****Macros**** |
2 | find_program(UNAME NAMES uname) |
3 | macro(getuname name flag) |
4 | exec_program("${UNAME}" ARGS "${flag}" OUTPUT_VARIABLE "${name}") |
5 | endmacro(getuname) |
6 | |
7 | #****Configuration Variables**** |
8 | #Set Project Name |
9 | set(CTEST_PROJECT_NAME "AliRoot") |
10 | set(ALICE_ROOT $ENV{ALICE_ROOT}) |
11 | set(ALICE_INSTALL $ENV{ALICE_INSTALL}) |
12 | |
13 | if(NOT ALICE_INSTALL) |
14 | message(FATAL_ERROR "Please set environment variable ALICE_INSTALL to the AliRoot installation directory") |
15 | endif(NOT ALICE_INSTALL) |
16 | if(NOT ALICE_ROOT) |
17 | message(FATAL_ERROR "Please set environment variable ALICE_ROOT to the AliRoot source directory") |
18 | endif(NOT ALICE_ROOT) |
19 | |
20 | #Set hostname of current machine |
21 | find_program(HOSTNAME_CMD NAMES hostname) |
22 | exec_program(${HOSTNAME_CMD} ARGS OUTPUT_VARIABLE HOSTNAME) |
23 | set(CTEST_SITE "${HOSTNAME}") |
24 | |
25 | #Set build name |
26 | getuname(osname -s) |
27 | getuname(osrel -r) |
28 | getuname(cpu -m) |
29 | set(CTEST_BUILD_NAME "${osname}-${cpu}-prod") |
30 | |
31 | #Detect SVN and Make |
32 | find_program(CTEST_SVN_COMMAND NAMES svn) |
33 | find_program(MAKE NAMES make) |
34 | find_program(CTEST_MEMORYCHECK_COMMAND NAMES valgrind) |
35 | set(CTEST_MEMORYCHECK_COMMAND_OPTIONS "--leak-check=full --error-limit=yes --leak-resolution=low") |
36 | |
37 | #AliRoot Repository and build settings |
38 | set(ALICE_REPO "https://alisoft.cern.ch/AliRoot/trunk") |
39 | set(MODEL "Continuous") |
40 | |
41 | |
42 | #Set Nightly build start time |
43 | set(CTEST_NIGHTLY_START_TIME "00:00:00 EST") |
44 | set(CTEST_TEST_TIMEOUT 0) |
45 | #Default drop site |
46 | set(CTEST_DROP_METHOD "http") |
47 | set(CTEST_DROP_SITE "alirootbuildcmake.cern.ch") |
61aa89dd |
48 | set(CTEST_DROP_LOCATION "/submit.php?project=AliRoot") |
eee962e6 |
49 | set(CTEST_DROP_SITE_CDASH TRUE) |
50 | |
61aa89dd |
51 | #Ctest custom settings |
52 | set(CTEST_CUSTOM_MAXIMUM_NUMBER_OF_ERRORS "1000") |
53 | set(CTEST_CUSTOM_MAXIMUM_NUMBER_OF_WARNINGS "1000") |
54 | set(CTEST_CUSTOM_MAXIMUM_PASSED_TEST_OUTPUT_SIZE "5000") |
55 | set(CTEST_USE_LAUNCHERS ON) |
56 | set(BUILD_JOBS 1) |
57 | |
eee962e6 |
58 | set(OLDREV 0) |
59 | set(NEWREV 0) |
60 | set(CYCLE 0) |
61 | set(CLEARCYCLE 5) |
62 | set(TESTCYCLE 2) |
63 | #Get Revision |
64 | execute_process(COMMAND svn info ${ALICE_ROOT} OUTPUT_VARIABLE _svn_out ) |
65 | string(REGEX REPLACE "^.*Revision: ([^\n]*).*$" "\\1" ALIROOT_SVN_REVISION ${_svn_out}) |
66 | set(OLDREV ${ALIROOT_SVN_REVISION}) |
67 | set(NEWREV ${ALIROOT_SVN_REVISION}) |
68 | message("Starting build of revision ${OLDREV}") |
69 | #Setup Directories |
70 | set(CTEST_BINARY_DIRECTORY "${ALICE_INSTALL}") |
71 | set(CTEST_SOURCE_DIRECTORY "${ALICE_ROOT}") |
72 | set(CTEST_DASHBOARD_ROOT "$ENV{HOME}/Dashboards") |
73 | # set(CTEST_CHECKOUT_COMMAND "${CTEST_SVN_COMMAND} co ${ALICE_REPO} $ENV{ALICE_ROOT}") |
74 | set(CTEST_UPDATE_COMMAND "${CTEST_SVN_COMMAND}") |
75 | set(CTEST_CMAKE_COMMAND "\"${CMAKE_EXECUTABLE_NAME}\" -D Continuous") |
eee962e6 |
76 | #CMake Generator |
77 | set(CTEST_CMAKE_GENERATOR "Unix Makefiles") |
78 | |
79 | message("Continuous Build Starting") |
80 | |
81 | #****Testing Process**** |
82 | while (${CTEST_ELAPSED_TIME} LESS 36000) |
83 | |
84 | set (START_TIME ${CTEST_ELAPSED_TIME}) |
85 | ctest_start (Continuous) |
86 | |
87 | #Build only if new revision of source is available |
88 | while(${OLDREV} EQUAL ${NEWREV} AND ${CYCLE} GREATER 0) |
61aa89dd |
89 | message("Checking for updates...") |
eee962e6 |
90 | message("Current revision : ${OLDREV}") |
91 | ctest_update(BUILD "${CTEST_SOURCE_DIRECTORY}") |
92 | execute_process(COMMAND svn info ${ALICE_ROOT} OUTPUT_VARIABLE _svn_out) |
93 | string(REGEX REPLACE "^.*Revision: ([^\n]*).*$" "\\1" ALIROOT_SVN_REVISION ${_svn_out}) |
94 | set(NEWREV ${ALIROOT_SVN_REVISION}) |
95 | message("New revision : ${NEWREV}") |
96 | if(${OLDREV} EQUAL ${NEWREV}) |
97 | message("Source not updated, no need to build source") |
98 | ctest_sleep(300) |
99 | endif(${OLDREV} EQUAL ${NEWREV}) |
100 | endwhile() |
f04bc3d4 |
101 | ctest_submit (PARTS Update) |
61aa89dd |
102 | |
103 | #Keeping track of builds |
eee962e6 |
104 | set(OLDREV ${NEWREV}) |
105 | math(EXPR CYCLE "${CYCLE} + 1") |
106 | message("Build #${CYCLE} ") |
107 | message("Revision : ${OLDREV}") |
108 | set (START_TIME ${CTEST_ELAPSED_TIME}) |
109 | math(EXPR CLEAR "${CYCLE}%${CLEARCYCLE}") |
61aa89dd |
110 | |
111 | #Get CTest configuration |
112 | include("${CTEST_SOURCE_DIRECTORY}/CTestConfig.cmake") |
113 | |
114 | |
eee962e6 |
115 | #Clear build directory every CLEARCYCLE build |
116 | if(${CLEAR} EQUAL 0) |
117 | message("Clearing build directory") |
118 | ctest_empty_binary_directory(${CTEST_BINARY_DIRECTORY}) |
119 | endif(${CLEAR} EQUAL 0) |
61aa89dd |
120 | |
eee962e6 |
121 | message(STATUS "Building source") |
61aa89dd |
122 | foreach(subproject ${CTEST_PROJECT_SUBPROJECTS}) |
123 | set_property(GLOBAL PROPERTY SubProject ${subproject}) |
124 | set_property(GLOBAL PROPERTY Label ${subproject}) |
125 | #Configure |
126 | ctest_configure(BUILD "${CTEST_BINARY_DIRECTORY}") |
127 | ctest_submit(PARTS Configure) |
128 | set(CTEST_BUILD_TARGET "${subproject}-all") |
129 | set(CTEST_BUILD_COMMAND "${MAKE} -i -j${BUILD_JOBS} ${CTEST_BUILD_TARGET}") |
130 | ctest_build(BUILD "${CTEST_BINARY_DIRECTORY}" APPEND) |
131 | ctest_submit(PARTS Build) |
132 | endforeach(subproject) |
133 | |
134 | message("Building all") |
135 | set_property(GLOBAL PROPERTY SubProject) |
136 | set_property(GLOBAL PROPERTY Label) |
137 | set(CTEST_BUILD_TARGET "all") |
138 | ctest_build(BUILD "${CTEST_BINARY_DIRECTORY}" APPEND) |
139 | ctest_submit(PARTS BUILD) |
eee962e6 |
140 | #Test every other build |
61aa89dd |
141 | |
eee962e6 |
142 | math(EXPR TEST "${CYCLE}%${TESTCYCLE}") |
143 | if(${TEST} EQUAL 0) |
144 | message(STATUS "Running tests") |
145 | ctest_test (BUILD "${CTEST_BINARY_DIRECTORY}") |
146 | endif(${TEST} EQUAL 0) |
147 | ctest_submit () |
148 | message("Build ${CYCLE} completed") |
eee962e6 |
149 | endwhile() |
150 | |
151 | |
152 | |
153 | |