api: Implement ToolchainService/SetupToolchains
It's a fancy pass-through to `cros_setup_toolchains`.
BUG=b:289436363
TEST=./run_tests
Change-Id: Ia5e0dffa002e389a8031e116a3b857b194199b3d
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/chromite/+/4659850
Commit-Queue: Greg Edelston <gredelston@google.com>
Reviewed-by: Jack Rosenthal <jrosenth@chromium.org>
Auto-Submit: Greg Edelston <gredelston@google.com>
Tested-by: Greg Edelston <gredelston@google.com>
diff --git a/api/controller/toolchain.py b/api/controller/toolchain.py
index 0735ed7..77953b1 100644
--- a/api/controller/toolchain.py
+++ b/api/controller/toolchain.py
@@ -17,6 +17,7 @@
from chromite.api.gen.chromite.api.artifacts_pb2 import PrepareForBuildResponse
from chromite.api.gen.chromiumos.builder_config_pb2 import BuilderConfig
from chromite.api.gen.chromiumos.common_pb2 import PackageInfo
+from chromite.lib import cros_build_lib
from chromite.lib import toolchain as toolchain_lib
from chromite.lib import toolchain_util
from chromite.service import toolchain
@@ -397,7 +398,7 @@
output_proto: toolchain_pb2.DashboardLintResponse,
_config,
):
- """Lints all platform2 packages and uploads lints to GS"""
+ """Lint all platform2 packages and uploads lints to GS"""
board = input_proto.sysroot.build_target.name
output_proto.gs_path = toolchain.emerge_and_upload_lints(
board, input_proto.start_time
@@ -485,7 +486,7 @@
output_proto: "toolchain_pb2.ToolchainsReponse",
_config: "api_config.ApiConfig",
):
- """Gets the default and non-default toolchains for a board.
+ """Get the default and non-default toolchains for a board.
Args:
input_proto: The input proto with board and sysroot info.
@@ -499,3 +500,18 @@
output_proto.nondefault_toolchains.extend(
list(toolchain_lib.FilterToolchains(toolchains, "default", False))
)
+
+
+@faux.all_empty
+@validate.require("chroot.path")
+@validate.validation_complete
+def SetupToolchains(
+ input_proto: "toolchain_pb2.SetupToolchainsRequest",
+ output_proto: "toolchain_pb2.SetupToolchainsResponse",
+ config: "api_config.ApiConfig",
+):
+ """Run `cros_setup_toolchains`."""
+ del output_proto, config # Unused.
+ cros_build_lib.AssertInsideChroot()
+ include_boards = [bt.name for bt in input_proto.boards]
+ toolchain.setup_toolchains(include_boards=include_boards)