From 05b88e00ecdf1dd0d9d3b7de724786bd7d02ae82 Mon Sep 17 00:00:00 2001 From: David Abdurachmanov Date: Apr 22 2018 07:19:56 +0000 Subject: Add support for tag/target macros for Mageia Discussions with Son_Goku (from Mageia) on IRC revealed that they need per tag/target macro support in Koji. We store tag macros in 'Extra Options' and macro has to start with '%'. Example: % koji taginfo f29 Tag: f29 [11] Arches: riscv64 Groups: Required permission: 'admin' Tag options: %mymacro : 'value123' %packager : 'Fedora Project RISC-V' mock.package_manager : 'dnf' [..] Tag macros can be added using koji edit-tag. The tag macros are allowed to overwrite macros set in koji.genMockConfig. For example, %packager is set in koji.genMockConfig by default. The mock configuration generated by kojid was: [..] config_opts['macros']['%_host'] = 'riscv64-koji-linux-gnu' config_opts['macros']['%mymacro'] = 'value123' config_opts['macros']['%_host_cpu'] = 'riscv64' config_opts['macros']['%vendor'] = 'Fedora Project' config_opts['macros']['%distribution'] = 'Fedora Project' config_opts['macros']['%_topdir'] = '/builddir/build' config_opts['macros']['%_rpmfilename'] = '%%{NAME}-%%{VERSION}-%%{RELEASE}.%%{ARCH}.rpm' config_opts['macros']['%packager'] = 'Fedora Project RISC-V' [..] This two-line change was tested on Fedora RISC-V koji instance. Signed-off-by: David Abdurachmanov --- diff --git a/builder/kojid b/builder/kojid index a058689..b681eac 100755 --- a/builder/kojid +++ b/builder/kojid @@ -251,6 +251,7 @@ class BuildRoot(object): opts['package_manager'] = self.config['extra']['mock.package_manager'] if self.internal_dev_setup is not None: opts['internal_dev_setup'] = bool(self.internal_dev_setup) + opts['tag_macros'] = dict([ _ for _ in self.config['extra'].items() if _[0].startswith('%') ]) output = koji.genMockConfig(self.name, self.br_arch, managed=True, **opts) #write config diff --git a/koji/__init__.py b/koji/__init__.py index 039ef1a..06fef97 100644 --- a/koji/__init__.py +++ b/koji/__init__.py @@ -1517,6 +1517,9 @@ name=build #TODO - track some of these in the db instead? } + # Load tag specific macros, which can override macros above + macros.update(opts.get('tag_macros', [])) + parts = ["""# Auto-generated by the Koji build system """] if managed: