| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455 |
- #!/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()
|