108 lines
		
	
	
		
			3.5 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			108 lines
		
	
	
		
			3.5 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
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>
 |