[PATCH v2 59/60] buildman: Add a way to print the architecture for a board
Simon Glass
sjg at chromium.org
Wed Jul 5 14:19:27 CEST 2023
This is useful for some tools and is easily available for buildman. Add
a new --print-arch option.
Signed-off-by: Simon Glass <sjg at chromium.org>
---
Changes in v2:
- Add new patch to print the architecture for a board
tools/buildman/cmdline.py | 2 ++
tools/buildman/control.py | 24 ++++++++++++++++++++++++
tools/buildman/func_test.py | 7 +++++++
3 files changed, 33 insertions(+)
diff --git a/tools/buildman/cmdline.py b/tools/buildman/cmdline.py
index e295c7aef1a0..41384840427a 100644
--- a/tools/buildman/cmdline.py
+++ b/tools/buildman/cmdline.py
@@ -119,6 +119,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,
diff --git a/tools/buildman/control.py b/tools/buildman/control.py
index 4306d4eb2a7c..8a29534d602f 100644
--- a/tools/buildman/control.py
+++ b/tools/buildman/control.py
@@ -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
@@ -597,6 +617,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)
diff --git a/tools/buildman/func_test.py b/tools/buildman/func_test.py
index aa0838538d23..d89bde1d95e2 100644
--- a/tools/buildman/func_test.py
+++ b/tools/buildman/func_test.py
@@ -812,3 +812,10 @@ CONFIG_LOCALVERSION=y
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())
--
2.41.0.255.g8b1d071c50-goog
More information about the U-Boot
mailing list