aboutsummaryrefslogtreecommitdiff
path: root/tools/migration/crosstool_query.py
diff options
context:
space:
mode:
authorVinh Tran <vinhdaitran@google.com>2023-07-21 19:38:23 +0000
committerAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>2023-07-21 19:38:23 +0000
commitf0df148dbeb9b9ed3816aad328ebe7c65efaaa24 (patch)
treec75dabb560288e11786211bdc61ba40dde4b8674 /tools/migration/crosstool_query.py
parent3544b5a539d9e51161befd2ac3fdc04525bced91 (diff)
parent9a4853f0327e0266818c8d6b4967e2e8f36b1a88 (diff)
downloadbazelbuild-rules_cc-f0df148dbeb9b9ed3816aad328ebe7c65efaaa24.tar.gz
Original change: https://android-review.googlesource.com/c/platform/external/bazelbuild-rules_cc/+/2663436 Change-Id: I450b9f32024fa1b0844cc21a825c26589feb3977 Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
Diffstat (limited to 'tools/migration/crosstool_query.py')
-rw-r--r--tools/migration/crosstool_query.py53
1 files changed, 53 insertions, 0 deletions
diff --git a/tools/migration/crosstool_query.py b/tools/migration/crosstool_query.py
new file mode 100644
index 0000000..af3f7fa
--- /dev/null
+++ b/tools/migration/crosstool_query.py
@@ -0,0 +1,53 @@
+"""Script to make automated CROSSTOOL refactorings easier.
+
+This script reads the CROSSTOOL file and allows for querying of its fields.
+"""
+
+from absl import app
+from absl import flags
+from google.protobuf import text_format
+from third_party.com.github.bazelbuild.bazel.src.main.protobuf import crosstool_config_pb2
+
+flags.DEFINE_string("crosstool", None, "CROSSTOOL file path to be queried")
+flags.DEFINE_string("identifier", None,
+ "Toolchain identifier to specify toolchain.")
+flags.DEFINE_string("print_field", None, "Field to be printed to stdout.")
+
+
+def main(unused_argv):
+ crosstool = crosstool_config_pb2.CrosstoolRelease()
+
+ crosstool_filename = flags.FLAGS.crosstool
+ identifier = flags.FLAGS.identifier
+ print_field = flags.FLAGS.print_field
+
+ if not crosstool_filename:
+ raise app.UsageError("ERROR crosstool unspecified")
+ if not identifier:
+ raise app.UsageError("ERROR identifier unspecified")
+
+ if not print_field:
+ raise app.UsageError("ERROR print_field unspecified")
+
+ with open(crosstool_filename, "r") as f:
+ text = f.read()
+ text_format.Merge(text, crosstool)
+
+ toolchain_found = False
+ for toolchain in crosstool.toolchain:
+ if toolchain.toolchain_identifier == identifier:
+ toolchain_found = True
+ if not print_field:
+ continue
+ for field, value in toolchain.ListFields():
+ if print_field == field.name:
+ print value
+
+ if not toolchain_found:
+ print "toolchain_identifier %s not found, valid values are:" % identifier
+ for toolchain in crosstool.toolchain:
+ print " " + toolchain.toolchain_identifier
+
+
+if __name__ == "__main__":
+ app.run(main)