#!/bin/sh

REL_MIRROR=http://deb.debian.org/debian
PORTS_MIRROR=http://deb.debian.org/debian-ports
REL_ARCHS="arm64 armel armhf amd64 i386 mips64el ppc64el riscv64 s390x"
PORTS_ARCHS="alpha hppa hurd-i386 ia64 loong64 m68k powerpc ppc64 sh4 sparc64 x32"

TDIR=$(mktemp -d)
cleanup() {
	rm -Rf "$TDIR"
}
trap cleanup EXIT HUP INT TERM

chdistdata="$TDIR/chdist"
chdist_base() {
	local cmd
	cmd=$1
	shift
	chdist "--data-dir=$chdistdata" "$cmd" base "$@"
}
if [ ! -d "$chdistdata" ]; then
	chdist_base create
fi
{
	echo "deb-src $REL_MIRROR unstable main"
	echo "deb [ arch=$(echo "$REL_ARCHS" | tr ' ' ,) ] $REL_MIRROR unstable main"
	echo "deb [ arch=$(echo "$PORTS_ARCHS" | tr ' ' ,) signed-by=/usr/share/keyrings/debian-ports-archive-keyring.gpg ] $PORTS_MIRROR unstable main"
} > "$chdistdata/base/etc/apt/sources.list"
{ 
	echo 'Acquire::Languages "none";'
	echo 'Apt::Architectures {'
	for arch in $REL_ARCHS $PORTS_ARCHS; do
		echo '"'"$arch"'";'
	done
	echo '};'
} > "$chdistdata/base/etc/apt/apt.conf.d/customize.conf"
chdist_base apt-get update

chdist_base apt-cache dumpavail |
grep-dctrl -sPackage,Architecture -FSource glibc |
while read -r h v; do
	if test "$h" = "Package:"; then
		pkg="$v"
	elif test "$h" = "Architecture:"; then
		arch="$v"
	elif test -z "$h"; then
		if test "${pkg#libc}" != "$pkg" && test "${pkg%-dbg}" = "$pkg" && test "${pkg%-dbgsym}" = "$pkg" && test "${pkg%-dev*}" = "$pkg" && test "${pkg#libc-}" = "$pkg"; then
			env -C "$TDIR" chdist "--data-dir=$chdistdata" apt-get base download "$pkg:$arch"
			dpkg-deb -c "$TDIR/$pkg"_*"_$arch.deb" > "${pkg}_$arch.list"
		fi
		unset pkg
		unset arch
	fi
done
