b48b289
From 89d3bb0d34250fe24eed5bc63edd992e932a622a Mon Sep 17 00:00:00 2001
b48b289
From: =?UTF-8?q?Ond=C5=99ej=20Nosek?= <onosek@redhat.com>
b48b289
Date: Wed, 15 Nov 2023 02:53:10 +0100
b48b289
Subject: [PATCH 14/17] `mockbuild`: new argument --extra-pkgs
b48b289
MIME-Version: 1.0
b48b289
Content-Type: text/plain; charset=UTF-8
b48b289
Content-Transfer-Encoding: 8bit
b48b289
b48b289
Added the new argument `--extra-pkgs` to `mockbuild` command.
b48b289
It installs additional packages to mock's chroot. In some cases is
b48b289
possible to use the current mechanism of extra args placed
b48b289
after `--` at the end of the command line instead of `--extra-pkgs`.
b48b289
b48b289
  Example: fedpkg mockbuild -- --additional-package <pkg>
b48b289
b48b289
Argument(s) `additional-package` is passed to `mock`.
b48b289
`additional-package` can't be used together with `--shell`.
b48b289
b48b289
JIRA: RHELCMP-11017
b48b289
Fixes: https://pagure.io/fedpkg/issue/498
b48b289
b48b289
Signed-off-by: Ondřej Nosek <onosek@redhat.com>
b48b289
---
b48b289
 pyrpkg/cli.py | 21 +++++++++++++++++++++
b48b289
 1 file changed, 21 insertions(+)
b48b289
b48b289
diff --git a/pyrpkg/cli.py b/pyrpkg/cli.py
b48b289
index 6fd6df0..06f4c1a 100644
b48b289
--- a/pyrpkg/cli.py
b48b289
+++ b/pyrpkg/cli.py
b48b289
@@ -1152,6 +1152,9 @@ class cliClient(object):
b48b289
             '--use-local-mock-config', default=None, dest="local_mock_config",
b48b289
             action='store_true',
b48b289
             help="Enforce use of local Mock configuration.")
b48b289
+        mockbuild_parser.add_argument(
b48b289
+            '--extra-pkgs', action='append', nargs='*',
b48b289
+            help="Install additional packages into chroot")
b48b289
 
b48b289
         mockbuild_parser.set_defaults(command=self.mockbuild)
b48b289
 
b48b289
@@ -2514,6 +2517,24 @@ class cliClient(object):
b48b289
                                                  "%s-%s-%s.src.rpm"
b48b289
                                                  % (self.cmd.repo_name, self.cmd.ver, self.cmd.rel))
b48b289
                 self.log.debug('Srpm generated: {0}'.format(self.cmd.srpmname))
b48b289
+            if self.args.extra_pkgs:
b48b289
+                mockargs_extra_pkgs = []
b48b289
+                list_extra_pkgs = []
b48b289
+                # process possible multiple argument's occurrences
b48b289
+                for arg_arr in self.args.extra_pkgs:
b48b289
+                    for additional_package in arg_arr:
b48b289
+                        mockargs_extra_pkgs.extend(['--additional-package', additional_package])
b48b289
+                        list_extra_pkgs.append(additional_package)
b48b289
+                # installation will run in separated mock process, so do not clean prepared chroot
b48b289
+                # before the main mock run
b48b289
+                mockargs_extra_pkgs.extend(['--no-cleanup-after'])
b48b289
+                self.log.info('Installing extra packages into the mock chroot: {}'.format(
b48b289
+                    ', '.join(list_extra_pkgs)))
b48b289
+                self.cmd.mockbuild(mockargs_extra_pkgs, self.args.root,
b48b289
+                                   hashtype=self.args.hash,
b48b289
+                                   shell=None,  # nosec
b48b289
+                                   force_local_mock_config=self.args.local_mock_config)
b48b289
+
b48b289
             self.cmd.mockbuild(mockargs, self.args.root,
b48b289
                                hashtype=self.args.hash,
b48b289
                                shell=self.args.shell,  # nosec
b48b289
-- 
b48b289
2.43.0
b48b289