Revise uploading of SDK toolchains overlays.

We're moving away from board-specific overlays to using toolchain-based
overlay names. This adapts the recently introduced upload mechanism to
work under this new scheme.

BUG=brillo:918
TEST=Unit tests

Change-Id: I303965afc27ee7f4602096795744812d8ee18d1c
Reviewed-on: https://chromium-review.googlesource.com/275068
Reviewed-by: Mike Frysinger <vapier@chromium.org>
Commit-Queue: Gilad Arnold <garnold@chromium.org>
Tested-by: Gilad Arnold <garnold@chromium.org>
diff --git a/scripts/upload_prebuilts.py b/scripts/upload_prebuilts.py
index 10f7b55..36c9302 100644
--- a/scripts/upload_prebuilts.py
+++ b/scripts/upload_prebuilts.py
@@ -476,7 +476,8 @@
       cros_build_lib.PrintBuildbotLink(link_name, url)
 
   def _UploadSdkTarball(self, board_path, url_suffix, prepackaged,
-                        board_overlay_tarballs, board_overlay_upload_path,
+                        toolchains_overlay_tarballs,
+                        toolchains_overlay_upload_path,
                         toolchain_tarballs, toolchain_upload_path):
     """Upload a tarball of the sdk at the specified path to Google Storage.
 
@@ -485,10 +486,11 @@
       url_suffix: The remote subdirectory where we should upload the packages.
       prepackaged: If given, a tarball that has been packaged outside of this
                    script and should be used.
-      board_overlay_tarballs: List of board-specific overlay tarball
-        specifications to upload. Items take the form "board:/path/to/tarball".
-      board_overlay_upload_path: Path template under the bucket to place
-        board-specific overlay tarballs.
+      toolchains_overlay_tarballs: List of toolchains overlay tarball
+          specifications to upload. Items take the form
+          "toolchains_spec:/path/to/tarball".
+      toolchains_overlay_upload_path: Path template under the bucket to place
+          toolchains overlay tarballs.
       toolchain_tarballs: List of toolchain tarballs to upload.
       toolchain_upload_path: Path under the bucket to place toolchain tarballs.
     """
@@ -507,12 +509,13 @@
     self._Upload(prepackaged + '.Manifest', remote_tarfile + '.Manifest')
     self._Upload(prepackaged, remote_tarfile)
 
-    # Upload board-specific SDK overlays and toolchain tarballs, if given.
+    # Upload SDK toolchains overlays and toolchain tarballs, if given.
     for tarball_list, upload_path, qualifier_name in (
-        (board_overlay_tarballs, board_overlay_upload_path, 'board'),
+        (toolchains_overlay_tarballs, toolchains_overlay_upload_path,
+         'toolchains'),
         (toolchain_tarballs, toolchain_upload_path, 'target')):
-      for tarball in tarball_list:
-        qualifier_val, local_path = tarball.split(':')
+      for tarball_spec in tarball_list:
+        qualifier_val, local_path = tarball_spec.split(':')
         suburl = upload_path % {qualifier_name: qualifier_val}
         remote_path = toolchain.GetSdkURL(for_gsutil=True, suburl=suburl)
         self._Upload(local_path, remote_path)
@@ -582,7 +585,8 @@
 
   def SyncBoardPrebuilts(self, key, git_sync, sync_binhost_conf,
                          upload_board_tarball, prepackaged_board,
-                         board_overlay_tarballs, board_overlay_upload_path,
+                         toolchains_overlay_tarballs,
+                         toolchains_overlay_upload_path,
                          toolchain_tarballs, toolchain_upload_path):
     """Synchronize board prebuilt files.
 
@@ -594,10 +598,11 @@
           chromiumos-overlay for the current board.
       upload_board_tarball: Include a tarball of the board in our upload.
       prepackaged_board: A tarball of the board built outside of this script.
-      board_overlay_tarballs: List of board-specific overlay tarball
-        specifications to upload. Items take the form "board:/path/to/tarball".
-      board_overlay_upload_path: Path template under the bucket to place
-        board-specific overlay tarballs.
+      toolchains_overlay_tarballs: List of toolchains overlay tarball
+          specifications to upload. Items take the form
+          "toolchains_spec:/path/to/tarball".
+      toolchains_overlay_upload_path: Path template under the bucket to place
+          toolchains overlay tarballs.
       toolchain_tarballs: A list of toolchain tarballs to upload.
       toolchain_upload_path: Path under the bucket to place toolchain tarballs.
     """
@@ -621,13 +626,14 @@
         if upload_board_tarball:
           if toolchain_upload_path:
             toolchain_upload_path %= {'version': version_str}
-          if board_overlay_upload_path:
-            board_overlay_upload_path %= {'version': version_str}
+          if toolchains_overlay_upload_path:
+            toolchains_overlay_upload_path %= {'version': version_str}
           tar_process = multiprocessing.Process(
               target=self._UploadSdkTarball,
               args=(board_path, url_suffix, prepackaged_board,
-                    board_overlay_tarballs, board_overlay_upload_path,
-                    toolchain_tarballs, toolchain_upload_path))
+                    toolchains_overlay_tarballs,
+                    toolchains_overlay_upload_path, toolchain_tarballs,
+                    toolchain_upload_path))
           tar_process.start()
 
         # Upload prebuilts.
@@ -706,16 +712,18 @@
                       help='Board type that was built on this machine')
   parser.add_argument('-B', '--prepackaged-tarball', type='path',
                       help='Board tarball prebuilt outside of this script.')
-  parser.add_argument('--board-overlay-tarball', dest='board_overlay_tarballs',
+  parser.add_argument('--toolchains-overlay-tarball',
+                      dest='toolchains_overlay_tarballs',
                       action='append', default=[],
-                      help='Board-specific toolchain overlay tarball to upload.'
-                           ' Takes the form "board:/path/to/tarball".')
-  parser.add_argument('--board-overlay-upload-path', type='path',
-                      help='Path template for uploading board overlays.')
+                      help='Toolchains overlay tarball specification to '
+                           'upload. Takes the form '
+                           '"toolchains_spec:/path/to/tarball".')
+  parser.add_argument('--toolchains-overlay-upload-path', default='',
+                      help='Path template for uploading toolchains overlays.')
   parser.add_argument('--toolchain-tarball', dest='toolchain_tarballs',
                       action='append', default=[],
                       help='Redistributable toolchain tarball.')
-  parser.add_argument('--toolchain-upload-path', type='path',
+  parser.add_argument('--toolchain-upload-path', default='',
                       help='Path to place toolchain tarballs in the sdk tree.')
   parser.add_argument('--profile',
                       help='Profile that was built on this machine')
@@ -814,8 +822,10 @@
   if options.sync_binhost_conf and not options.binhost_conf_dir:
     parser.error('--sync-binhost-conf requires --binhost-conf-dir')
 
-  if options.board_overlay_tarballs and not options.board_overlay_upload_path:
-    parser.error('--board-overlay-tarball requires --board-overlay-upload-path')
+  if (options.toolchains_overlay_tarballs and
+      not options.toolchains_overlay_upload_path):
+    parser.error('--toolchains-overlay-tarball requires '
+                 '--toolchains-overlay-upload-path')
 
   return options, target
 
@@ -873,7 +883,7 @@
                                 options.sync_binhost_conf,
                                 options.upload_board_tarball,
                                 options.prepackaged_tarball,
-                                options.board_overlay_tarballs,
-                                options.board_overlay_upload_path,
+                                options.toolchains_overlay_tarballs,
+                                options.toolchains_overlay_upload_path,
                                 options.toolchain_tarballs,
                                 options.toolchain_upload_path)