Build API: Add goma config to build chrome.

BUG=chromium:950006, chromium:1007997
TEST=run_tests

Change-Id: Id0bb489fab98bafa8ebbcb7e4d50ff84d98ed2c9
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/chromite/+/1825681
Tested-by: Alex Klein <saklein@chromium.org>
Reviewed-by: David Burger <dburger@chromium.org>
Commit-Queue: Alex Klein <saklein@chromium.org>
diff --git a/api/controller/sysroot.py b/api/controller/sysroot.py
index d82893c..5edbbc8 100644
--- a/api/controller/sysroot.py
+++ b/api/controller/sysroot.py
@@ -97,22 +97,22 @@
 
 @faux.empty_success
 @faux.error(_MockFailedPackagesResponse)
-@validate.require('sysroot.path', 'sysroot.build_target.name')
+@validate.require('sysroot.build_target.name')
+@validate.exists('sysroot.path')
 @validate.validation_complete
 @metrics.collect_metrics
 def InstallPackages(input_proto, output_proto, _config):
   """Install packages into a sysroot, building as necessary and permitted."""
   compile_source = input_proto.flags.compile_source
   event_file = input_proto.flags.event_file
+  use_goma = input_proto.flags.use_goma
 
-  sysroot_path = input_proto.sysroot.path
-  build_target_name = input_proto.sysroot.build_target.name
+  target_sysroot = sysroot_lib.Sysroot(input_proto.sysroot.path)
+  build_target = controller_util.ParseBuildTarget(
+      input_proto.sysroot.build_target)
   packages = [controller_util.PackageInfoToString(x)
               for x in input_proto.packages]
 
-  build_target = build_target_util.BuildTarget(build_target_name)
-  target_sysroot = sysroot_lib.Sysroot(sysroot_path)
-
   if not target_sysroot.IsToolchainInstalled():
     cros_build_lib.Die('Toolchain must first be installed.')
 
@@ -120,8 +120,12 @@
 
   use_flags = [u.flag for u in input_proto.use_flags]
   build_packages_config = sysroot.BuildPackagesRunConfig(
-      event_file=event_file, usepkg=not compile_source,
-      install_debug_symbols=True, packages=packages, use_flags=use_flags)
+      event_file=event_file,
+      usepkg=not compile_source,
+      install_debug_symbols=True,
+      packages=packages,
+      use_flags=use_flags,
+      use_goma=use_goma)
 
   try:
     sysroot.BuildPackages(build_target, target_sysroot, build_packages_config)
@@ -138,7 +142,7 @@
     return controller.RETURN_CODE_UNSUCCESSFUL_RESPONSE_AVAILABLE
 
   # Read metric events log and pipe them into output_proto.events.
-  deserialize_metrics_log(output_proto.events, prefix=build_target_name)
+  deserialize_metrics_log(output_proto.events, prefix=build_target.name)
 
 
 def _LogBinhost(board):