TODO
author Kristian H?gsberg <krh@redhat.com>
Mon Nov 05 21:55:31 2007 -0500 (2007-11-05)
changeset 72 4fddfa5f29fa
parent 70 e94d16f789e5
child 74 f23a93d41f32
permissions -rw-r--r--
Only download yum files if they're not there.
     1 Towards replacing rpm + yum (0.1):
     2 
     3 - installer part
     4 
     5 - rpm file parser, create repo command
     6 
     7 - conflicts, obsoletes
     8 
     9 - versions in depsolving
    10 
    11 - signed packages
    12 
    13 - merge file lists when merging package sets
    14 
    15 - download (libcurl?)
    16 
    17 - figure out how to canonically represent empty string... ~0?
    18 
    19 - space calculation before transaction, but ideally, do a number of
    20   smaller transactions.
    21 
    22 - pre-link changing binaries and libs on disk screwing up checksum?
    23 
    24 Misc ideas:
    25 
    26 - eliminate duplicate entries in package property lists.
    27 
    28 - keep history of installed packages/journal of package transaction,
    29   so we can roll back to yesterday, or see what got installed in the
    30   latest yum update.
    31 
    32 - gzip repository of look-aside pkg xml files somehow?
    33 
    34 - transactions, proper recovery, make sure we don't poop our package
    35   database (no more rm /var/lib/rpm/__cache*).
    36 
    37 - rewrite qsort and bsearch that doesn't require global context var
    38   and can output a map describing the permutaion.
    39 
    40 - use hash table for package and property lists so we only store
    41   unique lists (like for string pool).
    42 
    43 - use existing, running system as repo; eg
    44 
    45 	razor update razor://other-box.local evince
    46 
    47   to pull eg the latest evince and dependencies from another box.  We
    48   should be able to regenerate a rzr pkg from the system so we can
    49   reuse the signature from the originating repo.
    50 
    51 - Ok, maybe the fastest package set merge method in the end is to use
    52   the razor_importer, but use a hash table for the properties.  This
    53   way we can assign them unique IDs immediately (like tokenizing
    54   strings).
    55 
    56 - test suite should be easy, just keep .repo files around and test
    57   different type of upgrades that way (obsoletes, conflicts, file
    58   conflicts, file/dir problems etc).  Or maybe just keep a simple file
    59   format ad use a custom importer to create the .repo files.
    60 
    61 - pipelined download and install; download is network bound, install
    62   is disk bound.  Start installing once we have self-contained set of
    63   packages.  Install in reverse topo-sort order.  Interruptible
    64   installation; stops at nearest checkpoint.
    65 
    66 - split out hash table code from importer, make the merger use just
    67   the hash table.
    68 
    69 - try to clean up the
    70 
    71 	do { ... } while (((e++)->name & RAZOR_ENTRY_LAST) == 0);
    72 
    73   idiom for iteration of directories.
    74 
    75 - version the sections in the file, put the element size in the header
    76   so we can add stuff to elements in a backwards compatible way.
    77 
    78 - overlay package sets?  mount a read-only /usr over nfs or from the
    79   virt-host and have a local package set overlaid over the read-only
    80   one.  shouldn't need new features in the core package set data
    81   structure, but should be just conventions on top.  we have the base
    82   package set from the r/o system, the overlay set from the local
    83   system and we can have an effective package set which is the merge
    84   of everything from the overlay into the base set.  the effective set
    85   is easy to compute and we could do it on the fly or cache it.  or
    86   maybe the effective set is the on-disk representation and the
    87   overlay can be computed when needed, we just keep a link back to the
    88   base.
    89 
    90 - incremental rawhide repo updates? instead of downloading 10MB zipped
    91   repo every time, download a diff repo?