1.1 --- a/TODO Thu Nov 08 17:14:19 2007 -0500
1.2 +++ b/TODO Thu Dec 27 15:46:52 2007 -0500
1.3 @@ -1,10 +1,15 @@
1.4 Towards replacing rpm + yum (0.1):
1.5
1.6 -- installer part
1.7 +- installer part:
1.8
1.9 -- rpm file parser, create repo command
1.10 + - pre install check; check that dirs can be created (no files where
1.11 + want to create dirs), move config files according to file
1.12 + flags. (.rpmnew etc)
1.13
1.14 -- conflicts, obsoletes
1.15 + - run hooks; probably fork to shell and in the parent just do a
1.16 + write() of the hook section to a pipe to the shell.
1.17 +
1.18 + - store rpm headers for installed packages.
1.19
1.20 - versions in depsolving
1.21
1.22 @@ -25,17 +30,29 @@
1.23
1.24 - version the sections in the file, put the element size in the header
1.25 so we can add stuff to elements in a backwards compatible way.
1.26 + maybe not necessary, we can just add sections that augment the
1.27 + sections we want to add to (similar to how rpm has add versioned
1.28 + deps).
1.29 +
1.30 +- pipelined download and install; topo-sort packages in update set,
1.31 + pick one with all deps in the current set, add it to the current set
1.32 + and satisfy deps against update set => result: minimal update
1.33 + transaction. Queue download and install/update transaction for the
1.34 + packages in the minimal set, start over. This also makes the
1.35 + installation phase much more interruptible, basically just stop
1.36 + after a sub-transaction finishes. As we keep the update set around
1.37 + as a target, we can restart if needed. Probably don't need to, can
1.38 + just do a new update. During a sub-transaction we should keep the
1.39 + target set (i.e. the current set to be) around as a lock file
1.40 + (system.repo.lock or so, see git) so that razor updates are
1.41 + prevented if the systems crashes during an update.
1.42
1.43 Misc ideas:
1.44
1.45 -- eliminate duplicate entries in package property lists.
1.46 -
1.47 - keep history of installed packages/journal of package transaction,
1.48 so we can roll back to yesterday, or see what got installed in the
1.49 latest yum update.
1.50
1.51 -- gzip repository of look-aside pkg xml files somehow?
1.52 -
1.53 - transactions, proper recovery, make sure we don't poop our package
1.54 database (no more rm /var/lib/rpm/__cache*).
1.55
1.56 @@ -63,14 +80,6 @@
1.57 conflicts, file/dir problems etc). Or maybe just keep a simple file
1.58 format ad use a custom importer to create the .repo files.
1.59
1.60 -- pipelined download and install; download is network bound, install
1.61 - is disk bound. Start installing once we have self-contained set of
1.62 - packages. Install in reverse topo-sort order. Interruptible
1.63 - installation; stops at nearest checkpoint.
1.64 -
1.65 -- split out hash table code from importer, make the merger use just
1.66 - the hash table.
1.67 -
1.68 - try to clean up the
1.69
1.70 do { ... } while (((e++)->name & RAZOR_ENTRY_LAST) == 0);
1.71 @@ -90,9 +99,21 @@
1.72 base.
1.73
1.74 - incremental rawhide repo updates? instead of downloading 10MB zipped
1.75 - repo every time, download a diff repo?
1.76 + repo every time, download a diff repo? Should be pretty small,
1.77 + especially if we don't have file checksums in metadata. Filenames
1.78 + and properties are for the most part already present, typically just
1.79 + a version bump plus maybe tweaking a couple requires. The upstream
1.80 + repo can store multiple incremental updates in one big file and
1.81 + provide an index file that maps updates for a given date (we should
1.82 + use repo-file checksums though) to a range in the file: Download the
1.83 + index file, search for a match for your latest rawhide.repo file,
1.84 + download range of updates that brings it up to date.
1.85
1.86 - use hash tables for dirs when importing files to avoid qsorting all
1.87 files in rawhide.
1.88
1.89 +Bugs:
1.90 +
1.91 +- eliminate duplicate entries in package property lists.
1.92 +
1.93 - corner cases such as no files/properties in repo etc segfault.