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