#!/bin/sh

set -xe

# To just download from the sources listed in sources.list.deb and use
# the binary packages, use BUILD=0 ./fetch-and-build .  Else, it will
# build all the sources.

BUILD=${BUILD:-1}

DEBS="libgtk2.0-0 libatk1.0-0 libpango1.0-0 libglib2.0-0 libxft2 libxcursor1 libxfixes3 gtk2-engines-clearlooks gtk2-engines-pixbuf gtk2-engines-ubuntulooks"
DEBS="$DEBS libgconf2-4 liborbit2 at-spi libidl0"
# add themes, that are dependencies of gtk2-engines
DEBS="$DEBS gtk2-engines-mist gtk2-engines-thinice gtk2-engines-highcontrast gtk2-engines-redmond95 gtk2-engines-crux gtk2-engines-smooth gtk2-engines-lighthouseblue gtk2-engines-industrial"

export APTDIR=$(mktemp -d)
mkdir -p $APTDIR

rm -rf pkgs
mkdir pkgs

rm -rf srcs
mkdir srcs

rm -rf build
mkdir build

LIST=sources.list.deb

APT_GET="apt-get --assume-yes \
	-o Dir::Etc::sourcelist=`pwd`/$LIST \
	-o Dir::State=$APTDIR/state \
	-o Debug::NoLocking=true \
	-o Dir::Cache=$APTDIR/cache \
	-o Acquire::Retries=3 \
	-o Apt::Architecture=i386"

# Prepare APTDIR
mkdir -p $APTDIR/state/lists/partial
mkdir -p $APTDIR/cache/archives/partial
echo -n > $APTDIR/state/status
APT_GET="$APT_GET --allow-unauthenticated -o Dir::State::Status=$APTDIR/state/status"

$APT_GET update

APT_CACHE="apt-cache \
	-o Dir::Etc::sourcelist=`pwd`/$LIST \
	-o Dir::State=$APTDIR/state \
	-o Debug::NoLocking=true \
	-o Dir::Cache=$APTDIR/cache \
	-o Acquire::Retries=3 \
	-o Apt::Architecture=i386 \
	-o Dir::State::Status=$APTDIR/state/status"

SRCS=""
for i in $DEBS; do
    if [ -e local/pkgs/${i}_*.deb ]; then
        continue
    fi
    src=`$APT_CACHE showsrc $i | grep '^Package: ' | head -n 1 | awk '{print $2}'`
    case " $SRCS " in
        *" $src "*) ;;
        *) SRCS="$SRCS $src" ;;
    esac
done

cd srcs
$APT_GET -d source $SRCS
cd ..

if [ "$BUILD" = 1 ]; then
    cd build
    for pkg in $SRCS; do
    echo $pkg
      dpkg-source -sn -x ../srcs/${pkg}_*.dsc
      cd $pkg-*
      dpkg-buildpackage -rfakeroot -uc -us -B
      cd ..
      #rm -rf $pk
    done
    cd ..
else
    for pkg in $DEBS; do
        if [ -e local/pkgs/${pkg}_*.deb ]; then
            cp local/pkgs/${pkg}_*.deb build/
        else
            echo $APT_GET --download-only install $pkg
            $APT_GET --download-only install $pkg
            cp $APTDIR/cache/archives/${pkg}_*.deb build/
        fi
    done
fi

for pkg in $DEBS; do
  mv build/${pkg}_*.deb pkgs/
done
rm -rf $APTDIR build
exit 0
