]> git.saurik.com Git - apt.git/commit - apt-pkg/pkgcachegen.cc
reimplement build-dep via apts normal resolver
authorDavid Kalnischkies <david@kalnischkies.de>
Thu, 21 Jan 2016 22:22:00 +0000 (23:22 +0100)
committerDavid Kalnischkies <david@kalnischkies.de>
Mon, 25 Jan 2016 17:15:44 +0000 (18:15 +0100)
commita249b3e6fd798935a02b769149c9791a6fa6ef16
tree84a3848b7298d342486dca9ad86bc1e416a9185a
parent074564d40c21cb063bf327e9151a4e24cd9534b5
reimplement build-dep via apts normal resolver

build-dep was implemented by parsing the build-dependencies of a package
and figuring out which packages to install/remove based on this. That
means that for the first level of dependencies build-dep was
implementing its very own resolver with all the benefits (aka: bugs)
this gives us for not using the existing resolver for all levels.

Making this work involves generating a dummy binary package with fitting
Depends and Conflicts and as we can't create them out of thin air the
cache generation needs to be involved so we end up writing a Packages
file which we want to parse – after we have parsed the other Packages
files already. With .dsc/.deb files we could add them before we started
parsing anything.

With a bit of care we can avoid generating too much data we have to
throw away again (as many parts assume that e.g. the count of packages
doesn't change midair), so that on a speed front there shouldn't be
much of a difference, but output can be slightly confusing as if we have
a completely valid cache on disk the "Reading package lists... Done" is
printed two times – but apt is pretty quick about it in that case.

Closes: #137560, #444930, #489911, #583914, #728317, #812173
15 files changed:
apt-pkg/cachefile.cc
apt-pkg/cachefile.h
apt-pkg/deb/debindexfile.cc
apt-pkg/deb/debindexfile.h
apt-pkg/indexfile.cc
apt-pkg/pkgcachegen.cc
apt-private/private-install.cc
apt-private/private-install.h
apt-private/private-source.cc
test/integration/test-apt-get-build-dep
test/integration/test-architecture-specification-parsing
test/integration/test-bug-632221-cross-dependency-satisfaction
test/integration/test-bug-661537-build-profiles-support
test/integration/test-bug-683786-build-dep-on-virtual-packages
test/integration/test-bug-720597-build-dep-purge