RHEL 5.1

Mike Bonnet mikeb at redhat.com
Thu Nov 8 21:56:31 UTC 2007


On Thu, 2007-11-08 at 16:35 -0500, rob myers wrote:
> I know RHEL is a bit off topic for this list, but bear with me.  I
> import all the RHEL5 bits into koji and then use koji to build rpms for
> RHEL5.  The release of RHEL 5.1 gave me a few kinks to work out:
> 
> The RHEL5 supplementary channel includes some noarch packages which do
> not come with source rpms.  This breaks the assumption in mash that
> excludearch and exclusive arch can safely be initialized on SRPMS only.
> I know that mash is not designed for this use case, but I thought it
> might be worth pointing out.  The patch I used is below.
> 
> diff --git a/mash/__init__.py b/mash/__init__.py
> index b02d6c8..6e7a496 100644
> --- a/mash/__init__.py
> +++ b/mash/__init__.py
> @@ -209,6 +209,18 @@ class Mash:
>          # now deal with noarch
>          for pkg in noarch:
>              for target_arch in self.config.arches:
> +
> +                # if excludearch is not set this build likely has no src.rpm
> +                # so set excludearch and exclusivearch from the binary
> +                if pkg['build_id'] fg
> not in excludearch:
> +                    path = os.path.join(koji.pathinfo.build(builds_hash[pkg['build_id']]), koji.pathinfo.rpm(pkg))
> +                    fn = open(path, 'r')
> +                    hdr = koji.get_rpm_header(fn)
> +                    excludearch[pkg['build_id']] = hdr['EXCLUDEARCH']
> +                    exclusivearch[pkg['build_id']] = hdr['EXCLUSIVEARCH']
> +                    fn.close()
> +                    continue
> +
>                  if (excludearch[pkg['build_id']] and has_any(masharch.compat[target_arch], excludearch[pkg['build_id']])) or \
>                          (exclusivearch[pkg['build_id']] and not has_any(masharch.compat[target_arch], exclusivearch[pkg['build_id']])):
>                      print "Excluding %s.%s from %s due to EXCLUDEARCH/EXCLUSIVEARCH" % (pkg['name'], pkg['arch'], target_arch)
> 
> 
> Another problem was that I had already imported RHEL 5.1 beta, which has
> the same rpms in RHEL 5.1 signed with a different key- one that I do not
> have access to.  Since I wanted the rpms written out with the release
> key, I added a function take the 5.1 release sighdrs and add them to the
> previously imported RHEL 5.1 beta rpms. Would anyone else ever need this
> functionality?  The patch I used is below.
> 
> diff --git a/hub/kojihub.py b/hub/kojihub.py
> index f9ba39a..c5a1261 100644
> --- a/hub/kojihub.py
> +++ b/hub/kojihub.py
> @@ -4706,6 +4706,15 @@ class RootExports(object):
>          context.session.assertPerm('sign')
>          return add_rpm_sig(an_rpm, base64.decodestring(data))
>  
> +    def addRPMSigByPath(self, an_rpm, path):
> +        """Store a signature header for an rpm
> +
> +        an_rpm: N-V-R.a (for example)
> +        path: the path to the signed rpm
> +        """
> +        context.session.assertPerm('sign')
> +        return add_rpm_sig(an_rpm, koji.rip_rpm_sighdr(path))
> +
>      findBuildID = staticmethod(find_build_id)
>      getTagID = staticmethod(get_tag_id)
>      getTag = staticmethod(get_tag)
> 
> 
> Comments?

Does the "koji import-sig" command not do what you want?





More information about the Fedora-buildsys-list mailing list