krh@1: - pkg manifest is list of files krh@1: krh@1: /usr/bin/bash 1321321372198798 krh@1: krh@1: plus provides, requires and version? krh@1: krh@1: - keep history of installed packages/journal of package transaction, krh@1: so we can roll back to yesterday, or see what got installed in the krh@1: latest yum update. krh@1: krh@1: - we build a cache of the currently installed set to service krh@1: dependency inquiries fast: krh@1: krh@1: map from property to pkg (as hash) providing it krh@1: map from property to pkgs requiring it krh@1: map from pkg name to manifest krh@1: map from string to string pool index krh@1: krh@1: no implicit provides? not even pkgname? krh@1: krh@1: - properties are strings, stored in a string table krh@1: krh@1: - on disk maps are binary files of (string table index, hash) pairs krh@1: krh@1: - at run time, we mmap the map, and keep changes in memory in a splay krh@1: tree or similar. if searching the splay tree fails we punt to the krh@1: mmap. once the transaction is done, we merge the map and the splay krh@1: tree and write it back out. krh@1: krh@1: - the on-disk string pool is sorted and we keep a list of indices into krh@1: the string pool in sorted order so we can bsearch the list with a krh@1: string to get its string pool index. maybe a hash table is better, krh@1: less I/O as we will expect to find the string within the block we krh@1: look up with the hash function. krh@1: krh@1: - signed pkgs krh@1: - gzip pkg xml files somehow?