skip to main content

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:

  1. Installation Guide
  2. Basic Anatomy of a Component
  3. The Build Tools Metadata File
  4. Creating a New Project
  5. The Release Tools
  6. Substitution Variables
  7. CMake macros
  8. CMake Recipes
  9. Converting from the Old System
  10. Adding New Commands to the Release Tool