diff options
author | Ulises Mendez Martinez <umendez@google.com> | 2023-08-09 11:47:43 +0000 |
---|---|---|
committer | Ulises Mendez Martinez <umendez@google.com> | 2023-08-15 09:03:36 +0000 |
commit | e02ba337321007ee6b64694328f8c0dafcaaae2e (patch) | |
tree | 73e5fe2220a2049981354a1b500376c7ce198f65 /kleaf/bazel.py | |
parent | ff335916bef0e274a3ffdeb92361197f1529626f (diff) | |
download | build-e02ba337321007ee6b64694328f8c0dafcaaae2e.tar.gz |
kleaf: help: Support to query kernel_build targets
* Users can now run:
* `tools/bazel help kleaf targets`
* `tools/bazel help kleaf abi-targets`
to get a list of available kernel_build and kernel_abi_update targets.
Bug: 256196368
Bug: 265138521
Change-Id: I26e39fa146e2f856dd102bf4c3115e088c6ae380
Signed-off-by: Ulises Mendez Martinez <umendez@google.com>
Diffstat (limited to 'kleaf/bazel.py')
-rwxr-xr-x | kleaf/bazel.py | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/kleaf/bazel.py b/kleaf/bazel.py index 70a44fa..6f9e832 100755 --- a/kleaf/bazel.py +++ b/kleaf/bazel.py @@ -41,6 +41,17 @@ _CONFIG_PATTERN = re.compile( r"^--config=(?P<config>[a-z_]+):\s*(?P<description>.*)$" ) +# Sync with the following files: +# kleaf/impl/kernel_build.bzl +_QUERY_TARGETS_ARG = 'kind("kernel_build rule", //... except attr("tags", \ + "manual", //...) except //.source_date_epoch_dir/... except //out/...)' + +# Sync with the following files: +# kleaf/impl/abi/abi_update.bzl +# kleaf/impl/abi/kernel_abi.bzl +_QUERY_ABI_TARGETS_ARG = 'kind("(update_source_file|abi_update) rule", //... except attr("tags", \ + "manual", //...) except //.source_date_epoch_dir/... except //out/...)' + def _require_absolute_path(p: str) -> pathlib.Path: p = pathlib.Path(p) @@ -106,6 +117,7 @@ class BazelWrapper(object): self._parse_startup_options() self._parse_command_args() + self._rebuild_kleaf_help_args() def _add_startup_option_to_parser(self, parser): group = parser.add_argument_group( @@ -361,6 +373,21 @@ class BazelWrapper(object): f"{self.root_dir}/{_BAZEL_RC_DIR}/{f}") bazelrc_parser.add_to(config_group, root_dir=self.root_dir) + # Additional helper queries for target discovery. + kleaf_group = parser.add_argument_group( + title=textwrap.dedent("""\ + Kleaf Help - Query commands. + Usage: bazel help kleaf [<command>]"""), + ) + kleaf_group.add_argument( + "targets", + help = "List kernel_build targets under current WORKSPACE", + ) + kleaf_group.add_argument( + "abi_targets", + help = "List ABI related targets under current WORKSPACE", + ) + parser.add_argument_group( title="Target patterns", description="$ bazel help target-syntax" @@ -391,6 +418,37 @@ class BazelWrapper(object): else: print("Native bazel help menu:") + # Handle queries of kernel_build and kernel_abi_update targets. + def _rebuild_kleaf_help_args(self): + show_kleaf_targets = self.command == "help" and self.transformed_command_args and \ + self.transformed_command_args[0] == "kleaf" and \ + len(self.transformed_command_args) > 1 and \ + (self.transformed_command_args[1] in ["targets", "abi-targets", "abi_targets"]) + + if not show_kleaf_targets: + return + + # Transform the command to a query + self.command = "query" + _kleaf_help_command = self.transformed_command_args[1] + # Inform about the ignored arguments if any. + _ignored_args = self.transformed_command_args[2:] + if _ignored_args: + print("INFO: Ignoring arguments:", _ignored_args) + # Suppress errors from malformed packages. e.g. clang packages with + # Soong dependencies, //external packages, etc. + self.transformed_command_args = [ + "--keep_going", + "--ui_event_filters=-error", + "--noshow_progress" + ] + if _kleaf_help_command == "targets": + print("Kleaf available targets:") + self.transformed_command_args.append(_QUERY_TARGETS_ARG) + else: + print("Kleaf ABI update available targets:") + self.transformed_command_args.append(_QUERY_ABI_TARGETS_ARG) + def run(self): final_args = self._build_final_args() |