TODO
changeset 55 b21a4953ff91
parent 52 8cb4c45dc86f
child 56 9c00581c71be
     1.1 --- a/TODO	Mon Oct 22 22:53:55 2007 -0400
     1.2 +++ b/TODO	Wed Oct 24 00:02:44 2007 -0400
     1.3 @@ -2,45 +2,6 @@
     1.4    so we can roll back to yesterday, or see what got installed in the
     1.5    latest yum update.
     1.6  
     1.7 -- we build a cache of the currently installed set to service
     1.8 -  dependency inquiries fast:
     1.9 -
    1.10 -	map from property to pkg (as hash) providing it
    1.11 -	map from property to pkgs requiring it
    1.12 -	map from pkg name to manifest
    1.13 -	map from string to string pool index
    1.14 -
    1.15 -	no implicit provides? not even pkgname?
    1.16 -
    1.17 -- properties are strings, stored in a string table
    1.18 -
    1.19 -- on disk maps are binary files of (string table index, hash) pairs
    1.20 -
    1.21 -- at run time, we mmap the map, and keep changes in memory in a splay
    1.22 -  tree or similar.  if searching the splay tree fails we punt to the
    1.23 -  mmap.  once the transaction is done, we merge the map and the splay
    1.24 -  tree and write it back out.
    1.25 -
    1.26 -- the on-disk string pool is sorted and we keep a list of indices into
    1.27 -  the string pool in sorted order so we can bsearch the list with a
    1.28 -  string to get its string pool index.  maybe a hash table is better,
    1.29 -  less I/O as we will expect to find the string within the block we
    1.30 -  look up with the hash function.
    1.31 -
    1.32 -- represent all files as a breadth first traversal of the tree of all
    1.33 -  files.  each entry has its name (string pool index), the number of
    1.34 -  immediate children, total number of children, and owning package.
    1.35 -  for files both these numbers are zero.  a file is identified by its
    1.36 -  index in this flattened tree.
    1.37 -
    1.38 -  to get the file name from an index, we search through the list.  by
    1.39 -  summing up the number of children, we know when to skip a directory
    1.40 -  and when to descend into one.  as we go we accumulate the path
    1.41 -  elements.
    1.42 -
    1.43 -  hmm, dropping number of immediate children and using a sentinel drops
    1.44 -  a word from every entry.
    1.45 -
    1.46  - signed pkgs
    1.47  
    1.48  - gzip repository of look-aside pkg xml files somehow?
    1.49 @@ -70,9 +31,6 @@
    1.50    way we can assign them unique IDs immediately (like tokenizing
    1.51    strings).
    1.52  
    1.53 -- bash completion for 'razor install gtk2-<TAB>' og
    1.54 -  'razor install /usr/bin/gtk-perf<TAB>'
    1.55 -
    1.56  - test suite should be easy, just keep .repo files around and test
    1.57    different type of upgrades that way (obsoletes, conflicts, file
    1.58    conflicts, file/dir problems etc).  Or maybe just keep a simple file
    1.59 @@ -86,3 +44,6 @@
    1.60  - make packages pointers be either an index into the package pool or a
    1.61    direct link to a package when there is only one package.  set a high
    1.62    bit to indicate which it is.  similar for properties.
    1.63 +
    1.64 +- split out hash table code from importer, make the merger use just
    1.65 +  the hash table.