Skip to content

Commit 610e88b

Browse files
authored
Merge branch 'main' into nfc_same_elt
2 parents 187555d + a955399 commit 610e88b

File tree

7,851 files changed

+603495
-340191
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

7,851 files changed

+603495
-340191
lines changed

.ci/compute-projects.sh

Lines changed: 0 additions & 194 deletions
This file was deleted.

.ci/compute_projects.py

Lines changed: 20 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,9 @@
5252
"clang": {"clang-tools-extra", "compiler-rt", "cross-project-tests"},
5353
"clang-tools-extra": {"libc"},
5454
"mlir": {"flang"},
55+
# Test everything if ci scripts are changed.
56+
# FIXME: Figure out what is missing and add here.
57+
".ci": {"llvm", "clang", "lld", "lldb"},
5558
}
5659

5760
DEPENDENT_RUNTIMES_TO_TEST = {"clang": {"libcxx", "libcxxabi", "libunwind"}}
@@ -112,6 +115,8 @@
112115
"polly": "check-polly",
113116
}
114117

118+
RUNTIMES = {"libcxx", "libcxxabi", "libunwind"}
119+
115120

116121
def _add_dependencies(projects: Set[str]) -> Set[str]:
117122
projects_with_dependents = set(projects)
@@ -128,10 +133,11 @@ def _add_dependencies(projects: Set[str]) -> Set[str]:
128133
def _compute_projects_to_test(modified_projects: Set[str], platform: str) -> Set[str]:
129134
projects_to_test = set()
130135
for modified_project in modified_projects:
131-
# Skip all projects where we cannot run tests.
132-
if modified_project not in PROJECT_CHECK_TARGETS:
136+
if modified_project in RUNTIMES:
133137
continue
134-
projects_to_test.add(modified_project)
138+
# Skip all projects where we cannot run tests.
139+
if modified_project in PROJECT_CHECK_TARGETS:
140+
projects_to_test.add(modified_project)
135141
if modified_project not in DEPENDENTS_TO_TEST:
136142
continue
137143
for dependent_project in DEPENDENTS_TO_TEST[modified_project]:
@@ -190,6 +196,17 @@ def _compute_runtime_check_targets(runtimes_to_test: Set[str]) -> Set[str]:
190196
def _get_modified_projects(modified_files: list[str]) -> Set[str]:
191197
modified_projects = set()
192198
for modified_file in modified_files:
199+
path_parts = pathlib.Path(modified_file).parts
200+
# Exclude files in the docs directory. They do not impact an test
201+
# targets and there is a separate workflow used for ensuring the
202+
# documentation builds.
203+
if len(path_parts) > 2 and path_parts[1] == "docs":
204+
continue
205+
# Exclude files for the gn build. We do not test it within premerge
206+
# and changes occur often enough that they otherwise take up
207+
# capacity.
208+
if len(path_parts) > 3 and path_parts[:3] == ("llvm", "utils", "gn"):
209+
continue
193210
modified_projects.add(pathlib.Path(modified_file).parts[0])
194211
return modified_projects
195212

.ci/compute_projects_test.py

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -161,6 +161,46 @@ def test_top_level_file(self):
161161
self.assertEqual(env_variables["runtimes_to_build"], "")
162162
self.assertEqual(env_variables["runtimes_check_targets"], "")
163163

