Skip to content

How to Cook A GoOSe

Clint Savage edited this page Jan 30, 2014 · 7 revisions

The following is an explanation of what it takes to rebuild enterprise Linux. In the case of the GoOSe Project, our goal is to rebuild an enterprise release from a popular upstream vendor.

  1. Get the upstream target package (binary RPMs) list.

Currently provided by spacewalk-remote-utils from http://spacewalk.redhat.com/yum/. (The future seems to be http://git.centos.org)

  1. Get SRPMs needed to generate target package list
  2. mkdir pkg && cd pkg
  3. git init && touch .gitignore sources && git add .gitignore sources
  4. git commit -m "Initial setup of the pre-review repo"
  5. git checkout -b upstreamver (where upstreamver is something like el6.0)
  6. goosepkg import pkg-0.1-1.el6.src.rpm
  7. git commit -m "initial import of pkg-0.1-1.el6.src.rpm"
  8. git checkout -b gl6.0 (or whatever matches the koji tag)
  9. goosepkg upload <sourcefiles>
  10. git add . && git commit -m "some crazy message" && git push
  11. goosepkg build --nowait, which does
  • create mock chroot
    • git checkout from github repo
      • make sources
        • this fetches the tarball from lookaside cache and compares sha256sum
      • rpmbuild of SRPM
    • new mock chroot
      • rpmbuild of RPMs
    • tag the new build in koji system

Here we end up with a bunch of packages.

  • targets in koji (packages and stuff needed for build steps)
  • tags in koji (packages from output of koji builds)
  1. Sign packages using `sigul`
  2. Organize Stuff
  • Convert packages in koji into yum repos based on tags. Results in 'everything' repo eg /goose/ repo. We use mash.
  • /Updates/ repo will be done the same way.
  1. Compose ISO images using `pungi`

Here we end up with iso images and install trees.

  1. QA stuff
  1. Release management
  • Mirror management mirrormanager
  • mailing list announcements
  • twitter/fb/website announce
  • lifecycle management