lib/conf: add get_distros() method

returns the split upgrade-test-distros list

Signed-off-by: Andreas Beckmann <anbe@debian.org>
lib/conf: use get_distros()

Signed-off-by: Andreas Beckmann <anbe@debian.org>
lib/conf: add get_start_distro() method

Signed-off-by: Andreas Beckmann <anbe@debian.org>
p-s: use the new get_distros() and get_start_distro() methods

Signed-off-by: Andreas Beckmann <anbe@debian.org>
p-r: generate default descriptions

two different descriptions depending on the test: install/purge or
distupgrade

the description setting in piuparts.conf can be omitted to use the
default description

if the description setting in piuparts.conf starts/ends with a '+',
it will be appended/prepended to the default description

Signed-off-by: Andreas Beckmann <anbe@debian.org>
p.conf: use generated descriptions

Signed-off-by: Andreas Beckmann <anbe@debian.org>
lib/db: add support for dependency sections

add set_dependency_databases() method
compute the package states of the dependency dbs

Signed-off-by: Andreas Beckmann <debian@abeckmann.de>
p-m: load dependency sections

Signed-off-by: Andreas Beckmann <debian@abeckmann.de>
p-r: load dependency sections

Signed-off-by: Andreas Beckmann <debian@abeckmann.de>
p-r: cache the most recently used base section

recomputing the package states is a bit expensive (cpu)
caching them all is very expensive (memory)

Signed-off-by: Andreas Beckmann <anbe@debian.org>
lib/db: lookup package state recursively

for packages that do not exist in the current db try the
dependency dbs before falling back to does-not-exist

only recurse one level to avoid infinite loops

Signed-off-by: Andreas Beckmann <debian@abeckmann.de>
lib/db: lookup providers recursively

return the union of the providers from the current db
and all dependency dbs

Signed-off-by: Andreas Beckmann <debian@abeckmann.de>
lib/db: lookup packages recursively

Signed-off-by: Andreas Beckmann <debian@abeckmann.de>
lib/db: lookup package dependencies recursively

Signed-off-by: Andreas Beckmann <debian@abeckmann.de>