TODO #12 - bin/why-dont-you(line 12):
reintrocude "keep", "stubbornly_keep", "stabilize" and "unstage"
using information from the database.

TODO #13 - bin/db-update(line 10):
make (all) locking less restrictive

TODO #14 - bin/return-assignment-no-sign-check(line 1070):
sign database

TODO #18 - bin/get-package-updates(line 10):
keep database clean in case of abort

TODO #23 - bin/ping-to-master(line 13):
abort build if requested to

TODO #58 - bin/build-packages(line 10):
report back memory and hdd stats to the build master on successful build

TODO #98 - bin/bootstrap-mysql(line 63):
`package_blobs` needs too much space!

TODO #104 - bin/copy-to-build-support(line 10):
allow to introduce a manually built package into build-support

TODO #108 - bin/return-assignment-no-sign-check(line 1199):
possibly remove install_target_providers with less restrictive
versions than we have now

TODO #115 - bin/return-assignment-no-sign-check(line 896):
maybe, we should not put "any" packages into repositories of all
architectures at once, but wait until they can actually be installed
on that architecture? (They might be missing an architecture specific

TODO #117 - lib/mysql-functions(line 369):
we might want to keep the pkgrel part and only remove the
sub_pkgrel part - but then we need to include pkgrels on the provide
side, too(?)

TODO #120 - bin/build-packages(line 766):
symbols may be in object files _inside_archives_
In that case, we're interested in the object file's name,
not the archive's file name

TODO #126 - bin/schedule-for-rebuild(line 334):
this might become wrong if we ever change the order of the
rows in repository_stabilities -- we might want to refer to
repository_stability_relations here somehow ...

TODO #128 - bin/create-build-support-package(line 188):
mangle customizable meta-infos here (new provides, keep some

TODO #135 - bin/create-build-support-package(line 360):
maybe add (some?) depends here, too?

TODO #136 - bin/return-assignment-no-sign-check(line 1356):
set _correct_ version of install_target_providers

TODO #152 - bin/build-packages(line 537):
get the name of the key file from its finger print or
some other information inside the repository

TODO #153 - bin/build-packages(line 12):
some build failures should skip straws - e.g. if dependencies are unavailable,
we should not try to rebuild with a cleaned chroot

TODO #154 - bin/build-packages(line 15):
some build environments should be archived when the build fails - but:

TODO #155 - bin/build-packages(line 18):
it might be worth trying to build with makedepends installed from
[testing] and only depends installed from [staging]

TODO #160 - bin/build-packages(line 21):
the following things need proper locking and/or proper handling of
external locks:
- `git` on the package source
- `archbuild` (e.g. /var/lib/archbuilds/extra-staging-i686-build/root.lock)
- `find ... -exec umount` on the build chroot

TODO #161 - bin/build-packages(line 27):
releave some locking conditions - meta goal: be able to run multiple
build slaves on one host from within one archlinux32/builder repository

TODO #170 - bin/return-assignment-no-sign-check(line 1040):
this makes sense for provide= entries in .PKGINFO, too

TODO #173 - bin/manage-fail-reasons(line 6):
deduplicate matching logic (with bin/return-assignment)

TODO #176 - bin/schedule-for-rebuild(line 18):
allow to reschedule filtered by architecture

TODO #179 - bin/build-packages(line 892):
dependency-adding from make_source_info() should
be replicated here, somehow ...

TODO #180 - bin/schedule-for-rebuild(line 530):
this seems to be broken (deletes too few packages) - still valid
after implementing the correct blacklisting below?

TODO #181 - bin/get-assignment(line 338):
This is broken, it cannot work and probably never will do this way.

TODO #189 - bin/filter-build-logs(line 10):
remove hard-coded package suffixes

TODO #191 - bin/copy-to-build-support(line 12):
remove hard-coded package suffixes

TODO #193 - bin/create-build-support-package(line 6):
remove hard-coded package suffixes

TODO #195 - bin/interpret-mail(line 8):
remove hard-coded default package suffixes

TODO #205 - bin/schedule-for-rebuild(line 22):
-a reschedules too many packages (for example, packages, that have just been rescheduled in a previous run)

TODO #209 - lib/mysql-functions(line 518):
we might want to move packages of blacklisted architectures to
the deletion-list instead of the build-list

TODO #210 - bin/schedule-for-rebuild(line 24):
-a and -p leave the buildmaster in an unclean state

TODO #211 - bin/build-packages(line 30):
remove hard-coded package suffixes

TODO #212 - bin/create-build-support-package(line 8):
use the intention-queue

TODO #216 - bin/db-update(line 625):
sign repositories

TODO #218 - bin/build-packages(line 32):
save build-logs in case of success, too - only the build is
guaranteed to have been successful, maybe the package is broken.

TODO #220 - bin/why-dont-you(line 271):
This logic is different from `calculate_maximal_moveable_set`:
If a package has a broken dependency already, we do not see it, but
db-update does.

TODO #221 - lib/mysql-functions(line 1432):
needs a left-join variant, too (possibly a right-join, too?)

TODO #224 - lib/mysql-functions(line 1120):
only consider installable providers (at least for haskell-*, but
it would be probably best to do so for all packages)

TODO #226 - bin/db-update(line 12):
intentionally break packages that failed to build for a certain time

TODO #228 - bin/return-assignment-no-sign-check(line 427):
We might want to make this architecture-sensitive.

TODO #229 - bin/db-update(line 14):
-p seems to try to move stuff from community to community and from
extra to extra - which of course leads to problems.

TODO #232 - bin/return-assignment-no-sign-check(line 379):
We might want to prioritize broken dependencies, which are already
on the build-list.

TODO #233 - bin/return-assignment-no-sign-check(line 382):
We might also want to prioritize the returned package if there
were broken dependencies identified, but none of these is still on the
build list (e.g. some race condition between this build and its
dependencies occured).

TODO #234 - bin/return-assignment-no-sign-check(line 387):
Iff broken dependencies were rescheduled or prioritized, we
should raise the priority of the returned package to one less than the
maximum value (so it will be rebuilt after the broken dependencies).

TODO #235 - bin/nit-picker(line 15):

- check for differences of dependencies between mysql and git
- check for differences of dependencies between mysql and packages
- check for installability of packages

TODO #236 - bin/create-build-support-package(line 10):
add the possibility to add an "external" package - TBD: How to
create / Where to take from database information (e.g.