#!/bin/sh -e

rm -rf *

RELEASE=hardy

# create directories
mkdir -p bin fakelibs chroots

# we assume that we are in the unpacked apport source
D=$(readlink -f $(dirname $0)/../..)
test -e $D/bin/apport-chroot || {
    echo "This script must live in an unpacked apport source tree" >&2
    exit 1
}
cp -r $D apport
cp apport/backends/packaging-apt-dpkg.py apport/apport/packaging_impl.py
ln -s ../apport/bin/apport-chroot bin/apport-chroot
ln -s ../apport/bin/crash-digger bin/crash-digger

# debootstrap
T=`mktemp -d`
wget -O - -q http://archive.ubuntu.com/ubuntu/dists/$RELEASE/main/binary-`dpkg --print-architecture`/Packages.gz | gunzip > $T/Packages
P=`grep '^Filename:.*debootstrap_.*deb' $T/Packages | cut -f 2 -d\ `
wget -q http://archive.ubuntu.com/ubuntu/$P
dpkg -x debootstrap_*.deb $T
rm debootstrap_*.deb
mv $T/usr/share/debootstrap/ .
sed "1 s_\$_\\nDEBOOTSTRAP\_DIR=`pwd`/debootstrap_" $T/usr/sbin/debootstrap > bin/debootstrap
chmod 755 bin/debootstrap

# python-launchpad-bugs
dpkg -s python-launchpad-bugs >/dev/null 2>/dev/null || {
    P=`grep '^Filename:.*python-launchpad-bugs_.*deb' $T/Packages | cut -f 2 -d\ `
    wget -q http://archive.ubuntu.com/ubuntu/$P
    dpkg -x python-launchpad-bugs_*.deb $T
    rm python-launchpad-bugs_*.deb
    mv $T/usr/share/pycentral/python-launchpad-bugs/site-packages/launchpadbugs apport/
}

# python-apt
dpkg -s python-apt >/dev/null 2>/dev/null || {
    P=`grep '^Filename:.*python-apt_.*deb' $T/Packages | cut -f 2 -d\ `
    wget -q http://archive.ubuntu.com/ubuntu/$P
    dpkg -x python-apt*.deb $T
    rm python-apt*.deb
    mv $T/usr/lib/python2.5/site-packages/* apport/
}

# python-libxml2
dpkg -s python-libxml2 >/dev/null 2>/dev/null || {
    P=`grep '^Filename:.*python-libxml2_.*.deb' $T/Packages | cut -f 2 -d\ `
    wget -q http://archive.ubuntu.com/ubuntu/$P
    dpkg -x python-libxml2*.deb $T
    rm python-libxml2*.deb
    mv $T/usr/share/python-support/python-libxml2/* apport/
    mv $T/usr/lib/python-support/python-libxml2/python2.5/* apport/
}

rm -rf $T

# fake{chroot,root} libraries
dpkg -s fakeroot >/dev/null 2>/dev/null || {
    wget -q http://archive.ubuntu.com/ubuntu/`apt-cache show fakeroot|grep ^Filename | cut -f 2 -d\ `
    ar p fakeroot_*.deb data.tar.gz | tar xzO ./usr/lib/libfakeroot-sysv.so > fakelibs/libfakeroot.so
    rm fakeroot_*.deb
}

wget -q http://archive.ubuntu.com/ubuntu/`apt-cache show fakechroot|grep ^Filename | cut -f 2 -d\ `
ar p fakechroot_*.deb data.tar.gz | tar xzO ./usr/lib/fakechroot/libfakechroot.so > fakelibs/libfakechroot.so
rm fakechroot_*.deb

# create file with environment variables
if dpkg -s fakeroot >/dev/null 2>/dev/null; then
    cat <<EOF > environ
PATH=`pwd`/bin:/usr/sbin:/sbin:\$PATH
PYTHONPATH=`pwd`/apport:\$PYTHONPATH
APPORT_LIBFAKECHROOT=`pwd`/fakelibs/libfakechroot.so
APPORT_CRASHDB_CONF=`pwd`/apport/crashdb.conf

export PATH PYTHONPATH APPORT_LIBFAKECHROOT APPORT_CRASHDB_CONF
EOF
else
    cat <<EOF > environ
PATH=`pwd`/bin:/usr/sbin:/sbin:\$PATH
PYTHONPATH=`pwd`/apport:\$PYTHONPATH
APPORT_LIBFAKEROOT=`pwd`/fakelibs/libfakeroot.so
APPORT_LIBFAKECHROOT=`pwd`/fakelibs/libfakechroot.so
APPORT_CRASHDB_CONF=`pwd`/apport/crashdb.conf

export PATH PYTHONPATH APPORT_LIBFAKEROOT APPORT_LIBFAKECHROOT APPORT_CRASHDB_CONF
EOF
fi

. ./environ

# create chroots
if [ "`dpkg --print-architecture`" = i386 ]; then
    apport-chroot -t -a "deb http://ddebs.ubuntu.com/ $RELEASE main restricted universe multiverse" -a "deb http://archive.ubuntu.com/ubuntu $RELEASE restricted universe multiverse" -a "deb http://archive.ubuntu.com/ubuntu $RELEASE-updates main restricted universe multiverse" -a "deb http://security.ubuntu.com/ubuntu $RELEASE-security main restricted universe multiverse" -p libc6-i686 -p libc6-i686-dbgsym create $RELEASE chroots/$RELEASE.tar.gz
else
    apport-chroot -t -a "deb http://ddebs.ubuntu.com/ $RELEASE main restricted universe multiverse" -a "deb http://archive.ubuntu.com/ubuntu $RELEASE restricted universe multiverse" -a "deb http://archive.ubuntu.com/ubuntu $RELEASE-updates main restricted universe multiverse" -a "deb http://security.ubuntu.com/ubuntu $RELEASE-security main restricted universe multiverse" create $RELEASE chroots/$RELEASE.tar.gz
fi
chmod -R g+w chroots/

# chroot map
cat <<EOF > chrootmap
{
    'Ubuntu 7.04': 'chroots/feisty.tar.gz',
    'Ubuntu 7.10': 'chroots/gutsy.tar.gz',
    'Ubuntu 8.04': 'chroots/hardy.tar.gz',
}
EOF
