Added draft on initial announce email as I keep adding to it.
This commit is contained in:
parent
77684f0271
commit
7e62446b3e
107
ANNOUNCE
Normal file
107
ANNOUNCE
Normal file
@ -0,0 +1,107 @@
|
|||||||
|
Announcing lorax-0.1
|
||||||
|
|
||||||
|
"I am the Lorax, I speak for the trees."
|
||||||
|
|
||||||
|
(and images)
|
||||||
|
|
||||||
|
|
||||||
|
WHAT IS IT
|
||||||
|
----------
|
||||||
|
|
||||||
|
lorax is a replacement for the buildinstall maze of scripts and tools we
|
||||||
|
have in anaconda. It is written in Python in the hopes that it will be
|
||||||
|
easier to hook in to programs like pungi.
|
||||||
|
|
||||||
|
It also moves the tools that generate installation images in to a separate
|
||||||
|
project from anaconda itself.
|
||||||
|
|
||||||
|
|
||||||
|
WHAT DOES IT REPLACE?
|
||||||
|
---------------------
|
||||||
|
|
||||||
|
All of these things from the anaconda source tree:
|
||||||
|
|
||||||
|
scripts/buildinstall
|
||||||
|
scripts/buildinstall.functions
|
||||||
|
scripts/makestamp.py
|
||||||
|
scripts/maketreeinfo.py
|
||||||
|
scripts/mk-images
|
||||||
|
scripts/mk-images.alpha
|
||||||
|
scripts/mk-images.efi
|
||||||
|
scripts/mk-images.ia64
|
||||||
|
scripts/mk-images.ppc
|
||||||
|
scripts/mk-images.s390
|
||||||
|
scripts/mk-images.x86
|
||||||
|
scripts/scrubtree
|
||||||
|
scripts/upd-instroot
|
||||||
|
|
||||||
|
utils/trimpciids
|
||||||
|
utils/mk-s390-cdboot.c
|
||||||
|
utils/filtermoddeps
|
||||||
|
utils/geninitrdsz.c
|
||||||
|
utils/genmodinfo
|
||||||
|
utils/modlist
|
||||||
|
|
||||||
|
|
||||||
|
WHY REWRITE BUILDINSTALL
|
||||||
|
------------------------
|
||||||
|
|
||||||
|
The buildinstall scripts were magic and maintaining them was sort of an art
|
||||||
|
form. The entire collection of tools used in a buildinstall run are written
|
||||||
|
in bash, Perl, Python, and C. Maintenance nightmare.
|
||||||
|
|
||||||
|
The way packages were specified for inclusion in the instroot as well as
|
||||||
|
what files were to be kept or removed were specified in the upd-instroot
|
||||||
|
script. Again, difficult maintenance.
|
||||||
|
|
||||||
|
Lorax is intended to mostly be a drop-in replacement for buildinstall. The
|
||||||
|
frontend program accepts the same command line arguments as buildinstall,
|
||||||
|
but all of the work is done through the pylorax Python module rather than
|
||||||
|
separate scripts or programs.
|
||||||
|
|
||||||
|
|
||||||
|
MAJOR CHANGES
|
||||||
|
-------------
|
||||||
|
|
||||||
|
Aside from offering a standalone tool that replaces the buildinstall script
|
||||||
|
collection and being written in Python, lorax introduces some policy changes
|
||||||
|
for how install images are generated.
|
||||||
|
|
||||||
|
(a) Keep everything by default, remove listed items.
|
||||||
|
|
||||||
|
In the buildinstall scripts, we have the KEEPFILE set of variables that
|
||||||
|
define what files (by wildcard or explicit names) we want to keep in a
|
||||||
|
particular image. The standard policy for buildinstall is to unpack a set
|
||||||
|
of packages (listed in PACKAGES variables) and then remove everything not
|
||||||
|
explicitly listed in a KEEPFILE variable. This aspect causes a lot of
|
||||||
|
maintenance headaches.
|
||||||
|
|
||||||
|
The lorax approach is to trust yum and package maintainers to give us what
|
||||||
|
we want. We define a set of packages we want for the image using
|
||||||
|
configuration files in /etc/lorax. Using yum, the packages are installed to
|
||||||
|
the staging root tree. Then tree scrubbing takes place, which is
|
||||||
|
customizable by the user. So, the default policy of lorax is to keep
|
||||||
|
everything a package gives us and only remove things explicitly listed for
|
||||||
|
the scrub operation.
|
||||||
|
|
||||||
|
(b) Maintain image building tools as a separate project.
|
||||||
|
|
||||||
|
If release engineering needs to regenerate trees for a nightly build because
|
||||||
|
a problem was encountered during image building, that requires a new
|
||||||
|
anaconda build to show up. Lorax allows customization through configuration
|
||||||
|
files and in cases where bugs are discovered in it, a new release can be
|
||||||
|
made independent of anaconda.
|
||||||
|
|
||||||
|
Lorax can (and should) be maintained jointly by releng and the anaconda team.
|
||||||
|
|
||||||
|
(c) Logic is in the pylorax module.
|
||||||
|
|
||||||
|
Pungi may ultimately import the pylorax module to generate images rather
|
||||||
|
than running the lorax command line tool. Better integration in to Pungi
|
||||||
|
is a goal of lorax.
|
||||||
|
|
||||||
|
|
||||||
|
And there you have it. Lorax.
|
||||||
|
|
||||||
|
--
|
||||||
|
David Cantrell <dcantrell@redhat.com>
|
Loading…
Reference in New Issue
Block a user