[buildd-tools-devel] Bug#859867: Bug#859867: Bug#859867: Please add	a package which automatically configures sbuild for Debian packaging
    Geert Stappers 
    stappers at stappers.nl
       
    Sun May 21 06:43:31 UTC 2017
    
    
  
On Sat, May 20, 2017 at 11:34:37PM +0200, Michael Stapelberg wrote:
> 
> Find attached the first draft of my suggestion. I implemented it as a
> separate package purely so that I can build it more quickly, but I assume
> we???d want to fold this into src:sbuild eventually.
> 
> The resulting package (I built it using dpkg-buildpackage -b) depends on
> sbuild, schroot, debootstrap, perl-base, lintian. Upon installation, it
> will create an unstable sbuild schroot, modify its configuration, add all
> users to sbuild and create a modified ~/.sbuildrc for all users.
> 
> If you want to read through the entire behavior, I recommend the
> entrypoints debian/postinst and update-sbuild-chroots.
the debian/postinst now here inline
#!/bin/sh
set -e
#DEBHELPER#
# TODO: make this package pass piuparts
# Add to group sbuild all âdynamically allocated user accountsâ; see
# https://www.debian.org/doc/debian-policy/ch-opersys.html
for user in $(getent passwd | perl -F: -nlE '$F[2] >= 1000 && $F[2] <= 59999 && say $F[0]')
do
    # Strictly speaking, we should use sbuild-adduser, but sbuild-adduser prints
    # setup instructions to STDERR which do not make sense in the context of
    # this package. Filtering STDERR is cumbersome, so we call adduser directly.
    adduser --quiet -- "$user" sbuild
done
# TODO: maybe add a âsetupâ suffix into the generated chroot name for easier trouble-shooting (weâll immediately know who created the chroot initially)
# Create a chroot if it does not already exist
chroot="unstable-$(dpkg --print-architecture)-sbuild"
if ! schroot -i -c chroot:${chroot} >/dev/null 2>&1
then
    sbuild-createchroot \
	--include=eatmydata,ccache,gnupg \
	unstable \
	/srv/chroot/${chroot} \
	http://deb.debian.org/debian
    # At this point, sbuild-createchroot created an schroot configuration with a
    # random suffix, e.g. /etc/schroot/chroot.d/unstable-amd64-sbuild-pyViYe. As
    # sbuild-createchroot recommends, we rename that file before making
    # adjustments.
    mv /etc/schroot/chroot.d/${chroot}-* /etc/schroot/chroot.d/${chroot}
fi
# schroot config customizations:
config=/etc/schroot/chroot.d/${chroot}
tmp=$(mktemp ${config}-XXXXXX.dpkg-tmp)
trap 'rm -f "${tmp}"' TERM INT EXIT QUIT
grep -v -E '^(aliases|command-prefix)=' "${config}" > "${tmp}"
# For convenience, treat UNRELEASED as an alias for unstable (so that
# debian/changelog files containing UNRELEASED do not need to be modified before
# building). Also sid, because it is short to type when specifying -d.
echo "aliases=UNRELEASED,sid" >> "${tmp}"
# Enable eatmydata: occasionally losing a test build is preferable over longer
# build times and disk wear.
echo "command-prefix=eatmydata" >> "${tmp}"
chmod 644 "${tmp}"
mv "${tmp}" "${config}"
# Copy a modified example sbuildrc config file
for homedir in $(getent passwd | perl -F: -nlE '$F[2] >= 1000 && $F[2] <= 59999 && say $F[5]')
do
    userconfig="${homedir}/.sbuildrc"
    if [ ! -e "${userconfig}" ]
    then
	(grep -v -E "^(# don't remove this|1;\$)" /usr/share/doc/sbuild/examples/example.sbuildrc && cat /usr/share/doc/sbuild-debian-setup/sbuildrc) > "${userconfig}"
    fi
done
# bind-mount the apt archive cache into chroots, so that packages are downloaded
# only once. The assumption is that users will not typically have a local apt
# mirror or caching proxy.
if ! grep -q '^/var/cache/apt/archives' /etc/schroot/sbuild/fstab
then
    echo "/var/cache/apt/archives /var/cache/apt/archives none rw,bind 0 0" \
	 >>/etc/schroot/sbuild/fstab
fi
if [ ! -e "/etc/schroot/setup.d/04tmpfs" ]
then
    echo ""
    echo "  If you can spare the RAM, you can enable building in tmpfs using:"
    echo ""
    echo "    sudo ln -s /etc/schroot/setup-available.d/overlays-in-tmpfs /etc/schroot/setup.d/04tmpfs"
    echo ""
fi
exit 0
> I tested this package on my notebook, which is a Debian installation on
> which I never had sbuild installed, so I???m reasonably confident that the
> package works ??? at least to the point that one gets an sbuild installation
> that builds packages.
> 
> I???d be happy about any feedback. Thanks!
What was/is the idea of doing this in an additional packages?
Why not in an additional script?
Groeten
Geert Stappers
-- 
Leven en laten leven
    
    
More information about the Buildd-tools-devel
mailing list