The build & upload reproducible packaging system (burps) is a tool that help you create and build packages for multiple linux distributions, and automate the parts that can be automated.
It currently supports rpm and debian packages.
Who wants to use burps ?
There are different use cases for burps :
- 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 revision using a simple command.
- continuous integration
Automatically build packages for the latest version of you software available in your git 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 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.
- tarball creation
Create tarballs for your software using a simple command and a git 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 revision using a simple command.
- packages upload
Upload the packages that you have built to a repository and update metadata.
- multi-os support
RPM and debian packages are currently supported. Support for more packaging systems could easily be added. Using package templates and the Template Toolkit, you can make different packages for different distributions using the same files. The syntax of this templating system is much more clear and powerful than the RPM macros syntax.
- 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 burps on an rpm based distribution, this allows you to build debian packages from the same workspace, using a Debian chroot.
Almost everything burps 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.
All documentation is also available as man pages.
burps_tutorial(7) : A tutorial introduction to burps
burps_layout(7) : The burps layout
burps_config(7) : The burps configuration
burps_cli(7) : The burps command line interface
burps_templates(7) : The burps templates
burps_remote(7) : The burps remote builds
burps_distributions(7) : The distributions configuration
burps_input_files(7) : The input files configuration
burps_targets(7) : The targets configuration
burps commands :
Download and installation
The sources are available on github.
Packages will soon be available for various distributions.
An example of package templates and configuration is available in this git repository.
burps is public domain or CC0. Click here for legal code.
You can email me for any question about burps.