From eacc05b3e9158256c9894796d03905e001944b30 Mon Sep 17 00:00:00 2001 From: Merlin Mathesius Date: Nov 09 2020 20:38:42 +0000 Subject: Add support for using "--release eln" Signed-off-by: Merlin Mathesius --- diff --git a/fedpkg/__init__.py b/fedpkg/__init__.py index 24d9f9e..c070416 100644 --- a/fedpkg/__init__.py +++ b/fedpkg/__init__.py @@ -122,6 +122,8 @@ class Commands(pyrpkg.Commands): # Determine runtime environment self._runtime_disttag = self._determine_runtime_env() + extra_rpmdefines = [] + # We only match the top level branch name exactly. # Anything else is too dangerous and --dist should be used # This regex works until after Fedora 99. @@ -154,6 +156,18 @@ class Commands(pyrpkg.Commands): self._disttag = 'olpc%s' % self._distval self.override = 'dist-olpc%s-override' % self._distval self._distunset = 'rhel' + elif re.match(r'eln$', self.branch_merge): + macros = self._get_build_macros('eln-candidate') + self._distval = macros['eln'] + self._distvar = 'eln' + self._disttag = 'eln%s' % macros['eln'] + self.mockconfig = 'fedora-eln-%s' % self.localarch + self.override = 'eln-override' + self._distunset = 'fedora' + extra_rpmdefines = [ + "--define 'el%s 1'" % macros['rhel'], + "--define 'rhel %s'" % macros['rhel'], + ] # master elif re.match(r'master$', self.branch_merge): self._distval = self._findmasterbranch() @@ -186,6 +200,9 @@ class Commands(pyrpkg.Commands): self._rpmdefines.append("--eval '%%undefine %s'" % self._runtime_disttag) + if extra_rpmdefines: + self._rpmdefines.extend(extra_rpmdefines) + def build_target(self, release): if release == 'master': return 'rawhide' @@ -202,6 +219,31 @@ class Commands(pyrpkg.Commands): """ get the '26' part of 'f26-foo' string """ return dest_tag.split('-')[0].replace('f', '') + def _get_build_macros(self, build_target): + """Get the koji rpm.build.macros for the given build target""" + + if self._kojisession: + session = self.kojisession + else: + session = self.anon_kojisession + + try: + target = session.getBuildTarget(build_target) + except Exception as e: + self.log.error(str(e)) + raise pyrpkg.rpkgError( + 'Cannot access Koji to get build information for {}'.format(build_target)) + + buildcfg = session.getBuildConfig(target['build_tag_name']) + + macros = {} + for extra in buildcfg['extra']: + if extra.startswith('rpm.macro.'): + macroname = extra[len('rpm.macro.'):] + macros[macroname] = buildcfg['extra'][extra] + + return macros + def _findmasterbranch(self): """Find the right "fedora" for master"""