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