From 8527245f56dff56f92e14001986334aa5a7bfadf Mon Sep 17 00:00:00 2001 From: Tom Stellard Date: May 06 2020 14:33:41 +0000 Subject: Support tag specific environment variables This makes it possible to specify an environment variable for a tag that will be used during builds. e.g. koji edit-tag -x rpm.env.CC=clang --- diff --git a/builder/kojid b/builder/kojid index f95cf5f..28a50d7 100755 --- a/builder/kojid +++ b/builder/kojid @@ -293,10 +293,13 @@ class BuildRoot(object): if self.internal_dev_setup is not None: opts['internal_dev_setup'] = bool(self.internal_dev_setup) opts['tag_macros'] = {} + opts['tag_envvars'] = {} for key in self.config['extra']: if key.startswith('rpm.macro.'): macro = '%' + key[10:] opts['tag_macros'][macro] = self.config['extra'][key] + elif key.startswith('rpm.env.'): + opts['tag_envvars'][key[8:]] = self.config['extra'][key] output = koji.genMockConfig(self.name, self.br_arch, managed=True, **opts) # write config diff --git a/docs/source/using_the_koji_build_system.rst b/docs/source/using_the_koji_build_system.rst index bdd1b01..92d1db0 100644 --- a/docs/source/using_the_koji_build_system.rst +++ b/docs/source/using_the_koji_build_system.rst @@ -395,6 +395,15 @@ environment follows: `--old-chroot` option is appended to any mock call. If it is not set, mock's default behavior is used. +You may also specify per-tag environment variables for mock to use. +For example, to set the CC environment variable to clang, you could +do: + +:: + + koji edit-tag dnf-fedora-tag -x rpm.env.CC=clang + + Using Koji to control tasks ^^^^^^^^^^^^^^^^^^^^^^^^^^^ diff --git a/koji/__init__.py b/koji/__init__.py index 717f462..b77cba1 100644 --- a/koji/__init__.py +++ b/koji/__init__.py @@ -1691,6 +1691,13 @@ name=build value = macros[key] parts.append("config_opts['macros'][%r] = %r\n" % (key, value)) parts.append("\n") + envvars = opts.get('tag_envvars', {}) + for key in sorted(envvars): + value = envvars[key] + parts.append("config_opts['environment'][%r] = %r\n" % (key, value)) + if len(envvars): + parts.append("\n") + for key in sorted(files): value = files[key] parts.append("config_opts['files'][%r] = %r\n" % (key, value))