What seems to be finished: the program that finds the minimal amount of source
packages that have to be cross compiled to end up with a minimal build system.
What it does is:

get all essential packages

get their runtime dependencies

get build-essential plus runtime dependencies

get all source packages that are necessary to build 1.-3. those are
the packages that have to be cross compiled

get a list of all packages that are built by source packages from 4.

add all packages from 1.,2.,3. and 5. plus all arch:all packages to
a universe

use Depsolver.trim on that universe to figure out which of those
packages are actually installable

The result of 7. will then contain a list of packages that are available
automatically on the foreign system due to cross compiled source packages and
arch:all packages.

For Debian Sid, the output of my program is:

# (1) number of packages with priority:required: 62
# (2) plus, number of dependencies of priority:required packages: 20
# (3) plus, build-essential and dependencies: 31
# number of source packages to build the above: 71
# number of additional packages built from the above source packages: 292
# (4) number of packages of those plus arch:all packages that are installable: 6421
# total number of installable packages (1)+(2)+(3)+(4): 6534

For Ubuntu Natty it is:

# (1) number of packages with priority:required: 96
# (2) plus, number of dependencies of priority:required packages: 7
# (3) plus, build-essential and dependencies: 31
# number of source packages to build the above: 87
# number of additional packages built from the above source packages: 217
# (4) number of packages of those plus arch:all packages that are installable: 2102
# total number of installable packages (1)+(2)+(3)+(4): 2236

So for Debian, 71 source packages definitely have to be made cross
compilable while for Natty, the number is 87.

The last two days I was toying around with these minimal systems to see how big
the number of source packages is, that can be built on top of them without
running into dependency cycles. After installing the binary packages that were
built, I checked again until no new packages could be built.

For Natty, I was only able to find 28 additional packages that can be built on
top of the 2236 existing ones. This means that a number of dependency cycles
prevent building anything else.

In the coming two weeks I will focus on coming up with a tool that cleverly
helps the user to identify packages that would be useful to have for building
more packages (probably determined by how many packages depend on it -
debhelper is an obvious candidate). The tool would then show why that crucial
package is not available (in case of debhelper because some of its runtime
dependencies are not available and require debhelper to be built) and how the
situation can best be resolved. The possible methods to do so are to identify a
package that is part of a cycle and either cross compile it or let it have
staged build dependencies.