Jelajahi Sumber

Add pre-commit check for invalid build graph state (#5658)

This can catch things like dependency cycles introduced by
`fix-cc-deps`.
Geoff Romer 10 bulan lalu
induk
melakukan
0ccde0b68b
2 mengubah file dengan 36 tambahan dan 0 penghapusan
  1. 13 0
      .pre-commit-config.yaml
  2. 23 0
      scripts/check_build_graph.py

+ 13 - 0
.pre-commit-config.yaml

@@ -229,6 +229,19 @@ repos:
               .*/testdata/.*\.golden
           )$
       - id: check-links
+  - repo: local
+    hooks:
+      - id: check-build-graph
+        name: Check build graph
+        entry: scripts/check_build_graph.py
+        language: python
+        files: |
+          (?x)^(
+            .*BUILD.*|
+            .*MODULE.bazel.*|
+            .*WORKSPACE.*|
+            .*\.bzl
+          )$
 
 # This excludes third-party code, and patches to third-party code.
 exclude: |

+ 23 - 0
scripts/check_build_graph.py

@@ -0,0 +1,23 @@
+#!/usr/bin/env python3
+
+"""Verify that the bazel build graph is in a valid state, for pre-commit."""
+
+__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
+
+
+def main() -> None:
+    scripts_utils.chdir_repo_root()
+    bazel = scripts_utils.locate_bazel()
+    subprocess.check_call([bazel, "build", "--nobuild", "//..."])
+
+
+if __name__ == "__main__":
+    main()