mirror of
https://github.com/carbon-language/carbon-lang.git
synced 2026-09-25 12:20:10 +01:00
LLVM's bazel build has changed a bit, so this updates the tree for that. LLVM is also moving `llvm::Optional` to match the standard API, but it seemed simpler to just switch to `std::optional`. Co-authored-by: Jon Ross-Perkins <jperkins@google.com>
56 lines
1.6 KiB
Python
Executable File
56 lines
1.6 KiB
Python
Executable File
#!/usr/bin/env python3
|
|
|
|
"""Detects and prevents dependencies on LLVM's googletest.
|
|
|
|
Carbon uses googletest directly, and it's a significantly more recent version
|
|
than is provided by LLVM. Using both versions in the same binary leads to
|
|
problems, so this detects dependencies.
|
|
|
|
We also have some dependency checking at //bazel/check_deps. This is a separate
|
|
script because check_deps relies on being able to validate specific binaries
|
|
which change infrequently, whereas this effectively monitors all cc_test rules,
|
|
the set of which is expected to be altered more often.
|
|
"""
|
|
|
|
__copyright__ = """
|
|
Part of the Carbon Language project, under the Apache License v2.0 with LLVM
|
|
Exceptions. See /LICENSE for license information.
|
|
SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
|
"""
|
|
|
|
import subprocess
|
|
|
|
import scripts_utils
|
|
|
|
_MESSAGE = """\
|
|
Dependencies on @llvm-project//llvm:gtest are forbidden, but a dependency path
|
|
was detected:
|
|
|
|
%s
|
|
Carbon uses GoogleTest through @com_google_googletest, which is a different
|
|
version than LLVM uses at @llvm-project//llvm:gtest. As a consequence,
|
|
dependencies on @llvm-project//llvm:gtest must be avoided.
|
|
"""
|
|
|
|
|
|
def main() -> None:
|
|
scripts_utils.chdir_repo_root()
|
|
args = [
|
|
scripts_utils.locate_bazel(),
|
|
"query",
|
|
"somepath(//..., @llvm-project//third-party/unittest:gtest)",
|
|
]
|
|
p = subprocess.run(
|
|
args, stdout=subprocess.PIPE, stderr=subprocess.PIPE, encoding="utf-8"
|
|
)
|
|
if p.returncode != 0:
|
|
print(p.stderr)
|
|
exit(f"bazel query returned {p.returncode}")
|
|
if p.stdout:
|
|
exit(_MESSAGE % p.stdout)
|
|
print("Done!")
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main()
|