Upload Tizen:Main source
[external/libsatsolver.git] / doc / autoinclude / Format.doc
1 /** \page formatpage Solv file format
2
3 Metadata information is stored as '.solv' files
4
5 These files have the following format:
6
7 \section formatv0 V0 format
8  
9 \code
10   MAGIC: 'SOLV'
11   U32:   0
12  
13   -- sizes --
14  
15   U32:   NUMID                       /* number of Ids (names) */
16   U32:   NUMREL                      /* number of RelDeps (dependencies) */
17   U32:   NUMSOLV                     /* number of Solvables (packages) */
18   
19   -- string data --
20   U32:   SIZEID                      /* total size of string buffer */
21    U8*:   DICT (SIZE SIZEID)         /* (raw) string buffer */
22   
23   -- reldep data --
24    U8*:   RELDICT                    /* Buffer for RandDeps (Id,Id,u8) */
25  
26   -- source data --                  /* apparently unused */
27   
28   U32:   NUMSRCDATA
29    U8 :   TYPE                        /* TYPE_ID, TYPE_U32, TYPE_STR */
30    ID :   DATAID
31    ID | U32 | U8*
32   
33   -- solvables --
34  
35   U32:   NUMSOLVDATA
36    U8 :   TYPE
37    ID :   DATAID
38    U32:   NUM/SIZE
39   
40   U8*: BITS
41   U8*: DATA
42
43
44 V6 format
45 =========
46
47   MAGIC: 'SOLV'
48   U32:   6
49
50   U32:   NUMID                       /* number of Ids (names) */
51   U32:   NUMREL                      /* number of RelDeps (dependencies) */
52   U32:   NUMDIR                      /* number of directories */
53   U32:   NUMITEM                     /* number of items (packages) */
54   U32:   NUMKEYS
55   U32:   NUMSCHEMATA                 /* number of schemata */
56   U32:   NUMINFO
57   U32:   FLAGS                       /* solv file flags */
58                         4:PREFIX_POOL
59
60   -- string data --
61   ID:    SIZEID                      /* total size of string buffer */
62    U8*:  DICT (SIZE SIZEID)          /* (raw) string buffer */
63
64   -- reldep data --
65    U8*:  RELDICT                     /* Buffer for RandDeps (Id,Id,u8) */
66
67   -- directory data --
68    U8*:  DIRDICT                     /* Buffer for dirs (Id,Id) */
69
70   -- key data --
71   NUMKEYS *
72     ID: name
73     ID: type
74     ID: expanded num/size
75
76   -- schemata data --
77   ID: expanded schemata size
78   NUMSCHEMATA *
79     IDARRAY* keys
80
81   -- file information --
82   ID maxinfolen  (IF NUMINFO)
83   ID allinfolen  (IF NUMINFO)
84   NUMINFO *
85     ID schema
86     U8 *data
87
88   -- item data --
89   ID maxitemlen  (IF NUMITEM)
90   ID allitemlen  (IF NUMITEM)
91   NUMITEM *
92     ID schema
93     U8* data
94
95   -- paged vertical data --
96   U32 pagesize
97   NPAGES *
98     U32 len * 2 + compressedflag
99     U8* data
100
101 \endcode
102
103 key sizes for storage types:
104
105 \code
106 KEY_STORAGE_VERTICAL_OFFSET: packed size
107 KEY_STORAGE_INCORE: packed size
108 KEY_STORAGE_SOLVABLE: unpacked size
109 \endcode
110
111 */