chromite: Separate vmlinux.debug from debug symbol

vmlinux.debug is the symbol that will be used for kdump on chromeOS.
Separate vmlinux.debug from the entire debug tarball so it's easier for
downloading from users or other service. Archive this symbol with the
existing vmlinuz.tar.xz so we don't have to create a new output.

BUG=b:279631876

TEST=./run_tests api/controller/artifacts_unittest.py
TEST=./run_tests service/artifacts_unittest.py

Change-Id: Ib1d497deff641300404c1e78c705c14289cdcda5
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/chromite/+/4617482
Commit-Queue: Hsin-Yi Wang <hsinyi@chromium.org>
Reviewed-by: Lizzy Presland <zland@google.com>
Tested-by: Hsin-Yi Wang <hsinyi@chromium.org>
diff --git a/api/controller/artifacts.py b/api/controller/artifacts.py
index 70ee650..b3511a2 100644
--- a/api/controller/artifacts.py
+++ b/api/controller/artifacts.py
@@ -197,7 +197,7 @@
 
 @faux.success(_BundleImageArchivesResponse)
 @faux.empty_error
-@validate.require("build_target.name")
+@validate.require("sysroot.build_target.name", "sysroot.path")
 @validate.exists("output_dir")
 @validate.validation_complete
 def BundleImageArchives(
@@ -206,13 +206,20 @@
     _config: "api_config.ApiConfig",
 ) -> Optional[int]:
     """Create a .tar.xz archive for each image that has been created."""
-    build_target = controller_util.ParseBuildTarget(input_proto.build_target)
+    build_target = controller_util.ParseBuildTarget(
+        input_proto.sysroot.build_target
+    )
+    chroot = controller_util.ParseChroot(input_proto.chroot)
+    sysroot = controller_util.ParseSysroot(input_proto.sysroot)
     output_dir = input_proto.output_dir
     image_dir = _GetImageDir(constants.SOURCE_ROOT, build_target.name)
     if image_dir is None:
         return
 
-    archives = artifacts.ArchiveImages(image_dir, output_dir)
+    if not sysroot.Exists(chroot=chroot):
+        logging.warning("Sysroot does not exist: %s", sysroot.path)
+
+    archives = artifacts.ArchiveImages(chroot, sysroot, image_dir, output_dir)
 
     for archive in archives:
         output_proto.artifacts.add().path = os.path.join(output_dir, archive)