====== SolvitDB library ====== The ``solvitdb`` library is a part of [[solvit|lib:solvit]] and it is the part that can read and modify .svt (Solvit Database) files. ===== Solvit Database format ===== bleh ==== Specification ==== 4 bytes - length of the PAT (little endian uint32)\\ 4 bytes - ``RTFM`` magic bytes\\ === PAT === For each package: n bytes - package name\\ 1 byte - ``.``\\ 4 bytes - package data start location (not including the length of the PAT or other things at the start) (little endian uint32)\\ 1 byte - ``;`` === Package data === For each package: 1 byte - package type (``P`` - package, ``G`` - group, ``V`` - virtual package)\\ n bytes - one or multiple series (described below)\\ 1 byte - newline, package data end marker == Series == There can be multiple series in the data for one package. Described below will be one single series, however they can be chained without any additional separators. 1 byte - series type (``d`` - dependencies, ``D`` - reverse dependencies, ``c`` - conflicts, ``p`` - packages (if it is a group or vpackage)) For each item: n bytes - item name 1 byte - series separator, ``;`` unless it is the last item in the series, in which case it is ``.`` ==== Notable design features ==== * Compact * Readable without loading the entire file (which can get pretty big) into RAM