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 <abolo...@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",
+        )
+        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@{self.args.target}")
+
     def action_shell(self):
         self.make_run(f"ci-shell@{self.args.target}")
 
-- 
2.26.2

Reply via email to