#!/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="libc6 libc6-dev libc6-ppc64 libc6-dev-ppc64 linux-libc-dev"
DEBS="$DEBS libgmpxx4ldbl libgmp3c2 libgmp3-dev lib64gmpxx4 lib64gmp3-dev lib64gmp3"
DEBS="$DEBS libmpfr1ldbl libmpfr-dev lib64mpfr1 lib64mpfr-dev"

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=powerpc"

# 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=powerpc \
	-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
