ratt (“Rebuild All The Things!”) operates on a Debian .changes file of a just-built package, identifies all reverse-build-dependencies and rebuilds them with the .debs from the .changes file.
The intended use-case is, for example, to package a new snapshot of a Go library and verify that the new version does not break any other Go libraries/binaries.
Please install ratt from Debian. In case you want to hack on ratt, you can use the following commands to install Go, download ratt from git and compile/install it into your $GOPATH
:
sudo apt-get install golang-go
export GOPATH=~/gocode
go get -u github.com/Debian/ratt
Start the resulting binary in ~/gocode/bin/ratt
:
~/gocode/bin/ratt -help
After making changes to the code, to recompile and install it again, use:
go install github.com/Debian/ratt
Let’s assume you build a new version of a Go library, like so:
debcheckout golang-github-jacobsa-gcloud-dev
cd golang-github-jacobsa-gcloud-dev
dch -i -m 'dummy new version'
git commit -a -m 'dummy new version'
gbp buildpackage --git-pbuilder
Now you can use ratt to identify and rebuild all reverse-build-dependencies:
$ ratt golang-github-jacobsa-gcloud_0.0\~git20150709-2_amd64.changes
2015/08/16 11:48:41 Loading changes file "golang-github-jacobsa-gcloud_0.0~git20150709-2_amd64.changes"
2015/08/16 11:48:41 - 1 binary packages: golang-github-jacobsa-gcloud-dev
2015/08/16 11:48:41 - corresponding .debs (will be injected when building):
2015/08/16 11:48:41 golang-github-jacobsa-gcloud-dev_0.0~git20150709-2_all.deb
2015/08/16 11:48:41 Loading sources index "/var/lib/apt/lists/ftp.ch.debian.org_debian_dists_sid_contrib_source_Sources"
2015/08/16 11:48:41 Loading sources index "/var/lib/apt/lists/ftp.ch.debian.org_debian_dists_sid_main_source_Sources"
2015/08/16 11:48:43 Loading sources index "/var/lib/apt/lists/ftp.ch.debian.org_debian_dists_sid_non-free_source_Sources"
2015/08/16 11:48:43 Building golang-github-jacobsa-ratelimit_0.0~git20150723.0.2ca5e0c-1 (commandline: [sbuild --arch-all --dist=sid --nolog golang-github-jacobsa-ratelimit_0.0~git20150723.0.2ca5e0c-1 --extra-package=golang-github-jacobsa-gcloud-dev_0.0~git20150709-2_all.deb])
2015/08/16 11:49:19 Build results:
2015/08/16 11:49:19 PASSED: golang-github-jacobsa-ratelimit_0.0~git20150723.0.2ca5e0c-1
ratt uses sbuild(1)
to build packages, see https://wiki.debian.org/sbuild for instructions on how to set up sbuild. Be sure to add --components=main,contrib,non-free
to the sbuild-createchroot line in case you want to deal with packages outside of main as well.