forked from RobotLocomotion/drake-ci
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathenvironment.cmake
More file actions
192 lines (167 loc) · 5 KB
/
Copy pathenvironment.cmake
File metadata and controls
192 lines (167 loc) · 5 KB
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
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
# -*- mode: cmake; -*-
# vi: set ft=cmake:
if(EXISTS "/media/ephemeral0/tmp")
set(DASHBOARD_TEMP_DIR "/media/ephemeral0/tmp")
else()
set(DASHBOARD_TEMP_DIR "/tmp")
endif()
# Verify workspace location and convert to CMake path
if(NOT DEFINED ENV{WORKSPACE})
fatal("could not extract WORKSPACE from environment")
endif()
cmake_path(CONVERT "$ENV{WORKSPACE}" TO_CMAKE_PATH_LIST DASHBOARD_WORKSPACE)
string(STRIP "$ENV{JOB_NAME}" DASHBOARD_JOB_NAME)
if(NOT DASHBOARD_JOB_NAME)
fatal("could not extract JOB_NAME from environment")
endif()
string(STRIP "$ENV{NODE_NAME}" DASHBOARD_NODE_NAME)
if(NOT DASHBOARD_NODE_NAME)
fatal("could not extract NODE_NAME from environment")
endif()
if(DASHBOARD_JOB_NAME MATCHES "(linux|mac)")
set(OS "${CMAKE_MATCH_0}")
else()
fatal("could not extract operating system from job name")
endif()
if(APPLE)
if(NOT OS STREQUAL "mac")
fatal("incorrect operating system in job name")
endif()
else()
if(NOT OS STREQUAL "linux")
fatal("incorrect operating system in job name")
endif()
endif()
if(APPLE)
set(DISTRIBUTION_REGEX "(sequoia|tahoe)")
else()
set(DISTRIBUTION_REGEX "(noble|resolute)")
endif()
if(DASHBOARD_JOB_NAME MATCHES "${DISTRIBUTION_REGEX}")
set(DISTRIBUTION "${CMAKE_MATCH_0}")
else()
fatal("could not extract distribution from job name")
endif()
include(${DASHBOARD_DRIVER_DIR}/distribution.cmake)
if(NOT DISTRIBUTION STREQUAL DASHBOARD_UNIX_DISTRIBUTION_CODE_NAME)
fatal("incorrect operating system code name in job name")
endif()
if(DASHBOARD_JOB_NAME MATCHES "(clang|gcc)")
set(COMPILER "${CMAKE_MATCH_0}")
else()
fatal("could not extract compiler from job name")
endif()
if(DASHBOARD_JOB_NAME MATCHES "(bazel|cmake|wheel)")
set(GENERATOR "${CMAKE_MATCH_0}")
else()
fatal("could not extract generator from job name")
endif()
if(DASHBOARD_JOB_NAME MATCHES "(continuous|experimental|nightly|staging)")
set(DASHBOARD_GROUP "${CMAKE_MATCH_0}")
else()
fatal("could not extract group from job name")
endif()
if(DASHBOARD_JOB_NAME MATCHES "debug")
set(DEBUG ON)
else()
set(DEBUG OFF)
endif()
if(DASHBOARD_JOB_NAME MATCHES "((address|leak|thread|undefined-behavior)-sanitizer|valgrind-memcheck)")
set(DEBUG ON)
set(MEMCHECK "${CMAKE_MATCH_0}")
else()
set(MEMCHECK OFF)
endif()
if(DASHBOARD_JOB_NAME MATCHES "coverage")
set(COVERAGE ON)
set(DEBUG ON)
else()
set(COVERAGE OFF)
endif()
if(DASHBOARD_JOB_NAME MATCHES "unprovisioned")
set(PROVISION ON)
else()
set(PROVISION OFF)
endif()
set(REMOTE_CACHE ON)
if(DASHBOARD_JOB_NAME MATCHES "(health-check|unprovisioned|packaging)")
set(REMOTE_CACHE OFF)
endif()
if(REMOTE_CACHE)
# All jobs, unless explicitly excluded above, read from the cache
set(DASHBOARD_REMOTE_ACCEPT_CACHED "yes")
if(DASHBOARD_GROUP STREQUAL "continuous")
# All continuous jobs that read from the cache also write to the cache
set(DASHBOARD_REMOTE_UPLOAD_LOCAL_RESULTS "yes")
else()
set(DASHBOARD_REMOTE_UPLOAD_LOCAL_RESULTS "no")
endif()
endif()
if(DASHBOARD_JOB_NAME MATCHES "everything")
set(EVERYTHING ON)
set(GUROBI ON)
set(MOSEK ON)
set(SNOPT ON)
else()
set(EVERYTHING OFF)
endif()
if(DASHBOARD_JOB_NAME MATCHES "documentation")
if(DISTRIBUTION STREQUAL "noble" AND DASHBOARD_GROUP STREQUAL "nightly")
set(DOCUMENTATION "publish")
else()
set(DOCUMENTATION ON)
endif()
else()
set(DOCUMENTATION OFF)
endif()
if(DASHBOARD_JOB_NAME MATCHES "mirror-to-s3")
if(DISTRIBUTION STREQUAL "noble" AND DASHBOARD_GROUP STREQUAL "continuous")
set(MIRROR_TO_S3 "publish")
else()
set(MIRROR_TO_S3 ON)
endif()
else()
set(MIRROR_TO_S3 OFF)
endif()
if(DASHBOARD_JOB_NAME MATCHES "packaging")
if(APPLE)
if(DISTRIBUTION STREQUAL "sequoia")
set(PACKAGE "publish")
else()
set(PACKAGE ON)
endif()
else()
set(PACKAGE "publish")
endif()
else()
set(PACKAGE OFF)
endif()
# Set the source and binary trees.
set(DASHBOARD_SOURCE_DIRECTORY "${DASHBOARD_WORKSPACE}/src")
set(DASHBOARD_BINARY_DIRECTORY "${DASHBOARD_WORKSPACE}/build")
# Determine if build volume is "warm"
set(DASHBOARD_TIMESTAMP_FILE "${DASHBOARD_TEMP_DIR}/TIMESTAMP")
if(NOT APPLE)
if(EXISTS "${DASHBOARD_TIMESTAMP_FILE}")
message("*** This EBS volume is warm")
else()
message("*** This EBS volume is cold")
endif()
endif()
string(TIMESTAMP DASHBOARD_TIMESTAMP "%s")
file(WRITE "${DASHBOARD_TIMESTAMP_FILE}" "${DASHBOARD_TIMESTAMP}")
if(NOT PROVISION)
# Find Bazel and prepare its execution environment
find_program(DASHBOARD_BAZEL_COMMAND NAMES "bazel")
if(NOT DASHBOARD_BAZEL_COMMAND)
fatal("bazel was not found")
endif()
set(PROVISION_SCRIPT "${DASHBOARD_SOURCE_DIRECTORY}/setup/install_prereqs")
set(PROVISION_ARGS "-y --user-environment-only")
message(STATUS "Executing user environment provisioning script...")
execute_process(COMMAND bash "-c" "${PROVISION_SCRIPT} ${PROVISION_ARGS}"
RESULT_VARIABLE INSTALL_PREREQS_RESULT_VARIABLE)
if(NOT INSTALL_PREREQS_RESULT_VARIABLE EQUAL 0)
fatal("user environment provisioning script did not complete successfully")
endif()
endif()