]> git.dujemihanovic.xyz Git - u-boot.git/commitdiff
buildman: Add a way to print the architecture for a board
authorSimon Glass <sjg@chromium.org>
Wed, 19 Jul 2023 23:49:28 +0000 (17:49 -0600)
committerSimon Glass <sjg@chromium.org>
Mon, 24 Jul 2023 15:34:11 +0000 (09:34 -0600)
This is useful for some tools and is easily available for buildman. Add
a new --print-arch option.

Signed-off-by: Simon Glass <sjg@chromium.org>
tools/buildman/cmdline.py
tools/buildman/control.py
tools/buildman/func_test.py

index e218c8ffae761efae87cdb914cdbd41719211e46..047cd1a39eabb1d1235748a8e9f067446849d6b0 100644 (file)
@@ -122,6 +122,8 @@ def add_after_m(parser):
           default=False, help="Use full toolchain path in CROSS_COMPILE")
     parser.add_argument('-P', '--per-board-out-dir', action='store_true',
           default=False, help="Use an O= (output) directory per board rather than per thread")
+    parser.add_argument('--print-arch', action='store_true',
+          default=False, help="Print the architecture for a board (ARCH=)")
     parser.add_argument('-r', '--reproducible-builds', action='store_true',
           help='Set SOURCE_DATE_EPOCH=0 to suuport a reproducible build')
     parser.add_argument('-R', '--regen-board-list', type=str,
index e6c20d6d3b6eff462e433398503741de9a24d2ba..c96018252a57bbe3d686ea3cf2e0660aa54028da 100644 (file)
@@ -140,6 +140,26 @@ def show_toolchain_prefix(brds, toolchains):
     tchain = tc_set.pop()
     print(tchain.GetEnvArgs(toolchain.VAR_CROSS_COMPILE))
 
+def show_arch(brds):
+    """Show information about a the architecture used by one or more boards
+
+    The function checks that all boards use the same architecture, then prints
+    the correct value for ARCH.
+
+    Args:
+        boards: Boards object containing selected boards
+
+    Return:
+        None on success, string error message otherwise
+    """
+    board_selected = brds.get_selected_dict()
+    arch_set = set()
+    for brd in board_selected.values():
+        arch_set.add(brd.arch)
+    if len(arch_set) != 1:
+        sys.exit('Supplied boards must share one arch')
+    print(arch_set.pop())
+
 def get_allow_missing(opt_allow, opt_no_allow, num_selected, has_branch):
     """Figure out whether to allow external blobs
 
@@ -605,6 +625,10 @@ def do_buildman(args, toolchains=None, make_func=None, brds=None,
         show_toolchain_prefix(brds, toolchains)
         return 0
 
+    if args.print_arch:
+        show_arch(brds)
+        return 0
+
     series = determine_series(selected, col, git_dir, args.count,
                               args.branch, args.work_in_output)
 
index 126ea9e11f0031b7f11650ec935441ad3351e9c7..58a9bf33ab3b704b22b0e6618c7fd5ccd0055885 100644 (file)
@@ -1060,3 +1060,10 @@ endif
 
         self._RunControl('--boards', 'board1,board2', '--boards', 'board4')
         self.assertEqual(3, self._builder.count)
+
+    def test_print_arch(self):
+        """Test that we can print the board architecture"""
+        with test_util.capture_sys_output() as (stdout, stderr):
+            result = self._RunControl('--print-arch', 'board0')
+        self.assertEqual('arm\n', stdout.getvalue())
+        self.assertEqual('', stderr.getvalue())