49
49
},
50
50
"lld" : {"bolt" , "cross-project-tests" },
51
51
# TODO(issues/132795): LLDB should be enabled on clang changes.
52
- "clang" : {"clang-tools-extra" , "cross-project-tests" },
52
+ "clang" : {"clang-tools-extra" , "compiler-rt" , "cross-project-tests" },
53
+ "clang-tools-extra" : {"libc" },
53
54
"mlir" : {"flang" },
54
55
# Test everything if ci scripts are changed.
55
56
# FIXME: Figure out what is missing and add here.
63
64
64
65
# This mapping describes runtimes that should be tested when the key project is
65
66
# touched.
66
- DEPENDENT_RUNTIMES_TO_TEST = {
67
- "clang" : {"compiler-rt" },
68
- "clang-tools-extra" : {"libc" },
69
- }
70
- DEPENDENT_RUNTIMES_TO_TEST_NEEDS_RECONFIG = {
71
- "llvm" : {"libcxx" , "libcxxabi" , "libunwind" },
72
- "clang" : {"libcxx" , "libcxxabi" , "libunwind" },
73
- ".ci" : {"libcxx" , "libcxxabi" , "libunwind" },
74
- }
67
+ DEPENDENT_RUNTIMES_TO_TEST = {"clang" : {"libcxx" , "libcxxabi" , "libunwind" }}
75
68
76
69
EXCLUDE_LINUX = {
77
70
"cross-project-tests" , # TODO(issues/132796): Tests are failing.
100
93
"cross-project-tests" ,
101
94
"flang" ,
102
95
"libc" ,
96
+ "libcxx" ,
97
+ "libcxxabi" ,
98
+ "libunwind" ,
103
99
"lldb" ,
104
100
"openmp" ,
105
101
"polly" ,
126
122
"polly" : "check-polly" ,
127
123
}
128
124
129
- RUNTIMES = {"libcxx" , "libcxxabi" , "libunwind" , "compiler-rt" , "libc" }
125
+ RUNTIMES = {"libcxx" , "libcxxabi" , "libunwind" }
130
126
131
127
132
- def _add_dependencies (projects : Set [str ], runtimes : Set [ str ] ) -> Set [str ]:
128
+ def _add_dependencies (projects : Set [str ]) -> Set [str ]:
133
129
projects_with_dependents = set (projects )
134
130
current_projects_count = 0
135
131
while current_projects_count != len (projects_with_dependents ):
@@ -138,25 +134,9 @@ def _add_dependencies(projects: Set[str], runtimes: Set[str]) -> Set[str]:
138
134
if project not in PROJECT_DEPENDENCIES :
139
135
continue
140
136
projects_with_dependents .update (PROJECT_DEPENDENCIES [project ])
141
- for runtime in runtimes :
142
- if runtime not in PROJECT_DEPENDENCIES :
143
- continue
144
- projects_with_dependents .update (PROJECT_DEPENDENCIES [runtime ])
145
137
return projects_with_dependents
146
138
147
139
148
- def _exclude_projects (current_projects : Set [str ], platform : str ) -> Set [str ]:
149
- if platform == "Linux" :
150
- to_exclude = EXCLUDE_LINUX
151
- elif platform == "Windows" :
152
- to_exclude = EXCLUDE_WINDOWS
153
- elif platform == "Darwin" :
154
- to_exclude = EXCLUDE_MAC
155
- else :
156
- raise ValueError (f"Unexpected platform: { platform } " )
157
- return current_projects .difference (to_exclude )
158
-
159
-
160
140
def _compute_projects_to_test (modified_projects : Set [str ], platform : str ) -> Set [str ]:
161
141
projects_to_test = set ()
162
142
for modified_project in modified_projects :
@@ -174,14 +154,25 @@ def _compute_projects_to_test(modified_projects: Set[str], platform: str) -> Set
174
154
):
175
155
continue
176
156
projects_to_test .add (dependent_project )
177
- projects_to_test = _exclude_projects (projects_to_test , platform )
157
+ if platform == "Linux" :
158
+ for to_exclude in EXCLUDE_LINUX :
159
+ if to_exclude in projects_to_test :
160
+ projects_to_test .remove (to_exclude )
161
+ elif platform == "Windows" :
162
+ for to_exclude in EXCLUDE_WINDOWS :
163
+ if to_exclude in projects_to_test :
164
+ projects_to_test .remove (to_exclude )
165
+ elif platform == "Darwin" :
166
+ for to_exclude in EXCLUDE_MAC :
167
+ if to_exclude in projects_to_test :
168
+ projects_to_test .remove (to_exclude )
169
+ else :
170
+ raise ValueError ("Unexpected platform." )
178
171
return projects_to_test
179
172
180
173
181
- def _compute_projects_to_build (
182
- projects_to_test : Set [str ], runtimes : Set [str ]
183
- ) -> Set [str ]:
184
- return _add_dependencies (projects_to_test , runtimes )
174
+ def _compute_projects_to_build (projects_to_test : Set [str ]) -> Set [str ]:
175
+ return _add_dependencies (projects_to_test )
185
176
186
177
187
178
def _compute_project_check_targets (projects_to_test : Set [str ]) -> Set [str ]:
@@ -193,36 +184,24 @@ def _compute_project_check_targets(projects_to_test: Set[str]) -> Set[str]:
193
184
return check_targets
194
185
195
186
196
- def _compute_runtimes_to_test (modified_projects : Set [str ], platform : str ) -> Set [str ]:
187
+ def _compute_runtimes_to_test (projects_to_test : Set [str ]) -> Set [str ]:
197
188
runtimes_to_test = set ()
198
- for modified_project in modified_projects :
199
- if modified_project not in DEPENDENT_RUNTIMES_TO_TEST :
200
- continue
201
- runtimes_to_test .update (DEPENDENT_RUNTIMES_TO_TEST [modified_project ])
202
- return _exclude_projects (runtimes_to_test , platform )
189
+ for project_to_test in projects_to_test :
190
+ if project_to_test in DEPENDENT_RUNTIMES_TO_TEST :
191
+ runtimes_to_test .update (DEPENDENT_RUNTIMES_TO_TEST [project_to_test ])
192
+ if project_to_test in DEPENDENT_RUNTIMES_TO_BUILD :
193
+ runtimes_to_test .update (DEPENDENT_RUNTIMES_TO_BUILD [project_to_test ])
194
+ return runtimes_to_test
203
195
204
196
205
- def _compute_runtimes_to_test_needs_reconfig (
206
- modified_projects : Set [str ], platform : str
207
- ) -> Set [str ]:
208
- runtimes_to_test = set ()
209
- for modified_project in modified_projects :
210
- if modified_project not in DEPENDENT_RUNTIMES_TO_TEST_NEEDS_RECONFIG :
197
+ def _compute_runtime_check_targets (projects_to_test : Set [str ]) -> Set [str ]:
198
+ check_targets = set ()
199
+ for project_to_test in projects_to_test :
200
+ if project_to_test not in DEPENDENT_RUNTIMES_TO_TEST :
211
201
continue
212
- runtimes_to_test .update (
213
- DEPENDENT_RUNTIMES_TO_TEST_NEEDS_RECONFIG [modified_project ]
214
- )
215
- return _exclude_projects (runtimes_to_test , platform )
216
-
217
-
218
- def _compute_runtimes_to_build (
219
- runtimes_to_test : Set [str ], modified_projects : Set [str ], platform : str
220
- ) -> Set [str ]:
221
- runtimes_to_build = set (runtimes_to_test )
222
- for modified_project in modified_projects :
223
- if modified_project in DEPENDENT_RUNTIMES_TO_BUILD :
224
- runtimes_to_build .update (DEPENDENT_RUNTIMES_TO_BUILD [modified_project ])
225
- return _exclude_projects (runtimes_to_build , platform )
202
+ for runtime_to_test in DEPENDENT_RUNTIMES_TO_TEST [project_to_test ]:
203
+ check_targets .add (PROJECT_CHECK_TARGETS [runtime_to_test ])
204
+ return check_targets
226
205
227
206
228
207
def _get_modified_projects (modified_files : list [str ]) -> Set [str ]:
@@ -246,19 +225,10 @@ def _get_modified_projects(modified_files: list[str]) -> Set[str]:
246
225
def get_env_variables (modified_files : list [str ], platform : str ) -> Set [str ]:
247
226
modified_projects = _get_modified_projects (modified_files )
248
227
projects_to_test = _compute_projects_to_test (modified_projects , platform )
249
- runtimes_to_test = _compute_runtimes_to_test (modified_projects , platform )
250
- runtimes_to_test_needs_reconfig = _compute_runtimes_to_test_needs_reconfig (
251
- modified_projects , platform
252
- )
253
- runtimes_to_build = _compute_runtimes_to_build (
254
- runtimes_to_test | runtimes_to_test_needs_reconfig , modified_projects , platform
255
- )
256
- projects_to_build = _compute_projects_to_build (projects_to_test , runtimes_to_build )
228
+ projects_to_build = _compute_projects_to_build (projects_to_test )
257
229
projects_check_targets = _compute_project_check_targets (projects_to_test )
258
- runtimes_check_targets = _compute_project_check_targets (runtimes_to_test )
259
- runtimes_check_targets_needs_reconfig = _compute_project_check_targets (
260
- runtimes_to_test_needs_reconfig
261
- )
230
+ runtimes_to_build = _compute_runtimes_to_test (projects_to_test )
231
+ runtimes_check_targets = _compute_runtime_check_targets (projects_to_test )
262
232
# We use a semicolon to separate the projects/runtimes as they get passed
263
233
# to the CMake invocation and thus we need to use the CMake list separator
264
234
# (;). We use spaces to separate the check targets as they end up getting
@@ -268,9 +238,6 @@ def get_env_variables(modified_files: list[str], platform: str) -> Set[str]:
268
238
"project_check_targets" : " " .join (sorted (projects_check_targets )),
269
239
"runtimes_to_build" : ";" .join (sorted (runtimes_to_build )),
270
240
"runtimes_check_targets" : " " .join (sorted (runtimes_check_targets )),
271
- "runtimes_check_targets_needs_reconfig" : " " .join (
272
- sorted (runtimes_check_targets_needs_reconfig )
273
- ),
274
241
}
275
242
276
243
0 commit comments