]> git.saurik.com Git - apt.git/commit
store Release files data in the Cache
authorDavid Kalnischkies <david@kalnischkies.de>
Fri, 12 Jun 2015 00:08:53 +0000 (02:08 +0200)
committerDavid Kalnischkies <david@kalnischkies.de>
Fri, 12 Jun 2015 14:33:37 +0000 (16:33 +0200)
commitb07aeb1a6e24825e534167a737043441e871de9f
treeb47b5bced3f6352e2cdd6cfa550e351e8cd6ebab
parent8881b11eacd735148d087c8c0f53827cb537b582
store Release files data in the Cache

We used to read the Release file for each Packages file and store the
data in the PackageFile struct even through potentially many Packages
(and Translation-*) files could use the same data. The point of the
exercise isn't the duplicated data through. Having the Release files as
first-class citizens in the Cache allows us to properly track their
state as well as allows us to use the information also for files which
aren't in the cache, but where we know to which Release file they
belong (Sources are an example for this).

This modifies the pkgCache structs, especially the PackagesFile struct
which depending on how libapt users access the data in these structs can
mean huge breakage or no visible change. As a single data point:
aptitude seems to be fine with this. Even if there is breakage it is
trivial to fix in a backportable way while avoiding breakage for
everyone would be a huge pain for us.

Note that not all PackageFile structs have a corresponding ReleaseFile.
In particular the dpkg/status file as well as *.deb files have not. As
these have only a Archive property need, the Component property takes
over this duty and the ReleaseFile remains zero. This is also the reason
why it isn't needed nor particularily recommended to change from
PackagesFile to ReleaseFile blindly. Sticking with the earlier is
usually the better option.
27 files changed:
apt-pkg/acquire-item.cc
apt-pkg/cacheiterators.h
apt-pkg/clean.cc
apt-pkg/deb/debindexfile.cc
apt-pkg/deb/debindexfile.h
apt-pkg/deb/deblistparser.cc
apt-pkg/deb/deblistparser.h
apt-pkg/deb/debmetaindex.cc
apt-pkg/deb/debmetaindex.h
apt-pkg/deb/dpkgpm.cc
apt-pkg/depcache.cc
apt-pkg/edsp.cc
apt-pkg/edsp/edspindexfile.cc
apt-pkg/edsp/edsplistparser.cc
apt-pkg/edsp/edsplistparser.h
apt-pkg/metaindex.cc
apt-pkg/metaindex.h
apt-pkg/pkgcache.cc
apt-pkg/pkgcache.h
apt-pkg/pkgcachegen.cc
apt-pkg/pkgcachegen.h
apt-pkg/policy.cc
apt-pkg/versionmatch.cc
apt-pkg/versionmatch.h
cmdline/apt-cache.cc
test/integration/framework
test/integration/test-policy-pinning