Skip to content
herlo edited this page Oct 18, 2012 · 3 revisions

Mash is the Koji buildsystem to yum repository converter. It simply creates repos from koji based upon a tag and a configuration. Mash also sorts out multilib requirements into the proper repositories.

The GoOSe Project uses a script called mash-repo.sh to ensure mashing ends up in the appropriate location each time.

Mash Configuration

Found in /etc/mash/mash.conf is the configuration file which defines the following:

  • buildhost - where to get the rpms (kojihub)
  • configdir - where to look for mash files
  • repodir - the base directory location for mashed repositories
  • use_sqlite - whether to use sqlite in the repository. Generally yes, unless the repo is quite old.
  • use_repoview - enable repoview for the repository

Mash Files

Mash files define how individual repositories will get created. GoOSe has two configurations (at the time of this writing), one for sketchy repositories and one for beta release candidates.

There are a lot of values that go into a mash file. Here are configurations that might not be self-explanatory:

  • tag - the tag indicates which tag we are mashing from Koji.
  • inherit - whether to inherit from parent tags. It's usually good to set this to true.
  • keys - a comma separated list of GPG signing keys.
  • strict_keys - Determines whether RPMs signed with the keys listed will be mashed.
  • distro_tags - common platform enumeration, a software name/numbering system.

Once a mash configuration and mash file are created, repositories can be mashed. GoOSe Project provides an example mash.conf and beta.mash in the releng repository. Using mash-repo.sh, along with the previous configurations, performing the task of mashing a repo is rather simple:

# ./mash-repo.sh 6.0 Beta RC3 beta
2012-10-17 21:48:58 mash: Getting package lists for gl6-beta...
..snip..
2012-10-17 23:09:31 mash: Depsolve and createrepo finished.
mash done in /mnt/koji/releng/gl6/6.0/Beta-RC3/beta
..snip..

The mashing process can take a long time. This is dependent on how many RPMs are being mashed, which architectures are being mashed and CPU/RAM.

Once complete, the above command would provide a repository at http://koji.gooselinux.org/releases/6.0/Beta-RC3/.