api: Implement SdkService/BuildSdkToolchains
BUG=b:250023328
TEST=./run_tests
TEST=manually run BAPI w/o USE flags
TEST=manually run BAPI w/ USE flags
Change-Id: I9c55f328765e47b733c5065bc7dcb4fdcf3b76ea
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/chromite/+/4158696
Auto-Submit: Greg Edelston <gredelston@google.com>
Tested-by: Greg Edelston <gredelston@google.com>
Commit-Queue: Greg Edelston <gredelston@google.com>
Reviewed-by: Lizzy Presland <zland@google.com>
diff --git a/api/controller/sdk.py b/api/controller/sdk.py
index 8a88039..73b29e1 100644
--- a/api/controller/sdk.py
+++ b/api/controller/sdk.py
@@ -5,7 +5,7 @@
"""SDK chroot operations."""
import os
-from typing import Union
+from typing import Dict, Union
from chromite.api import controller
from chromite.api import faux
@@ -193,7 +193,7 @@
@faux.all_empty
@validate.validation_complete
def BuildPrebuilts(input_proto, _output_proto, _config):
- """Builds the binary packages that comprise the Chromium OS SDK."""
+ """Build the binary packages that comprise the Chromium OS SDK."""
chroot = controller_util.ParseChroot(input_proto.chroot)
sdk.BuildPrebuilts(chroot, board=input_proto.build_target.name)
@@ -224,10 +224,23 @@
@validate.require("prepend_version", "version", "upload_location")
@validate.validation_complete
def UploadPrebuiltPackages(input_proto, _output_proto, _config):
- """Uploads prebuilt packages."""
+ """Upload prebuilt packages."""
sdk.UploadPrebuiltPackages(
controller_util.ParseChroot(input_proto.chroot),
input_proto.prepend_version,
input_proto.version,
input_proto.upload_location,
)
+
+
+@faux.all_empty
+@validate.require("chroot")
+@validate.validation_complete
+def BuildSdkToolchain(input_proto, output_proto, _config):
+ """Build cross-compiler packages for the SDK."""
+ chroot = controller_util.ParseChroot(input_proto.chroot)
+ extra_env: Dict[str, str] = {}
+ if input_proto.use_flags:
+ extra_env["USE"] = " ".join(use.flag for use in input_proto.use_flags)
+ generated_files = sdk.BuildSdkToolchain(chroot, extra_env=extra_env)
+ output_proto.generated_files.extend(generated_files)