Intro

This is *MY* setup, and how I use sbuild, git-buildpackage and so on. Feel free to re-use, as I wrote it to share with others, however, this is in no way a source of truth.

Install needed packages

apt-get install sbuild devscripts git-buildpackage quilt openstack-pkg-tools

Tweak build software options

Setup sbuild

sbuild-createchroot --include=eatmydata,ccache bullseye /var/lib/sbuild/bullseye http://mirror.infomaniak.com/debian

/etc/fstab

none /var/lib/schroot/session        tmpfs uid=root,gid=root,mode=0755 0 0
none    /var/lib/schroot/union/overlay  tmpfs   rw,nodev,nosuid,size=8G 0 0
none    /var/lib/schroot/union/underlay tmpfs   rw,nodev,nosuid,size=8G 0 0

~/.gbp.conf

[DEFAULT]
#builder = sbuild --source-only-changes
builder = sbuild --source-only-changes --extra-repository="deb http://bullseye-victoria.debian.net/debian bullseye-victoria-backports main" --extra-repository="deb http://bullseye-victoria.debian.net/debian bullseye-victoria-backports-nochange main"
cleaner = /bin/true
ignore-branch = True
pristine-tar = False
no-create-orig = True
[buildpackage]
export-dir = ../build-area/

[dch]
git-log = --first-parent
id-length = 7
meta = True
meta-closes = Closes|LP
full = True

~/.sbuildrc

$build_arch_all = 1;
$build_source = 1;
#$run_piuparts = 1;
$run_autopkgtest = 1;
$autopkgtest_root_args = '';
$autopkgtest_opts = [ '--apt-upgrade', '--', 'schroot', '%r-%a-sbuild', ];
# Build the image with:
# autopkgtest-build-qemu unstable autopkgtest-unstable.img
#$autopkgtest_opts = [ '--', 'autopkgtest-virt-qemu', '/home/zigo/autopkgtest-unstable.img' ];

#$ENV{'DEB_BUILD_OPTIONS'} = 'parallel=12';

#$distribution = 'bionic';
#$distribution = 'wheezy';
#$distribution = 'wheezy-backports';
#$distribution = 'jessie';
#$distribution = 'jessie-mitaka';
#$distribution = 'jessie-backports';
#$distribution = 'jessie-proposed-updates';
#$distribution = 'jessie-security';
#$distribution = 'stretch';
#$distribution = 'stretch-backports';
#$distribution = 'stretch-security';
#$distribution = 'stretch-proposed-updates';
$distribution = 'unstable';
#$distribution = 'bookworm';
#$distribution = 'bullseye';
#$distribution = 'bullseye-security';
#$distribution = 'bullseye-backports';
#$distribution = 'squeeze';
#$distribution = 'buster';
#$distribution = 'buster-security';
#$distribution = 'buster-backports';
#$piuparts_opts = ['--schroot', 'buster-amd64-sbuild'];
#$distribution = 'experimental';
#$distribution = 'trusty';
#$distribution = 'xenial';
#$distribution = 'artful';
#$distribution = 'hirsute';

$run_lintian = 1;

$key_id = 'A0B1A9F3508956130E7A425CD416AD15AC6B43FE';

# Don't sign packages:
#$pgp_options = '-us -uc';

$clean_source = 0;

### PUIPARTS STUFF ###
$run_piuparts = 0;
#$piuparts_opts = ['--schroot', 'unstable-amd64-sbuild', '--no-eatmydata'];

# This checks the clean target of a package build
$external_commands = {
    "starting-build-commands" => [
        'bash -c \'find %SBUILD_PKGBUILD_DIR -print0 |
                  sort -z |
                  while read -d $\'\\\'\'\0\'\\\'\' file; do
                      echo -n "$(stat -c "%n %F %%s" "${file}") "
                      if [ -f "${file}" ]; then
                          sha256sum "${file}" |
                              cut -d " " -f 1
                      else
                              echo
                      fi
                  done > /tmp/file-list.pre-build\'',
        'sed -i \'s/directory 12288/directory 4096/\' /tmp/file-list.pre-build',
        'sed -i \'s/directory 16384/directory 4096/\' /tmp/file-list.pre-build',
        'sed -i \'s/directory 20480/directory 4096/\' /tmp/file-list.pre-build'
    ],
    "chroot-cleanup-commands" => [
        'cd %SBUILD_PKGBUILD_DIR && ./debian/rules clean',
        'bash -c \'find %SBUILD_PKGBUILD_DIR -print0 |
                  sort -z |
                  while read -d $\'\\\'\'\0\'\\\'\' file; do
                      echo -n "$(stat -c "%n %F %%s" "${file}") "
                      if [ -f "${file}" ]; then
                          sha256sum "${file}" |
                              cut -d " " -f 1
                      else
                              echo
                      fi
                  done > /tmp/file-list.post-build\'',
        'sed -i \'s/directory 12288/directory 4096/\' /tmp/file-list.post-build',
        'sed -i \'s/directory 16384/directory 4096/\' /tmp/file-list.post-build',
        'sed -i \'s/directory 20480/directory 4096/\' /tmp/file-list.post-build',
        'diff -u /tmp/file-list.pre-build /tmp/file-list.post-build'
    ]
};

# Disable the above if the package doesn't clean properly and that's not fixable
$external_commands = {};

# don't remove this, Perl needs it:
1;

/etc/schroot/chroot.d/bullseye-amd64-sbuild-MaScMK

description=Debian bullseye/amd64 autobuilder
groups=root,sbuild
root-groups=root,sbuild
profile=sbuild
type=directory
directory=/var/lib/sbuild/bullseye
union-type=overlay
command-prefix=/var/cache/ccache-sbuild/sbuild-setup,eatmydata

/var/cache/ccache-sbuild/sbuild-setup

export CCACHE_DIR=/var/cache/ccache-sbuild
export CCACHE_UMASK=002
export CCACHE_COMPRESS=1
unset CCACHE_HARDLINK
export PATH="/usr/lib/ccache:$PATH"
exec "$@"

also should be in /var/lib/sbuild/unstable/var/cache/ccache-sbuild/sbuild-setup and must be chmod +x

~/.bashrc

export DEBFULLNAME="Thomas Goirand"
export DEBEMAIL="zigo@debian.org"
export DEBSIGN_KEYID='A0B1A9F3508956130E7A425CD416AD15AC6B43FE!'
export DEB_SIGN_KEYID='A0B1A9F3508956130E7A425CD416AD15AC6B43FE!'
export EMAIL="zigo@debian.org"
export FROM="zigo@debian.org"
export from="zigo@debian.org"
export QUILT_PATCHES=debian/patches
export SALSA_TOKEN=<YOUR-SALSA-TOKEN-HERE>

alias debchk="debcheckout -a --git-track='*'"