#!/bin/sh
# Must be root to run this
set -e
cd $(hg root)
DEBVERSION=sid
PRISTINE=/var/local/cache/pristine/$DEBVERSION
if [ ! -e $PRISTINE ] ; then
echo "Missing:" $PRISTINE
echo "Debian pristine image not found, try running these commands as root:"
echo mkdir -p /var/local/cache/pristine
echo debootstrap $DEBVERSION $PRISTINE http://ftp.uk.debian.org/debian/
exit -1
fi
BUILDDIR=$(pwd)/build
mkdir -p $BUILDDIR/env
BACKING=$BUILDDIR/env/backing
MOUNT=$BUILDDIR/env/mount
if [ -e $MOUNT ] ; then
echo "Removing old filesystem"
# FIXME: evil hack!
chroot $MOUNT /etc/init.d/ssh stop || true
umount $MOUNT/proc || true
umount $MOUNT || true
rm -rf $MOUNT
fi
if [ -e $BACKING ] ; then
echo "Copying deb files into cache"
cp $BACKING/var/cache/apt/archives/* $BUILDDIR/aptcache/$DEBVERSION || true
echo "Deleting old filesystem backing store"
rm -rf $BACKING
fi
mkdir $BACKING $MOUNT
touch $BACKING/please-trash-this-system
mkdir -p $BACKING/etc
echo "pristine" > $BACKING/etc/debian_chroot
cp -v dev/chroot-test/policy-rc.d $BACKING/etc/policy-rc.d
mkdir -p $BACKING/var/cache/apt/archives
echo "Copying deb files out of cache"
cp $BUILDDIR/aptcache/$DEBVERSION/* $BACKING/var/cache/apt/archives || true
cp -av dev/chroot-test/action $BACKING
if [ -e debian/rules ] ; then
./dev/debian-build/dbuild
cp build/debian/*.deb $BACKING/action
else
hg st -mac0n -X '*.hg' -X 'dev/**' \
| cpio -p -0 -d $BACKING/action/mercurial-server
fi
unionfs-fuse -o cow -o allow_other,suid,dev $BACKING=RW:$PRISTINE=RO $MOUNT
#mount --bind /dev "$MOUNT/dev"
#mount --bind /dev/pts "$MOUNT/dev/pts"
mount -t proc proc $MOUNT/proc
chroot $MOUNT ./action/go