LCFG Build Tools

Authors of open-source software typically only worry about
distributing a gzipped tar file of their code along with some sort of
build system (a makefile or similar). The act of packaging into an
RPM, Debian package or similar is left to a set of downstream
maintainers who care for their particular distributions. In this
situation there is typically a clear separation of roles, occasionally
you will find someone wearing both hats but this is definitely the
exception.

Contrasting to this approach, LCFG component authors have
traditionally attempted to do both jobs at the same time with no
separation between writing code and generating the package. With the
old LCFG build tools it was not possible to build from a source tar
file or SRPM without already having the tools installed which
drastically limited downstream rebuilding. Packages have traditionally
been generated directly from the CVS for each platform by someone
starting a shell on that platform, changing directory to their working
copy and running "make rpm" This does nothing to ensure that
the package is truly platform independent or rebuildable in a limited
environment, such as a chroot.

The new build tools are designed around the philosophy that
generating a source package for a specific release and building the
binary packages are two completely separate roles. Of course, an
individual may actually carry out both tasks for a particular LCFG
component. It may be possible to do both but the aim of the tools is
to help package authors tag releases of their code and package the
source code. From that source code binary packages can then be built
on any target platform with nothing more than CMake and the local
build tool of choice, e.g. Make on Unix or PackageMaker on
MacOSX. Also, choices made by an author, such as which version-control
system to use for the project, should have no impact on the downstream
users. They should be able to rebuild from source without any
additional information beyond the few commands listed in a README
file.

Work to document the new build tools system is ongoing. Currently
we have documentation on the following: