This work has been brought to you by the wonderful DebCamp.
I needed to reproduce a build issue on an i386 architecture, so I started going through the instructions for finding a porterbox and setting up a chroot.
And then I though, this is long and boring. A program could do that.
So I created a program to do that:
$ debug-on-porterbox --help
usage: debug-on-porterbox [-h] [--verbose] [--debug] [--cleanup] [--git]
[--reuse] [--dist DIST] [--host HOST]
arch [package]
set up a build environment to debug a package on a porterbox
positional arguments:
arch architecture name
package package name
optional arguments:
-h, --help show this help message and exit
--verbose, -v verbose output
--debug debug output
--cleanup cleanup a previous build, removing porterbox data and git
remotes
--git setup a git clone of the current branch
--reuse reuse an existing session
--dist DIST distribution (default: sid)
--host HOST hostname to use (autodetected by default)
On a source directory, you can run debug-on-porterbox i386
and it will:
- find out the program name from debian/control (but if you provide it explicitly, you do not need to be in the source directory)
- look up db.debian.org's LDAP to find a porterbox for that architecture
- log into the machine via ssh
- create a work directory
- create the chroot, update it, install build dependencies
- get the source with
apt-get build-dep
- alternatively, if using
--git
and running inside a git repo, create a git repo on the porterbox, push the local git branch to it, and add a remote to push/pull to/from it
The only thing left for you to do is to log into the machine debug-on-porterbox tells you, run the command porterbox tells you to enter the chroot, and debug away.
At the end you can clean everything up, including the remote chroot and the git
remote in the local repo, with: debug-on-porterbox [--git] --cleanup i386