Skip to content

Commit 5ccf7a2

Browse files
committed
[nrf fromlist] west_commands: build: Make the help text responsive to west config
Upstream PR: zephyrproject-rtos/zephyr#74285 Specifically when it comes to sysbuild arguments, the normal help text: --sysbuild create multi domain build system --no-sysbuild do not create multi domain build system (default) is somewhat misleading when `west config build.sysbuild True` is set. This effectively changes the default behavior of `west build`, since when neither argument is provided, it acts as if `--sysbuild` is given. In this situation, a more accurate message would be: --sysbuild create multi domain build system (default, based on west config) --no-sysbuild do not create multi domain build system With this patch, the help message will change depending on whether the value of `build.sysbuild` is true, false, or unset. Signed-off-by: Grzegorz Swiderski <[email protected]> (cherry picked from commit a5f5ff03cec1be02ed3f1a9bc295591f4b0219c2)
1 parent 82a9e1e commit 5ccf7a2

File tree

1 file changed

+27
-9
lines changed

1 file changed

+27
-9
lines changed

scripts/west_commands/build.py

Lines changed: 27 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -151,12 +151,7 @@ def do_add_parser(self, parser_adder):
151151
-DSHIELD... cmake arguments: the results are
152152
undefined''')
153153

154-
group = parser.add_mutually_exclusive_group()
155-
group.add_argument('--sysbuild', action='store_true',
156-
help='''create multi domain build system''')
157-
group.add_argument('--no-sysbuild', action='store_true',
158-
help='''do not create multi domain build system
159-
(default)''')
154+
self._add_sysbuild_args(parser)
160155

161156
group = parser.add_argument_group('pristine builds',
162157
PRISTINE_DESCRIPTION)
@@ -166,6 +161,21 @@ def do_add_parser(self, parser_adder):
166161

167162
return parser
168163

164+
def _add_sysbuild_args(self, parser):
165+
group = parser.add_mutually_exclusive_group()
166+
sysbuild_arg = group.add_argument('--sysbuild', action='store_true',
167+
help='create multi domain build system')
168+
no_sysbuild_arg = group.add_argument('--no-sysbuild', action='store_true',
169+
help='''do not create multi domain
170+
build system''')
171+
172+
# Check whether sysbuild is enabled by default.
173+
# Update the help messages accordingly.
174+
default_sysbuild, comment = self._check_sysbuild_default()
175+
176+
default_arg = sysbuild_arg if default_sysbuild else no_sysbuild_arg
177+
default_arg.help += f' ({comment})'
178+
169179
def do_run(self, args, remainder):
170180
self.args = args # Avoid having to pass them around
171181
self.config_board = config_get('board', None)
@@ -575,12 +585,12 @@ def _run_cmake(self, board, origin, cmake_opts):
575585
if user_args:
576586
cmake_opts.extend(shlex.split(user_args))
577587

578-
config_sysbuild = config_getboolean('sysbuild', False)
579-
if self.args.sysbuild or (config_sysbuild and not self.args.no_sysbuild):
588+
default_sysbuild, _ = self._check_sysbuild_default()
589+
if self.args.sysbuild or (default_sysbuild and not self.args.no_sysbuild):
580590
cmake_opts.extend(['-S{}'.format(SYSBUILD_PROJ_DIR),
581591
'-DAPP_DIR:PATH={}'.format(self.source_dir)])
582592
else:
583-
# self.args.no_sysbuild == True or config sysbuild False
593+
# self.args.no_sysbuild == True or default_sysbuild == False
584594
cmake_opts.extend(['-S{}'.format(self.source_dir)])
585595

586596
# Invoke CMake from the current working directory using the
@@ -662,3 +672,11 @@ def _append_verbose_args(self, extra_args, add_dashes):
662672
if add_dashes:
663673
extra_args.append('--')
664674
extra_args.append('VERBOSE=1')
675+
676+
def _check_sysbuild_default(self):
677+
# Returns tuple: (default boolean, comment string)
678+
config_sysbuild = config_getboolean('sysbuild', None)
679+
if config_sysbuild is not None:
680+
return config_sysbuild, 'default, based on west config'
681+
682+
return False, 'default'

0 commit comments

Comments
 (0)