This introduces a backward-compatible feature (server-side in this commit)
that makes possible to associate more than one package file to a single
package_id. This opens the door to a wide range of future opportunities
but also makes possible to decouple debuginfo files from the rest.
Hide internal details regarding cache status handling. Rename
.xcache property to ._caching and provide a getter that returns
the cache setting status (caching()).
reponame attribute is now storing with 100% fidelilty the repository
identifier used to instantiate the EntropyRepositoryBase instance
through open_repository() and similar.
New SQL schema changes have been introduced to EntropyRepository,
keeping them disabled by default (older Entropy client have to be
flushed out first). The aim is to improve performance avoiding
extra SQL joins on baseinfo and extrainfo tables, thus removing
"categories", "flags", "licenses" tables (which missed external
keys also).
This upgrade is completely backward compatible and new schema is detected
at runtime, so the whole class can work with old and new one transparently.
The downside is that listPackageIdsInCategoryId() is no longer available and
has been replaced by a more generic listPackageIdsInCategory().
This new SQL schema will be hopefully enabled before the end of 2011.
The following changes add more security features to Entropy repository
files. Every package will have new security metadata associated, like
sha256 and mtime of package files. Once all packages will contain
such information, the feature can be used, for example, to determine
if a system has been compromised by changing critical executables.
This is not a replacement for rootkit tools such as rkhunter or chkrootkit,
but instead, the base support for their file checking mechanism.
Entropy Client support (equo, mainly) is planned in the near future.
This commit drastically changes EntropyRepository API, return object
are now either tuple or frozenset for most functions. This aims to
improve metadata reliability across function calls, making impossible
to change their content. Frozenset and tuple are immutable types.
- overridden handlePackage, addPackage, removePackage in respective
entropy.client.interfaces.db classes in a proper, secure way.
- overridden maskFilter in entropy.client.interfaces.db, the final
goal will be removing its logic from EntropyRepository and move
it to AvailablePackagesRepository only.
- removed any evidence of "client_repo" EntropyRepositoryPlugin(s)
metadatum.
Per package file association info are now stored inside the
repository database. This allows for instance, to query a
mimetype and get a list of applications able to handle it, or
to get a list of mimetypes a package is aware of.