TODO
changeset 1 38be5ee4d231
child 5 4bdfd6031b3d
     1.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.2 +++ b/TODO	Mon Sep 03 14:38:31 2007 -0400
     1.3 @@ -0,0 +1,37 @@
     1.4 +- pkg manifest is list of files
     1.5 +
     1.6 +	/usr/bin/bash 1321321372198798
     1.7 +
     1.8 +  plus provides, requires and version?
     1.9 +
    1.10 +- keep history of installed packages/journal of package transaction,
    1.11 +  so we can roll back to yesterday, or see what got installed in the
    1.12 +  latest yum update.
    1.13 +
    1.14 +- we build a cache of the currently installed set to service
    1.15 +  dependency inquiries fast:
    1.16 +
    1.17 +	map from property to pkg (as hash) providing it
    1.18 +	map from property to pkgs requiring it
    1.19 +	map from pkg name to manifest
    1.20 +	map from string to string pool index
    1.21 +
    1.22 +	no implicit provides? not even pkgname?
    1.23 +
    1.24 +- properties are strings, stored in a string table
    1.25 +
    1.26 +- on disk maps are binary files of (string table index, hash) pairs
    1.27 +
    1.28 +- at run time, we mmap the map, and keep changes in memory in a splay
    1.29 +  tree or similar.  if searching the splay tree fails we punt to the
    1.30 +  mmap.  once the transaction is done, we merge the map and the splay
    1.31 +  tree and write it back out.
    1.32 +
    1.33 +- the on-disk string pool is sorted and we keep a list of indices into
    1.34 +  the string pool in sorted order so we can bsearch the list with a
    1.35 +  string to get its string pool index.  maybe a hash table is better,
    1.36 +  less I/O as we will expect to find the string within the block we
    1.37 +  look up with the hash function.
    1.38 +
    1.39 +- signed pkgs
    1.40 +- gzip pkg xml files somehow?