[PATCH 1/1] buildman: allow specifying configuration fragments
Heinrich Schuchardt
heinrich.schuchardt at canonical.com
Fri Dec 20 01:21:55 CET 2024
Currently we are no able to build with configuration fragments in our CI.
With this patch buildman gets a new argument --fragments for passing a
comma separated list of configuration fragments to add to the board
defconfigs.
tools/buildman/buildman \
-o build \
-k qemu-riscv64_smode \
--fragments acpi.config
Signed-off-by: Heinrich Schuchardt <heinrich.schuchardt at canonical.com>
---
tools/buildman/builder.py | 3 ++-
tools/buildman/builderthread.py | 18 +++++++++++-------
tools/buildman/cmdline.py | 2 ++
tools/buildman/control.py | 2 +-
4 files changed, 16 insertions(+), 9 deletions(-)
diff --git a/tools/buildman/builder.py b/tools/buildman/builder.py
index cbf1345281b..28a25e965ce 100644
--- a/tools/buildman/builder.py
+++ b/tools/buildman/builder.py
@@ -1783,7 +1783,7 @@ class Builder:
shutil.rmtree(dirname)
terminal.print_clear()
- def build_boards(self, commits, board_selected, keep_outputs, verbose):
+ def build_boards(self, commits, board_selected, keep_outputs, verbose, fragments=''):
"""Build all commits for a list of boards
Args:
@@ -1821,6 +1821,7 @@ class Builder:
job.keep_outputs = keep_outputs
job.work_in_output = self.work_in_output
job.adjust_cfg = self.adjust_cfg
+ job.fragments = fragments
job.step = self._step
if self.num_threads:
self.queue.put(job)
diff --git a/tools/buildman/builderthread.py b/tools/buildman/builderthread.py
index b5afee61aff..090388940f8 100644
--- a/tools/buildman/builderthread.py
+++ b/tools/buildman/builderthread.py
@@ -383,7 +383,7 @@ class BuilderThread(threading.Thread):
def _config_and_build(self, commit_upto, brd, work_dir, do_config, mrproper,
config_only, adjust_cfg, commit, out_dir, out_rel_dir,
- result):
+ fragments, result):
"""Do the build, configuring first if necessary
Args:
@@ -397,6 +397,7 @@ class BuilderThread(threading.Thread):
commit (Commit): Commit only being built
out_dir (str): Output directory for the build
out_rel_dir (str): Output directory relatie to the current dir
+ fragments (str): config fragments add to defconfig
result (CommandResult): Previous result
Returns:
@@ -412,6 +413,8 @@ class BuilderThread(threading.Thread):
args, cwd, src_dir = self._build_args(brd, out_dir, out_rel_dir,
work_dir, commit_upto)
config_args = [f'{brd.target}_defconfig']
+ if fragments != None:
+ config_args.extend(fragments.split(','))
config_out = io.StringIO()
_remove_old_outputs(out_dir)
@@ -450,7 +453,7 @@ class BuilderThread(threading.Thread):
def run_commit(self, commit_upto, brd, work_dir, do_config, mrproper,
config_only, force_build, force_build_failures,
- work_in_output, adjust_cfg):
+ work_in_output, adjust_cfg, fragments):
"""Build a particular commit.
If the build is already done, and we are not forcing a build, we skip
@@ -475,6 +478,7 @@ class BuilderThread(threading.Thread):
~C to disable C
C=val to set the value of C (val must have quotes if C is
a string Kconfig
+ fragments (str): config fragments add to defconfig
Returns:
tuple containing:
@@ -504,7 +508,7 @@ class BuilderThread(threading.Thread):
result, do_config = self._config_and_build(
commit_upto, brd, work_dir, do_config, mrproper,
config_only, adjust_cfg, commit, out_dir, out_rel_dir,
- result)
+ fragments, result)
result.already_done = False
result.toolchain = self.toolchain
@@ -697,7 +701,7 @@ class BuilderThread(threading.Thread):
self.builder.config_only,
force_build or self.builder.force_build,
self.builder.force_build_failures,
- job.work_in_output, job.adjust_cfg)
+ job.work_in_output, job.adjust_cfg, job.fragments)
failed = result.return_code or result.stderr
did_config = do_config
if failed and not do_config and not self.mrproper:
@@ -708,7 +712,7 @@ class BuilderThread(threading.Thread):
brd, work_dir, True,
self.mrproper or self.builder.fallback_mrproper,
False, True, False, job.work_in_output,
- job.adjust_cfg)
+ job.adjust_cfg, job.fragments)
did_config = True
if not self.builder.force_reconfig:
do_config = request_config
@@ -754,14 +758,14 @@ class BuilderThread(threading.Thread):
result, request_config = self.run_commit(None, brd, work_dir, True,
self.mrproper, self.builder.config_only, True,
self.builder.force_build_failures, job.work_in_output,
- job.adjust_cfg)
+ job.adjust_cfg, job.fragments)
failed = result.return_code or result.stderr
if failed and not self.mrproper:
result, request_config = self.run_commit(None, brd, work_dir,
True, self.builder.fallback_mrproper,
self.builder.config_only, True,
self.builder.force_build_failures,
- job.work_in_output, job.adjust_cfg)
+ job.work_in_output, job.adjust_cfg, job.fragments)
result.commit_upto = 0
self._write_result(result, job.keep_outputs, job.work_in_output)
diff --git a/tools/buildman/cmdline.py b/tools/buildman/cmdline.py
index 7573e5bdfe8..38ea7f9f335 100644
--- a/tools/buildman/cmdline.py
+++ b/tools/buildman/cmdline.py
@@ -62,6 +62,8 @@ def add_upto_m(parser):
help="Fetch a toolchain for architecture FETCH_ARCH ('list' to list)."
' You can also fetch several toolchains separate by comma, or'
" 'all' to download all")
+ parser.add_argument('--fragments', type=str,
+ help="Comma separated list of configuration fragments to be applied")
parser.add_argument(
'--full-check', action='store_true',
help='Check maintainer entries and TARGET configs')
diff --git a/tools/buildman/control.py b/tools/buildman/control.py
index 55d4d770c5c..a668783b4d4 100644
--- a/tools/buildman/control.py
+++ b/tools/buildman/control.py
@@ -561,7 +561,7 @@ def run_builder(builder, commits, board_selected, args):
builder.show_summary(commits, board_selected)
else:
fail, warned, excs = builder.build_boards(
- commits, board_selected, args.keep_outputs, args.verbose)
+ commits, board_selected, args.keep_outputs, args.verbose, args.fragments)
if excs:
return 102
if fail:
--
2.47.1
More information about the U-Boot
mailing list