| 1 | GLEP: 44 |
1 | GLEP: 44 |
| 2 | Title: Manifest2 format |
2 | Title: Manifest2 format |
| 3 | Version: $Revision: 1.2 $ |
3 | Version: $Revision: 1.3 $ |
| 4 | Last-Modified: $Date: 2005/12/06 16:19:37 $ |
4 | Last-Modified: $Date: 2006/01/23 10:24:24 $ |
| 5 | Author: Marius Mauch <genone@gentoo.org>, |
5 | Author: Marius Mauch <genone@gentoo.org>, |
| 6 | Status: Draft |
6 | Status: Draft |
| 7 | Type: Standards Track |
7 | Type: Standards Track |
| 8 | Content-Type: text/x-rst |
8 | Content-Type: text/x-rst |
| 9 | Created: 04-Dec-2005 |
9 | Created: 04-Dec-2005 |
| 10 | Post-History: 06-Dec-2005 |
10 | Post-History: 06-Dec-2005, 23-Jan-2006 |
| 11 | |
11 | |
| 12 | |
12 | |
| 13 | Abstract |
13 | Abstract |
| 14 | ======== |
14 | ======== |
| 15 | |
15 | |
| … | |
… | |
| 23 | |
23 | |
| 24 | Please see [#reorg-thread]_ for a general overview. |
24 | Please see [#reorg-thread]_ for a general overview. |
| 25 | The main long term goals of this proposal are to: |
25 | The main long term goals of this proposal are to: |
| 26 | |
26 | |
| 27 | - Remove the tiny digest files from the tree. They are a major annoyance as on a |
27 | - Remove the tiny digest files from the tree. They are a major annoyance as on a |
| 28 | typical configuration they waste a lot of discspace and the simple transmission |
28 | typical configuration they waste a lot of disk space and the simple transmission |
| 29 | of the names for all digest files during a ``emerge --sync`` needs a substantial |
29 | of the names for all digest files during a ``emerge --sync`` needs a substantial |
| 30 | amount of bandwidth. |
30 | amount of bandwidth. |
| 31 | - Reduce redundancy when multiple hash functions are used |
31 | - Reduce redundancy when multiple hash functions are used |
| 32 | - Remove potential for checksum collisions if a file is recorded in more than one |
32 | - Remove potential for checksum collisions if a file is recorded in more than one |
| 33 | digest file |
33 | digest file |
| … | |
… | |
| 47 | * ``EBUILD`` for all ebuilds |
47 | * ``EBUILD`` for all ebuilds |
| 48 | |
48 | |
| 49 | * ``MISCFILE`` for files not directly used by ebuilds like ``ChangeLog`` or |
49 | * ``MISCFILE`` for files not directly used by ebuilds like ``ChangeLog`` or |
| 50 | ``metadata.xml`` files |
50 | ``metadata.xml`` files |
| 51 | |
51 | |
| 52 | * ``SRCURI`` for release tarballs recorded in the ``SRC_URI`` variable of an ebuild, |
52 | * ``DISTFILE`` for release tarballs recorded in the ``SRC_URI`` variable of an ebuild, |
| 53 | these were previously recorded in the digest files |
53 | these were previously recorded in the digest files |
| 54 | |
54 | |
| 55 | Future portage improvements might extend this list (for example with types |
55 | Future portage improvements might extend this list (for example with types |
| 56 | relevant for eclasses or profiles) |
56 | relevant for eclasses or profiles) |
| 57 | |
57 | |
| … | |
… | |
| 86 | SHA1 358278a43da244e1f4803ec4b04d6fa45c41ab4d MD5 15b5c9348ba0b0a416892588256b4cbc |
86 | SHA1 358278a43da244e1f4803ec4b04d6fa45c41ab4d MD5 15b5c9348ba0b0a416892588256b4cbc |
| 87 | MISCFILE ChangeLog 25770 RMD160 0e69dd7425add1560d630dd3367342418e9be776 |
87 | MISCFILE ChangeLog 25770 RMD160 0e69dd7425add1560d630dd3367342418e9be776 |
| 88 | SHA1 1210160f7baf0319de3b1b58dc80d7680d316d28 MD5 732cdc3b41403a115970d497a9ec257e |
88 | SHA1 1210160f7baf0319de3b1b58dc80d7680d316d28 MD5 732cdc3b41403a115970d497a9ec257e |
| 89 | MISCFILE metadata.xml 269 RMD160 39d775de55f9963f8946feaf088aa0324770bacb |
89 | MISCFILE metadata.xml 269 RMD160 39d775de55f9963f8946feaf088aa0324770bacb |
| 90 | SHA1 4fd7b285049d0e587f89e86becf06c0fd77bae6d MD5 82e806ed62f0596fb7bef493d225712f |
90 | SHA1 4fd7b285049d0e587f89e86becf06c0fd77bae6d MD5 82e806ed62f0596fb7bef493d225712f |
| 91 | SRCURI sylpheed-claws-1.0.5.tar.bz2 3268626 RMD160 f2708b5d69bc9a5025812511fde04eca7782e367 |
91 | DISTFILE sylpheed-claws-1.0.5.tar.bz2 3268626 RMD160 f2708b5d69bc9a5025812511fde04eca7782e367 |
| 92 | SHA1 d351d7043eef7a875df18a8c4b9464be49e2164b MD5 ef4a1a7beb407dc7c31b4799bc48f12e |
92 | SHA1 d351d7043eef7a875df18a8c4b9464be49e2164b MD5 ef4a1a7beb407dc7c31b4799bc48f12e |
| 93 | SRCURI sylpheed-claws-1.9.100.tar.bz2 3480063 RMD160 72fbcbcc05d966f34897efcc1c96377420dc5544 |
93 | DISTFILE sylpheed-claws-1.9.100.tar.bz2 3480063 RMD160 72fbcbcc05d966f34897efcc1c96377420dc5544 |
| 94 | SHA1 47465662b5470af5711493ce4eaad764c5bf02ca MD5 863c314557f90f17c2f6d6a0ab57e6c2 |
94 | SHA1 47465662b5470af5711493ce4eaad764c5bf02ca MD5 863c314557f90f17c2f6d6a0ab57e6c2 |
| 95 | SRCURI sylpheed-claws-1.9.15.tar.bz2 3481018 RMD160 b01d1af2df55806a8a8275102b10e389e0d98e94 |
95 | DISTFILE sylpheed-claws-1.9.15.tar.bz2 3481018 RMD160 b01d1af2df55806a8a8275102b10e389e0d98e94 |
| 96 | SHA1 a17fc64b8dcc5b56432e5beb5c826913cb3ad79e MD5 0d187526e0eca23b87ffa4981f7e1765 |
96 | SHA1 a17fc64b8dcc5b56432e5beb5c826913cb3ad79e MD5 0d187526e0eca23b87ffa4981f7e1765 |
| 97 | |
97 | |
| 98 | |
98 | |
| 99 | Compability Entries |
99 | Compability Entries |
| 100 | ------------------- |
100 | ------------------- |
| … | |
… | |
| 132 | |
132 | |
| 133 | Removal of digest files |
133 | Removal of digest files |
| 134 | ----------------------- |
134 | ----------------------- |
| 135 | |
135 | |
| 136 | Normal users that don't use a "tuned" filesystem for the portage tree are |
136 | Normal users that don't use a "tuned" filesystem for the portage tree are |
| 137 | wasting several dozen to a few hundred megabytes of discspace with the current |
137 | wasting several dozen to a few hundred megabytes of disk space with the current |
| 138 | system, largely caused by the digest files. |
138 | system, largely caused by the digest files. |
| 139 | This is due to the filesystem overhead present in most filesystem that |
139 | This is due to the filesystem overhead present in most filesystem that |
| 140 | have a standard blocksize of four kilobytes while most digest files are under |
140 | have a standard blocksize of four kilobytes while most digest files are under |
| 141 | one kilobyte in size, so this results in approximately a waste of three kilobytes |
141 | one kilobyte in size, so this results in approximately a waste of three kilobytes |
| 142 | per digest file (likely even more). At the time of this writing the tree contains |
142 | per digest file (likely even more). At the time of this writing the tree contains |
| 143 | roughly 22.000 digest files, so the overall waste caused by digest files is |
143 | roughly 22.000 digest files, so the overall waste caused by digest files is |
| 144 | estimated at about 70-100 megabytes. |
144 | estimated at about 70-100 megabytes. |
| 145 | Furthermore it is assumed that this will also reduce the discspace wasted by |
145 | Furthermore it is assumed that this will also reduce the disk space wasted by |
| 146 | the Manifest files as they now contain more content, but this hasn't been |
146 | the Manifest files as they now contain more content, but this hasn't been |
| 147 | verified yet. |
147 | verified yet. |
| 148 | |
148 | |
| 149 | By unifying the digest files with the Manifest these tiny files are eliminated |
149 | By unifying the digest files with the Manifest these tiny files are eliminated |
| 150 | (in the long run), reducing the apparent tree size by about 20%, benefitting |
150 | (in the long run), reducing the apparent tree size by about 20%, benefitting |
| … | |
… | |
| 161 | use, but expected to change soon (see [#multi-hash-thread]_). |
161 | use, but expected to change soon (see [#multi-hash-thread]_). |
| 162 | |
162 | |
| 163 | Removal of checksum collisions |
163 | Removal of checksum collisions |
| 164 | ------------------------------ |
164 | ------------------------------ |
| 165 | |
165 | |
| 166 | The current system theoretically allows for a ``SRCURI`` type file to be recorded |
166 | The current system theoretically allows for a ``DISTFILE`` type file to be recorded |
| 167 | in multiple digest files with different sizes and/or checksums. In such a case |
167 | in multiple digest files with different sizes and/or checksums. In such a case |
| 168 | one version of a package would report a checksum violation while another one |
168 | one version of a package would report a checksum violation while another one |
| 169 | would not. This could create confusion and uncertainity among users. |
169 | would not. This could create confusion and uncertainity among users. |
| 170 | So far this case hasn't been observed, but it can't be ruled out with the |
170 | So far this case hasn't been observed, but it can't be ruled out with the |
| 171 | existing system. |
171 | existing system. |
| … | |
… | |
| 173 | |
173 | |
| 174 | Flexible verification system |
174 | Flexible verification system |
| 175 | ---------------------------- |
175 | ---------------------------- |
| 176 | |
176 | |
| 177 | Right now portage verifies the checksum of every file listed in the Manifest |
177 | Right now portage verifies the checksum of every file listed in the Manifest |
| 178 | before using any file of the package and all ``SRCURI`` files of an ebuild |
178 | before using any file of the package and all ``DISTFILE`` files of an ebuild |
| 179 | before using that ebuild. This is unnecessary in many cases: |
179 | before using that ebuild. This is unnecessary in many cases: |
| 180 | |
180 | |
| 181 | - During the "depend" phase (when the ebuild metadata is generated) only |
181 | - During the "depend" phase (when the ebuild metadata is generated) only |
| 182 | files of type ``EBUILD`` are used, so verifying the other types isn't |
182 | files of type ``EBUILD`` are used, so verifying the other types isn't |
| 183 | necessary. Theoretically it is possible for an ebuild to include other |
183 | necessary. Theoretically it is possible for an ebuild to include other |
| … | |
… | |
| 188 | |
188 | |
| 189 | - Generally files of type ``MISCFILE`` don't need to be verified as they are |
189 | - Generally files of type ``MISCFILE`` don't need to be verified as they are |
| 190 | only used in very specific situations, aren't executed (just parsed at most) |
190 | only used in very specific situations, aren't executed (just parsed at most) |
| 191 | and don't affect the package build process. |
191 | and don't affect the package build process. |
| 192 | |
192 | |
| 193 | - Files of type ``SRCURI`` only need to be verified directly after fetching and |
193 | - Files of type ``DISTFILE`` only need to be verified directly after fetching and |
| 194 | before unpacking them (which often will be one step), not every time their |
194 | before unpacking them (which often will be one step), not every time their |
| 195 | associated ebuild is used. |
195 | associated ebuild is used. |
| 196 | |
196 | |
| 197 | |
197 | |
| 198 | Backwards Compatibility |
198 | Backwards Compatibility |
| … | |
… | |
| 290 | |
290 | |
| 291 | - convert size field into checksum: Another idea was to treat the size field |
291 | - convert size field into checksum: Another idea was to treat the size field |
| 292 | like any other checksum. But so far no real benefit (other than a slightly |
292 | like any other checksum. But so far no real benefit (other than a slightly |
| 293 | more modular implementation) for this has been seen while it has several |
293 | more modular implementation) for this has been seen while it has several |
| 294 | drawbacks: For once, unlike checksums, the size field is definitely required |
294 | drawbacks: For once, unlike checksums, the size field is definitely required |
| 295 | for all ``SRCURI`` files, also it would slightly increase the length of |
295 | for all ``DISTFILE`` files, also it would slightly increase the length of |
| 296 | each entry by adding a ``SIZE`` keyword. |
296 | each entry by adding a ``SIZE`` keyword. |
| 297 | |
297 | |
| 298 | - removal of the ``MISCFILE`` type: It has been suggested to completely drop |
298 | - removal of the ``MISCFILE`` type: It has been suggested to completely drop |
| 299 | entries of type ``MISCFILE``. This would result in a minor space reduction |
299 | entries of type ``MISCFILE``. This would result in a minor space reduction |
| 300 | (its rather unlikely to free any blocks) but completely remove the ability |
300 | (its rather unlikely to free any blocks) but completely remove the ability |