From Fedora Project Wiki

Pungi Overview

Pungi is set of tools which is used by Release Engineering to create composes of Fedora and RHEL. Compose is currently one big process which does everything from depsolving to creation of rpm repos, isos, docker images.

The goal here is to split whole tool into several scripts doing just one thing right. Output of such tool would be wrapped into metadata (preferably json with python-library see productmd) so other tool can take it as input.

These individual tools would be

  • pungi-gather - takes some core packages as input (comps, json) , source repo for rpms (koji/local repo), some depsolving rules) and produces something that I'd like to call static manifest which would be list of NEVRAs linked into variant (type=(module|variant|addon ...)
  • pungi-createrepo - takes output as pungi-gather as input + configuration for pungi-createrepo (saying which checksum, which createrepo (createrepo|createrepo_c) ..., variant configuration (custom paths ...) ) and produces repositories in a tree wrapped by productmd metadata
  • pungi-createiso - takes output from pungi-createrepo as input + configuration for pungi-createiso (extra files (README), product information (ISO Labels) ) and produces iso files
  • pungi-image-build


Sources for prototype


How to get started

git clone
cd pungi-modularity

pungi-modularity/ # this will checkout all pungi parts into @PWD

  1. You'll need to download some repository with fedora-x86-64 + related src packages and place it into modularity/fedora-24-x86_64-repo # default for attached configs

./ /path/to/static-manifest-dir-output-by-pungi-gather