The utility for building of AlmaLinux distributions (repos, ISO images).
a435fd58da
The original code could cause a source RPM to be present in two variants that have a dependency relation. There is always only one source repo for a variant in the final compose. When gathering packages for a variant that depends on another variant, we need to build a temporary lookaside repo that has similar content to the parent variant. This lookaside only contained source RPMs for packages present the the architecture. This could result in duplicated SRPMs in the compose. Example situation: * Variant B depends on variant A. * A contains foo.x86_64.rpm (only on x86_64) * B pulls in subpackage foo-bar.s390x.rpm (on s390x) Source repo for A will correctly contain foo.src.rpm. With original code the srpm would also end up in B.src. By adding all sources to the temporary lookaside Pungi will know that source repo for B doesn't need to duplicate the package. The refactoring to use a set to store the packages is meant to avoid listing the same SRPM multiple times in the repo in the most common situation when SRPM is listed in multiple architectures. JIRA: RHELCMP-6002 Signed-off-by: Lubomír Sedlář <lsedlar@redhat.com> |
||
---|---|---|
contrib/yum-dnf-compare | ||
doc | ||
pungi | ||
pungi_utils | ||
share | ||
tests | ||
.gitignore | ||
AUTHORS | ||
COPYING | ||
git-changelog | ||
GPL | ||
Makefile | ||
MANIFEST.in | ||
pungi.spec | ||
README.md | ||
requirements.txt | ||
setup.py | ||
test-requirements.txt | ||
TODO | ||
tox.ini |
Pungi
Pungi is a distribution compose tool.
Composes are release snapshots that contain release deliverables such as:
- installation trees
- RPMs
- repodata
- comps
- (bootable) ISOs
- kickstart trees
- anaconda images
- images for PXE boot
Tool overview
Pungi consists of multiple separate executables backed by a common library.
The main entry-point is the pungi-koji
script. It loads the compose
configuration and kicks off the process. Composing itself is done in phases.
Each phase is responsible for generating some artifacts on disk and updating
the compose
object that is threaded through all the phases.
Pungi itself does not actually do that much. Most of the actual work is delegated to separate executables. Pungi just makes sure that all the commands are invoked in the appropriate order and with correct arguments. It also moves the artifacts to correct locations.
Links
- Documentation: https://docs.pagure.org/pungi/
- Upstream GIT: https://pagure.io/pungi/
- Issue tracker: https://pagure.io/pungi/issues
- Questions can be asked on #fedora-releng IRC channel on FreeNode