#!/bin/sh
set -e

trash=
trap -- 'test -z "$trash" || rm -fr "$trash"' EXIT
trash="$(mktemp -d)"

cd "$trash"

createpkg() {
	local pkg="$1"
	local version="$2"
	local arch="$3"
	local description="$4"

	mkdir -p debian staging/usr/share/doc/$pkg staging/DEBIAN

	echo "$pkg ($version) UNRELEASED; urgency=low

  * Test package.

 -- David Kalnischkies <kalnischkies@gmail.com>  Thu, 09 Feb 2012 19:27:25 +0200" > debian/changelog
	echo 'This package is in the public domain.
You may freely use, modify, distribute, and relicense it.' > debian/copyright
	echo "Source: $pkg
Section: admin
Priority: extra
Maintainer: David Kalnischkies <kalnischkies@gmail.com>

Package: $pkg
Architecture: all
Description: Test package
 $description" > debian/control
	cp debian/copyright "staging/usr/share/doc/$pkg/"
	cp debian/changelog "staging/usr/share/doc/$pkg/changelog.Debian"
	gzip -9 "staging/usr/share/doc/$pkg/changelog.Debian"

	dpkg-gencontrol -p${pkg} -Pstaging
	if [ "$arch" != "all" ]; then
		sed -i -e "s#: all#: ${arch}#" staging/DEBIAN/control
	fi
	dpkg-deb --build staging .

	rm -fr debian
	rm -fr staging
}

createpkg pkg-a 1 'i386' 'pkg-a as an arch:any'
createpkg pkg-a 1 'amd64' 'pkg-a as an arch:any'
createpkg pkg-a 2 'all' 'pkg-a as an arch:all'
createpkg pkg-a 3 'i386' 'pkg-a as an arch:any'
createpkg pkg-a 3 'amd64' 'pkg-a as an arch:any'

mkdir -p var/lib/dpkg/info var/lib/dpkg/updates
echo -n > var/lib/dpkg/status
echo -n > var/lib/dpkg/available
dpkg() {
	fakeroot dpkg --root="$trash" --force-not-root --force-bad-path $*
}

dpkg --add-architecture i386
dpkg -i pkg-a_1_i386.deb
dpkg -i pkg-a_2_all.deb
dpkg -i pkg-a_3_i386.deb
