Reproducible Build Manager (rbm) is a tool that helps you create and build packages for multiple linux distributions, and automate the parts that can be automated. It includes options to run the build in a defined environement to allow reproducing the build.
It can be used to create rpm, debian and other types of packages.
Who wants to use rbm ?
There are different use cases for rbm :
- easy package creation
-
You have multiple people in your team working on the developement of your software, and you want them all to be able to build a package from any git or mercurial revision using a simple command.
- continuous integration
-
Automatically build packages for the latest version of you software available in your git or mercurial repository.
- multi distro packaging
-
You want to create packages for your software for different distributions.
- regular package maintainance
-
You maintain a lot of packages for software available in git or mercurial repositories, and you want to avoid the boring tasks of manually creating / downloading tarballs, checking signatures, updating package versions and want to automate as much as possible.
Main features
- tarball creation
-
Create tarballs for your software using a simple command and a git or mercurial revision.
- automatic verification of gpg signatures
-
If your git commits or git tags are gpg signed, the signature can be automatically checked using a specified keyring.
- package creation
-
Create binary or source packages from any git or mercurial revision using a simple command.
- remote builds
-
Build your software on a remote server with ssh, or in a local chroot using a different OS. For instance if you are using rbm on an rpm based distribution, this allows you to build debian packages from the same workspace, using a Debian chroot.
- customizable
-
Almost everything rbm do can be changed using some optional settings, globally, or for some selected projects or OSs.
- simple configuration
-
The configuration is done using simple YAML files.
- a flexible configuration system
-
All settings can be set globally, per workspace, project, or target operating system.
- a dynamic configuration system
-
All configuration settings are templates. You can reuse other configuration settings, or the output of some commands in those settings. For instance, the version number of your software can be set using a command to grep the README file in your sources tree.
- extensible in perl
-
While the configuration is usually done in simple YAML, you can also in the same configuration file use perl to define any of the options. Those options can be defined by a perl function that will be executed when the option is queried, and whose return value will be used as the option value.
Documentation
All documentation is also available as man pages.
-
rbm_tutorial(7) : A tutorial introduction to rbm
-
rbm_layout(7) : The rbm layout
-
rbm_config(7) : The rbm configuration
-
rbm_cli(7) : The rbm command line interface
-
rbm_templates(7) : The rbm templates
-
rbm_remote(7) : The rbm remote builds
-
rbm_input_files(7) : The input files configuration
-
rbm_targets(7) : The targets configuration
-
rbm_steps(7) : The steps configuration
rbm commands :
Download and installation
The sources are available on https://gitweb.torproject.org/builders/rbm.git/.
The recommanded way to use rbm to build your project is to use it as a git submodule so you can pick the commit to use.
Examples
You can look at the Tor Browser build repository for an example of how it can be used.
License
rbm is public domain or CC0. Click here for legal code.
Contact
You can email me for any question about rbm.
TODO
There is a list of things that are already planned for future versions of rbm. You can see it on this page.
You can also view the changelog here.