How to Cook A GoOSe - gooseproject/main GitHub Wiki

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
⚠️ **GitHub.com Fallback** ⚠️