#!/bin/sh

set -ex

# 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="gdk-imlib1
gtk2-engines-pixbuf
libacl1
libattr1
libbz2-1.0
libc6
libc6-dev
libdps1
libfreetype6
libglib1.2
libgtk1.2
libgtk1.2-common
libice6
libjpeg62
liblcms1
libncurses5
libsm6
libstdc++2.10-glibc2.2
libstdc++2.9-glibc2.1
libstdc++3
libstdc++5
libtiff3g
libwmf0.2-7
libx11-6
libxaw7
libxext6
libxft1
libxi6
libxml2
libxmu6
libxmuu1
libxp6
libxpm4
libxrandr2
libxt6
libxtrap6
libxtst6
xaw3dg
xlibmesa-gl
xlibmesa-glu
xlibs-data
zlib1g
lesstif2
libxrender1
libexpat1
libfontconfig1
libgcc1
coreutils
"

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
            $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