164+
def test_exclude_runtiems_in_projects(self):
165+
env_variables = compute_projects.get_env_variables(
166+
[".ci/compute_projects.py", "libcxx/CMakeLists.txt"], "Linux"
167+
)
168+
self.assertEqual(env_variables["projects_to_build"], "")
169+
self.assertEqual(env_variables["project_check_targets"], "")
170+
self.assertEqual(env_variables["runtimes_to_build"], "")
171+
self.assertEqual(env_variables["runtimes_check_targets"], "")
172+
173+
def test_exclude_docs(self):
174+
env_variables = compute_projects.get_env_variables(
175+
["llvm/docs/CIBestPractices.rst"], "Linux"
176+
)
177+
self.assertEqual(env_variables["projects_to_build"], "")
178+
self.assertEqual(env_variables["project_check_targets"], "")
179+
self.assertEqual(env_variables["runtimes_to_build"], "")
180+
self.assertEqual(env_variables["runtimes_check_targets"], "")
181+
182+
def test_exclude_gn(self):
183+
env_variables = compute_projects.get_env_variables(
184+
["llvm/utils/gn/build/BUILD.gn"], "Linux"
185+
)
186+
self.assertEqual(env_variables["projects_to_build"], "")
187+
self.assertEqual(env_variables["project_check_targets"], "")
188+
self.assertEqual(env_variables["runtimes_to_build"], "")
189+
self.assertEqual(env_variables["runtimes_check_targets"], "")
190+
191+
def test_ci(self):
192+
env_variables = compute_projects.get_env_variables(
193+
[".ci/compute_projects.py"], "Linux"
194+
)
195+
self.assertEqual(env_variables["projects_to_build"],
196+
"clang;lld;llvm;lldb")
197+
self.assertEqual(env_variables["project_check_targets"], "check-clang
198+
check-lld check-llvm check-lldb")
199+
self.assertEqual(env_variables["runtimes_to_build"],
200+
"libcxx;libcxxabi;libunwind")
201+
self.assertEqual(env_variables["runtimes_check_targets"], "check-cxx
202+
check-cxxabi check-unwind")
203+
164204

165205
if __name__ == "__main__":
166206
unittest.main()

.ci/generate-buildkite-pipeline-premerge

Lines changed: 8 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -52,8 +52,6 @@ modified_dirs=$(echo "$MODIFIED_FILES" | cut -d'/' -f1 | sort -u)
5252
echo "Directories modified:" >&2
5353
echo "$modified_dirs" >&2
5454

55-
. ./.ci/compute-projects.sh
56-
5755
# Project specific pipelines.
5856

5957
# If libc++ or one of the runtimes directories changed.
@@ -73,20 +71,16 @@ fi
7371
# needs while letting them run on the infrastructure provided by LLVM.
7472

7573
# Figure out which projects need to be built on each platform
76-
all_projects="bolt clang clang-tools-extra compiler-rt cross-project-tests flang libc libclc lld lldb llvm mlir openmp polly pstl"
77-
modified_projects="$(keep-modified-projects ${all_projects})"
78-
79-
linux_projects_to_test=$(exclude-linux $(compute-projects-to-test 0 ${modified_projects}))
80-
linux_check_targets=$(check-targets ${linux_projects_to_test} | sort | uniq)
81-
linux_projects=$(add-dependencies ${linux_projects_to_test} | sort | uniq)
74+
source <(git diff --name-only origin/${BUILDKITE_PULL_REQUEST_BASE_BRANCH}...HEAD | python3 .ci/compute_projects.py Linux)
75+
linux_projects=${projects_to_build}
76+
linux_check_targets=${project_check_targets}
77+
linux_runtimes=${runtimes_to_build}
78+
linux_runtime_check_targets=${runtimes_check_targets}
8279

83-
linux_runtimes_to_test=$(compute-runtimes-to-test ${linux_projects_to_test})
84-
linux_runtime_check_targets=$(check-targets ${linux_runtimes_to_test} | sort | uniq)
85-
linux_runtimes=$(echo ${linux_runtimes_to_test} | sort | uniq)
80+
source <(git diff --name-only origin/${BUILDKITE_PULL_REQUEST_BASE_BRANCH}...HEAD | python3 .ci/compute_projects.py Windows)
81+
windows_projects=${projects_to_build}
82+
windows_check_targets=${project_check_targets}
8683

87-
windows_projects_to_test=$(exclude-windows $(compute-projects-to-test 1 ${modified_projects}))
88-
windows_check_targets=$(check-targets ${windows_projects_to_test} | sort | uniq)
89-
windows_projects=$(add-dependencies ${windows_projects_to_test} | sort | uniq)
9084

9185
# Generate the appropriate pipeline
9286
if [[ "${linux_projects}" != "" ]]; then

0 commit comments

Comments
 (0)