John R. Cary Roopa Pundaleeka

Welcome to Bilder!

(This wiki uses Markdown syntax.)

Bilder is a cross-platform (Linux, OS X, Windows), package management system applicable to LCFs,
such the IBM Blue Gene and the Cray series of computers. It automatically downloads packages,
then configures, builds and installs them. It can install in common areas, so that
multiple packages can make use of the same dependency builds.

Give it a shot!

Set up your machine as described in [Preparing your machine for Bilder]. The
check out a repo and build. Here are some examples.

Build ipython, scipy, tables with one command!

This will build these packages and all of their dependencies, which are
ipython scipy tables tornado pyzmq pyqt matplotlib hdf5 numexpr setuptools zeromq Cython qt sip numpy Python atlas clapack_cmake chrpath sqlite bzip2 lapack cmake.

svn checkout https://svn.code.sf.net/p/bilder/code/pypkgs/trunk pypkgs
cd pypkgs

Build the VisIt visualization tool with one command!

This will build VisIt and all its dependencies, which are
visit Imaging visit_vtk qt mesa hdf5 openmpi zlib cmake bzip2.

svn checkout https://svn.code.sf.net/p/bilder/code/visitall/trunk visitall
cd visitall


Bilder: an LCF-applicable, cross-platform, bash-based package management system

Bilder is a meta-build or package management system, i.e., it handles updating and building of a collection of packages and projects that have dependency relationships. When one package is updated, Bilder ensures that its dependents are updated as well.

Bilder was developed to build and install large numbers of packages consistently

As of January 16, 2012, Bilder handles multiple builds of over 150 packages, with the multiple builds being, e.g., serial, parallel, shared, or static, as needed. The platforms include Linux, OS X, AIX, and the specialized Linuces found on the IBM Blue Gene P and the Cray XT4. It handles the compiler sets of gcc, XL, PathScale and PGI.

Bilder is not for replacing build systems. Instead it works with the build systems that come with each package. It supports packages with builds systems of autotools, CMake, qmake, Distutils, and the one-off builds systems of, e.g., lapack, ATLAS, and PETSc. In essence, Bilder acts as a repository of build knowledge.

Bilder has the following characteristics

  • Build workflow automation, handling interpackage dependencies, with builds triggered when a dependency has been built.
  • Uses soft inter-package dependencies: Suppose component A depends on B, and is updated but does not build (fails or is excluded). Attempt to build A anyway if any other dependency is rebuilt or if A is updated, as the newer A may be consistent with an existing installation of B, or A may be able to build without B.
  • Integration with version control systems.
  • Integration with testing.
  • Support for multiple OSs: Linux, OS X, Windows
  • Support for multiple compiler sets (gcc, XL, PGI, PathScale, Visual Studio)
    • LCFs have particular preferred compilers, e.g., for which some libraries have been built
    • Need to compare performance of code generated by different compilers
    • Have to use built libraries (HDF5, Lapack) when possible for performance
  • Ability to use different underlying package configuration/build systems.
  • Support for different kinds of builds (e.g., parallel, serial, static, shared) for any package.
  • Collection of build provenance information, including logging of all steps and notification using emails and dashboards.
  • Allows disabling the builds of particular packages (e.g., so that a system version will be used).
  • Parallel (multi-threaded or multi-process) builds of independent builds or packages.
  • Out of place build and installation: with defaults and also user-specified locations.
  • Defaults for all parameters on all supported platforms that can be overridden by users.
  • Integration with the Jenkins continuous integration tool.
  • Searching for packages within the installation area.
  • Isolation of general logic from specific logic and data
    • General logic in top-level Bilder files
    • Package specific logic and data in package files (the files in the package subdirectory)
    • Machine specific logic and data in machine files (the files in the machines subdirectory)

What does Bilder not handle?

  • Installing compilers
  • Probably much more

Project Admins:


Wiki: Bilder Architecture
Wiki: Bilder Hierarchy
Wiki: Bilder WITH IDE'S
Wiki: Bilder's Build Types
Wiki: Configuring Bilder
Wiki: Debugging your builds
Wiki: Extending Bilder
Wiki: Getting Bilder
Wiki: Linear Algebra Libraries in Bilder
Wiki: Preparing your machine for Bilder
Wiki: Running Bilder
Wiki: Using Defaults Scripts
Wiki: Using Jenkins with Bilder