mirror of
git://projects.qi-hardware.com/wernermisc.git
synced 2024-12-19 00:29:42 +02:00
9d208dd855
- pkg.h (enum flags): new flags QPKG_PROVIDED to indicate that the package is only a provision, not an installable package - fixup.h, fixup.c (complete_provisions): search for provisions that do not have a real package associated with them, create a package for them, and mark it as QPKG_PROVIDED - qpkg.c (do_fixups): invoke complete_provisions - pkg.h (struct pkg): add list of (virtual or real) packages a given package provides - pkg.c (new_pkg): initialize pkg->provides - pkg.c (free_pkg): deallocate pkg->provides - gobble.c (gobble_buf): parse the list of packages a package provides - TODO: updated status of Provides support
64 lines
2.0 KiB
Plaintext
64 lines
2.0 KiB
Plaintext
Still left to do
|
|
================
|
|
|
|
- consider reducing the size of the lists of conflicts, e.g., by making
|
|
them unique via a red-black tree
|
|
|
|
- handle Provides:
|
|
|
|
Update: Provides data is now parsed and properly integrated in the
|
|
package database, but not yet used to resolve prerequisites.
|
|
|
|
- sort prerequisites such that they can be installed in the specified order
|
|
|
|
- consider Architecture:
|
|
|
|
Update: we parse and record it now but don't use it yet.
|
|
|
|
- what to do with explicit and implicit replacement ?
|
|
|
|
- if we can't resolve the prerequisites, give at least a hint of what one
|
|
can do to improve the situation
|
|
|
|
- check database for internal consistency
|
|
|
|
Update: added detection of cyclic dependencies (in progress)
|
|
|
|
Update: added test for QPKG_ADDING cleanup bug
|
|
|
|
- implement keyword search
|
|
|
|
- consider also supporting the similar but not identical (parent ?) format
|
|
of /var/lib/dpkg/status and /var/lib/apt/lists/*Packages
|
|
|
|
|
|
Done
|
|
====
|
|
|
|
- optimize the search trees. Right now, we have 81812 calls to make_id
|
|
for 14601 packages, resulting in 7420560 calls to comp_id.
|
|
|
|
There can be at most 2 new identifiers per package (package name and
|
|
version), so a perfectly balanced tree should have a depth of no more
|
|
than 14. If we assume that each call to make_id searches to the bottom,
|
|
we'd get 1145368 calls to comp_id, about 15% of the current number.
|
|
|
|
So the tree is clearly degenerated.
|
|
|
|
Update: after switching to red-black trees, we get only 1497604 calls
|
|
to comp_id. This is 130% of the "good case" estimate above. Insertion
|
|
of a new node is currently done with two lookups, so we'll get rid of
|
|
some more lookups after further optimization.
|
|
|
|
Update: after merging the two lookups per new node into one, we're at
|
|
1172642 calls to comp_id, or 102% of the predicted "good case".
|
|
|
|
- if there are multiple choices, try to prefer more recent versions
|
|
|
|
- check whether introducing a new package would cause a conflict
|
|
|
|
Update: conflicts among the packages considered for installation are now
|
|
checked.
|
|
|
|
- compile the list of conflicts of installed packages
|