From 5b25d7e6b47a15155b63cdbac0d15ca3246cb064 Mon Sep 17 00:00:00 2001 From: Pavel Raiskup Date: Fri, 12 Jan 2024 21:26:49 +0100 Subject: [PATCH 1/2] dnf5: add groupinstall alias --- mock/py/mockbuild/config.py | 6 +++++- mock/py/mockbuild/package_manager.py | 27 +++++++++++++++++++++++++++ 2 files changed, 32 insertions(+), 1 deletion(-) diff --git a/mock/py/mockbuild/config.py b/mock/py/mockbuild/config.py index 406c33e3b..6815db537 100644 --- a/mock/py/mockbuild/config.py +++ b/mock/py/mockbuild/config.py @@ -324,7 +324,11 @@ def setup_default_config_opts(): config_opts['dnf5_disable_plugins'] = [] # No --allowerasing with remove, per # https://github.com/rpm-software-management/dnf5/issues/729 - config_opts["dnf5_avoid_opts"] = {"remove": ["--allowerasing"]} + config_opts["dnf5_avoid_opts"] = { + "remove": ["--allowerasing"], + "groupinstall": ["--allowerasing"], + "group": ["--allowerasing"], + } config_opts['microdnf_command'] = '/usr/bin/microdnf' # "dnf-install" is special keyword which tells mock to use install but with DNF diff --git a/mock/py/mockbuild/package_manager.py b/mock/py/mockbuild/package_manager.py index b35e2e3d0..4f1f49d69 100644 --- a/mock/py/mockbuild/package_manager.py +++ b/mock/py/mockbuild/package_manager.py @@ -765,3 +765,30 @@ def execute(self, *args, **kwargs): def update(self, *args, **_kwargs): return self.execute('upgrade', *args) + + def initialize_aliases(self): + """ + Koji compatibility fix. Koji uses 'groupinstall' not 'group install' or + 'install @group'. + """ + self.buildroot.root_log.info("configure DNF5 aliases") + if not self.buildroot.bootstrap_buildroot: + self.buildroot.root_log.info("no-op") + return + aliases_path = self.buildroot.bootstrap_buildroot.make_chroot_path('etc/dnf/dnf5-aliases.d/') + file_util.mkdirIfAbsent(aliases_path) + with open(os.path.join(aliases_path, "groupinstall.conf"), "w+", + encoding="utf8") as alias_fd: + alias_fd.write("""version = '1.0' +['groupinstall'] +type = 'command' +attached_command = 'group.install' +descr = "Alias for 'group install'" +group_id = 'commands-compatibility-aliases' +complete = true +""") + + @traceLog() + def initialize_config(self): + super().initialize_config() + self.initialize_aliases() From c34755289eeb0ca8f5a573fc259b03a953b43504 Mon Sep 17 00:00:00 2001 From: Pavel Raiskup Date: Fri, 12 Jan 2024 21:58:24 +0100 Subject: [PATCH 2/2] test --- mock-core-configs/etc/mock/templates/fedora-rawhide.tpl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mock-core-configs/etc/mock/templates/fedora-rawhide.tpl b/mock-core-configs/etc/mock/templates/fedora-rawhide.tpl index 1d9efc8dd..ba0bd4ee3 100644 --- a/mock-core-configs/etc/mock/templates/fedora-rawhide.tpl +++ b/mock-core-configs/etc/mock/templates/fedora-rawhide.tpl @@ -3,7 +3,7 @@ config_opts['root'] = 'fedora-rawhide-{{ target_arch }}' # fedora 31+ isn't mirrored, we need to run from koji config_opts['mirrored'] = config_opts['target_arch'] != 'i686' -config_opts['chroot_setup_cmd'] = 'install @{% if mirrored %}buildsys-{% endif %}build' +config_opts['chroot_setup_cmd'] = 'groupinstall {% if mirrored %}buildsys-{% endif %}build' config_opts['dist'] = 'rawhide' # only useful for --resultdir variable subst config_opts['extra_chroot_dirs'] = [ '/run/lock', ]