I have started a new project, by the name of Pungi. This project aims to be a
tool to compose Fedora releases. The goals include simplicity of both code
and interface. I hope it will be a candidate for the Fedora Project's
official tool to create user specific composes of Fedora comprising of both
Core and Extras packages (or just Fedora packages once things merge) as well
as the tool to compose the official Fedora Project spin of Fedora. It should
prove useful to anybody creating a Fedora based distribution as well. The
project is GPLv2 licensed.
How it (I hope) works:
A package list is fed into Pungi, either by comps or some other means. A
set of yum repos to find packages in are also fed in. Pungi will search for
matching packages in the set of repos and add the package to the download
list. The download lost is depclosed (somewhat different than depsolved, no
local rpmdb involved), all the deps that are pulled in are depclosed, etc...
The list of packages is then downloaded into a configured cache dir and
hardlinked into an arch specific dir within a configured destination dir.
Then anaconda provided tools such as buildinstall, pkgorder, and splittree
are ran on the directory of packages turning it into an installable tree and
splitting packages into CD iso sized sets. Mkisofs would be used to create
teh CD isos and DVD iso.
These are the basic steps. The tool could further be extended to run some
simple tree sanity to ensure the compose completed correctly, or other post
processing type things.
How to help:
The code for this project lives in a public mercurial repository:
hg clone http://linux.duke.edu/projects/pungi
Write access is via ssh and can be given upon (validated) request. Discussion
of the project will make use of the fedora-buildsys-list(a)redhat.com mailing
list. There are no web pages (other than the hg-web interface at the above
URL) currently. The source includes information about design and some files
for testing functionality.
Since this is my first 'from scratch' python project, I welcome input not only
on code content but code design, project layout, etc..
Also, even though I work for Red Hat, this is not so much a Red Hat software
project. I'm developing this in the community space, a lot on my own time.
Release Engineer: Fedora