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
Sources for prototype
- pungi-modularity (configuration files and executables for rest tools) https://pagure.io/pungi-modularity
- pungi-gather https://pagure.io/fork/lkocman/pungi/branch/modularity-pungi-gather-only
- pungi (pungi-createrepo, pungi-createiso https://pagure.io/fork/lkocman/pungi/branch/modularity
- productmd - the metadata glue for composes https://github.com/lkocman/productmd/tree/modularity
- Building distribution the RedHat way (presentation + tarball with examples) - http://people.redhat.com/~lkocman/
- this specific demo is using upstream pungi not the one for modularity)
- pungi configuration - https://pagure.io/fork/lkocman/pungi/blob/modularity/f/doc/configuration.rst
- pungi-gather configuration (The depsolver) - https://pagure.io/fork/lkocman/pungi/blob/modularity-pungi-gather-only/f/doc/pungi-gather-configuration.rst