From 272d0319c0e34e7d82b263b12a70f175e5090307 Mon Sep 17 00:00:00 2001 From: Aiden Grossman Date: Sun, 24 Aug 2025 19:25:32 +0000 Subject: [PATCH] [CI] Run Linux premerge CI on libc++ changes. This is intended to catch failures like https://lab.llvm.org/staging/#/builders/192/builds/1671 (LLDB formatter related) before they end up landing in tree. --- .ci/compute_projects.py | 20 +++++++++++--------- .ci/compute_projects_test.py | 32 ++++++++++++++++++++++---------- 2 files changed, 33 insertions(+), 19 deletions(-) diff --git a/.ci/compute_projects.py b/.ci/compute_projects.py index 8567552fa25a6..179e6885b2b4b 100644 --- a/.ci/compute_projects.py +++ b/.ci/compute_projects.py @@ -31,6 +31,7 @@ "lld": {"llvm"}, "mlir": {"llvm"}, "polly": {"llvm"}, + "libcxx": {"clang"}, } # This mapping describes the additional projects that should be tested when a @@ -66,6 +67,7 @@ "libclc", "openmp", }, + "libcxx": {"lldb"}, } # This mapping describes runtimes that should be enabled for a specific project, @@ -86,6 +88,7 @@ "llvm": {"libcxx", "libcxxabi", "libunwind"}, "clang": {"libcxx", "libcxxabi", "libunwind"}, ".ci": {"libcxx", "libcxxabi", "libunwind"}, + "libcxx": {"libcxx"}, } EXCLUDE_LINUX = { @@ -197,20 +200,19 @@ def _exclude_projects(current_projects: Set[str], platform: str) -> Set[str]: def _compute_projects_to_test(modified_projects: Set[str], platform: str) -> Set[str]: projects_to_test = set() for modified_project in modified_projects: + if modified_project in DEPENDENTS_TO_TEST: + for dependent_project in DEPENDENTS_TO_TEST[modified_project]: + if ( + platform == "Windows" + and dependent_project in EXCLUDE_DEPENDENTS_WINDOWS + ): + continue + projects_to_test.add(dependent_project) if modified_project in RUNTIMES: continue # Skip all projects where we cannot run tests. if modified_project in PROJECT_CHECK_TARGETS: projects_to_test.add(modified_project) - if modified_project not in DEPENDENTS_TO_TEST: - continue - for dependent_project in DEPENDENTS_TO_TEST[modified_project]: - if ( - platform == "Windows" - and dependent_project in EXCLUDE_DEPENDENTS_WINDOWS - ): - continue - projects_to_test.add(dependent_project) projects_to_test = _exclude_projects(projects_to_test, platform) return projects_to_test diff --git a/.ci/compute_projects_test.py b/.ci/compute_projects_test.py index 7d780b51ca5d1..1f1620c16de96 100644 --- a/.ci/compute_projects_test.py +++ b/.ci/compute_projects_test.py @@ -239,16 +239,6 @@ def test_top_level_file(self): self.assertEqual(env_variables["runtimes_check_targets"], "") self.assertEqual(env_variables["runtimes_check_targets_needs_reconfig"], "") - def test_exclude_libcxx_in_projects(self): - env_variables = compute_projects.get_env_variables( - ["libcxx/CMakeLists.txt"], "Linux" - ) - self.assertEqual(env_variables["projects_to_build"], "") - self.assertEqual(env_variables["project_check_targets"], "") - self.assertEqual(env_variables["runtimes_to_build"], "") - self.assertEqual(env_variables["runtimes_check_targets"], "") - self.assertEqual(env_variables["runtimes_check_targets_needs_reconfig"], "") - def test_include_libc_in_runtimes(self): env_variables = compute_projects.get_env_variables( ["libc/CMakeLists.txt"], "Linux" @@ -413,6 +403,28 @@ def test_third_party_benchmark(self): "check-cxx check-cxxabi check-unwind", ) + def test_libcxx_linux(self): + env_variables = compute_projects.get_env_variables( + ["libcxx/CMakeLists.txt"], "Linux" + ) + self.assertEqual(env_variables["projects_to_build"], "clang;lldb;llvm") + self.assertEqual(env_variables["project_check_targets"], "check-lldb") + self.assertEqual(env_variables["runtimes_to_build"], "libcxx") + self.assertEqual(env_variables["runtimes_check_targets"], "") + self.assertEqual( + env_variables["runtimes_check_targets_needs_reconfig"], "check-cxx" + ) + + def test_libxx_windows(self): + env_variables = compute_projects.get_env_variables( + ["libcxx/CMakeLists.txt"], "Windows" + ) + self.assertEqual(env_variables["projects_to_build"], "") + self.assertEqual(env_variables["project_check_targets"], "") + self.assertEqual(env_variables["runtimes_to_build"], "") + self.assertEqual(env_variables["runtimes_check_targets"], "") + self.assertEqual(env_variables["runtimes_check_targets_needs_reconfig"], "") + if __name__ == "__main__": unittest.main()