lib.toolchain: partially support bricks

Partial support of bricks by cros_setup_toolchains.py.
cros_setup_toolchains can now detect the architecture for a given brick
when --show-cfg is set to a brick locator.

BUG=brillo:547
TEST=`cros_setup_toolchain --brick=board:gizmo` works

CQ-DEPEND=CL:257473

Change-Id: I9428e03634bb0dcb9e2b38eec67505b84a1e5bc7
Reviewed-on: https://chromium-review.googlesource.com/258522
Reviewed-by: Mike Frysinger <vapier@chromium.org>
Commit-Queue: Bertrand Simonnet <bsimonnet@chromium.org>
Trybot-Ready: Bertrand Simonnet <bsimonnet@chromium.org>
Tested-by: Bertrand Simonnet <bsimonnet@chromium.org>
diff --git a/scripts/cros_setup_toolchains.py b/scripts/cros_setup_toolchains.py
index a081df7..48b4650 100644
--- a/scripts/cros_setup_toolchains.py
+++ b/scripts/cros_setup_toolchains.py
@@ -12,6 +12,7 @@
 import os
 
 from chromite.cbuildbot import constants
+from chromite.lib import brick_lib
 from chromite.lib import commandline
 from chromite.lib import cros_build_lib
 from chromite.lib import osutils
@@ -575,13 +576,16 @@
   RebuildLibtool()
 
 
-def ShowBoardConfig(board):
-  """Show the toolchain tuples used by |board|
+def ShowConfig(name):
+  """Show the toolchain tuples used by |name|
 
   Args:
-    board: The board to query.
+    name: The board name or brick locator to query.
   """
-  toolchains = toolchain.GetToolchainsForBoard(board)
+  if brick_lib.IsLocator(name):
+    toolchains = toolchain.GetToolchainsForBrick(name)
+  else:
+    toolchains = toolchain.GetToolchainsForBoard(name)
   # Make sure we display the default toolchain first.
   print(','.join(
       toolchain.FilterToolchains(toolchains, 'default', True).keys() +
@@ -1000,9 +1004,9 @@
                       dest='hostonly', default=False, action='store_true',
                       help='Only setup the host toolchain. '
                            'Useful for bootstrapping chroot')
-  parser.add_argument('--show-board-cfg',
-                      dest='board_cfg', default=None,
-                      help='Board to list toolchain tuples for')
+  parser.add_argument('--show-board-cfg', '--show-cfg',
+                      dest='cfg_name', default=None,
+                      help='Board or brick to list toolchains tuples for')
   parser.add_argument('--create-packages',
                       action='store_true', default=False,
                       help='Build redistributable packages')
@@ -1015,15 +1019,15 @@
   options.Freeze()
 
   # Figure out what we're supposed to do and reject conflicting options.
-  if options.board_cfg and options.create_packages:
+  if options.cfg_name and options.create_packages:
     parser.error('conflicting options: create-packages & show-board-cfg')
 
   targets = set(options.targets.split(','))
   boards = (set(options.include_boards.split(',')) if options.include_boards
             else set())
 
-  if options.board_cfg:
-    ShowBoardConfig(options.board_cfg)
+  if options.cfg_name:
+    ShowConfig(options.cfg_name)
   elif options.create_packages:
     cros_build_lib.AssertInsideChroot()
     Crossdev.Load(False)