On Fri, Mar 12, 2021 at 06:28:19PM +0100, Andrea Bolognani wrote:
This simply calls the underlying Makefile target, but allows
additional arguments to be specified in a more convenient and
discoverable way.
Signed-off-by: Andrea Bolognani <abologna(a)redhat.com>
---
ci/helper | 33 ++++++++++++++++++++++++++++++++-
1 file changed, 32 insertions(+), 1 deletion(-)
diff --git a/ci/helper b/ci/helper
index 8eb521ae40..4a552595df 100755
--- a/ci/helper
+++ b/ci/helper
@@ -55,6 +55,20 @@ class Parser:
help="use container images with non-default tags",
)
+ # Options that are common to all actions that call the
+ # project's build system
+ mesonparser = argparse.ArgumentParser(add_help=False)
+ mesonparser.add_argument(
+ "--meson-args",
+ default="",
+ help="additional arguments passed to meson",
MESON_ARGS are tricky, because --meson-args "-Doption=val" won't work as
you'd
expect and that's because argparse cannot handle a dash in the name of the
option value. However, they at least fixed it for the 'key=val' syntax [1], so
I'd suggest giving an example in the help string, how --meson-args should be
specified on the cmdline, otherwise it's confusing why it doesn't work with
the syntax outlined in the help string.
[1]
https://github.com/bw2/ConfigArgParse/pull/160
Reviewed-by: Erik Skultety <eskultet(a)redhat.com>
+ )
+ mesonparser.add_argument(
+ "--ninja-args",
+ default="",
+ help="additional arguments passed to ninja",
+ )
+
# Options that are common to all actions that use lcitool
lcitoolparser = argparse.ArgumentParser(add_help=False)
lcitoolparser.add_argument(
@@ -72,6 +86,14 @@ class Parser:
)
subparsers.required = True
+ # build action
+ buildparser = subparsers.add_parser(
+ "build",
+ help="run a build in a container",
+ parents=[containerparser, mesonparser],
+ )
+ buildparser.set_defaults(func=Application.action_build)
+
# shell action
shellparser = subparsers.add_parser(
"shell",
@@ -115,7 +137,7 @@ class Application:
target,
]
- if self.args.action == "shell":
+ if self.args.action in ["build", "shell"]:
args.extend([
f"CI_ENGINE={self.args.engine}",
f"CI_USER_LOGIN={self.args.login}",
@@ -123,6 +145,12 @@ class Application:
f"CI_IMAGE_TAG={self.args.image_tag}",
])
+ if self.args.action == "build":
+ args.extend([
+ f"CI_MESON_ARGS={self.args.meson_args}",
+ f"CI_NINJA_ARGS={self.args.ninja_args}",
+ ])
+
if pty.spawn(["make"] + args) != 0:
sys.exit("error: 'make' failed")
@@ -200,6 +228,9 @@ class Application:
print(f"cirrus/{host}")
self.generate_vars(host)
+ def action_build(self):
+ self.make_run(f"ci-build(a){self.args.target}")
+
def action_shell(self):
self.make_run(f"ci-shell(a){self.args.target}")
--
2.26.2