| 1 | GLEP: 61 |
1 | GLEP: 61 |
| 2 | Title: Manifest2 compression |
2 | Title: Manifest2 compression |
| 3 | Version: $Revision: 1.1 $ |
3 | Version: $Revision: 1.5 $ |
| 4 | Last-Modified: $Date: 2008/10/21 23:30:47 $ |
4 | Last-Modified: $Date: 2010/01/31 08:27:05 $ |
| 5 | Author: Robin Hugh Johnson <robbat2@gentoo.org> |
5 | Author: Robin Hugh Johnson <robbat2@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 | Requires: 44 |
9 | Requires: 44 |
| 10 | Created: July 2008 |
10 | Created: July 2008 |
|
|
11 | Updated: October 2008, January 2010 |
| 11 | Updates: 44 |
12 | Updates: 44 |
|
|
13 | Post-History: December 2009, January 2010 |
| 12 | |
14 | |
| 13 | Abstract |
15 | Abstract |
| 14 | ======== |
16 | ======== |
| 15 | Deals with compression of large Manifest2 files. |
17 | Deals with compression of large Manifest2 files. |
| 16 | |
18 | |
| … | |
… | |
| 18 | ========== |
20 | ========== |
| 19 | With the introduction of MetaManifest, and full-tree Manifest coverage, |
21 | With the introduction of MetaManifest, and full-tree Manifest coverage, |
| 20 | we are faced with the possibility of having very large Manifests. |
22 | we are faced with the possibility of having very large Manifests. |
| 21 | |
23 | |
| 22 | Preliminary experiments with MetaManifest, show that with just the |
24 | Preliminary experiments with MetaManifest, show that with just the |
| 23 | existing per-package Manifests, the full MetaManifest, for a tree |
25 | existing per-package Manifests, the full MetaManifest (top-level only, |
| 24 | including metadata/, exceeds 8MiB in size. Applying common compression |
26 | no first-level sub directories), for a tree including metadata/, exceeds |
| 25 | can achieve a 50-60% reduction in this size. |
27 | 8MiB in size. Applying common compression can achieve a 50-60% reduction |
|
|
28 | in this size. |
|
|
29 | |
|
|
30 | Additionally, some of the larger already-existing Manifests in the tree |
|
|
31 | can also be reduced. |
| 26 | |
32 | |
| 27 | Specification |
33 | Specification |
| 28 | ============= |
34 | ============= |
|
|
35 | Creation of compressed Manifests: |
|
|
36 | --------------------------------- |
|
|
37 | 32KiB is suggested as a arbitrary cut-off point to start generating |
|
|
38 | compressed Manifest2 files. |
|
|
39 | |
|
|
40 | The compression must only applied during the creation of a tree intended |
|
|
41 | for end users. No Manifests stored in a VCS should be compressed in the |
|
|
42 | VCS. For the main gentoo-portage tree, this means that the compressed |
|
|
43 | Manifests should be generated using the CVS to Rsync process. |
|
|
44 | |
|
|
45 | The Manifest compression process is required to ensure that inconsistent |
|
|
46 | compressed versions do not exist. |
|
|
47 | |
|
|
48 | Validation of Manifests: |
|
|
49 | ------------------------ |
| 29 | When searching for a Manifest2 file, if the basename form does not |
50 | When searching for a Manifest2 file, if the basename form does not |
| 30 | exist, the package manager should search in the same location using |
51 | exist, the package manager should search in the same location using |
| 31 | common compressed suffixes, and use the compressed file in place of the |
52 | common compressed suffixes, and use the compressed file in place of the |
| 32 | Manifest2. |
53 | Manifest2. |
| 33 | |
54 | |
| 34 | gzip, bzip2, lzma should all be supported if available on the given |
55 | gzip, bzip2, lzma, xz should all be supported if available on the given |
| 35 | platform. In the case that multiple versions exist, the package manager |
56 | platform. In the case that multiple versions exist, the package manager |
| 36 | should simply pick one - they should be identical, differing only in |
57 | should simply pick one - they should be identical, differing only in |
| 37 | compression. |
58 | compression. |
| 38 | |
59 | |
| 39 | The Manifest generation process is required to ensure that inconsistent |
60 | Example Results with a 32KiB cut-off, gzip algorithm |
| 40 | compressed versions do not exist. |
61 | ==================================================== |
|
|
62 | As of 2010/01/30, the suggested cut-off would impact the following 21 existing |
|
|
63 | Manifests, for a saving of nearly 900KiB:: |
|
|
64 | |
|
|
65 | Size Path |
|
|
66 | 65788 app-doc/linux-gazette/Manifest |
|
|
67 | 75739 app-office/openoffice-bin/Manifest |
|
|
68 | 40534 app-text/texlive-core/Manifest |
|
|
69 | 41710 dev-texlive/texlive-bibtexextra/Manifest |
|
|
70 | 38197 dev-texlive/texlive-documentation-english/Manifest |
|
|
71 | 129610 dev-texlive/texlive-fontsextra/Manifest |
|
|
72 | 36022 dev-texlive/texlive-humanities/Manifest |
|
|
73 | 686118 dev-texlive/texlive-latexextra/Manifest |
|
|
74 | 43392 dev-texlive/texlive-latexrecommended/Manifest |
|
|
75 | 33375 dev-texlive/texlive-mathextra/Manifest |
|
|
76 | 39781 dev-texlive/texlive-pictures/Manifest |
|
|
77 | 69567 dev-texlive/texlive-pstricks/Manifest |
|
|
78 | 75460 dev-texlive/texlive-publishers/Manifest |
|
|
79 | 50879 dev-texlive/texlive-science/Manifest |
|
|
80 | 36711 kde-base/kde-l10n/Manifest |
|
|
81 | 36539 media-gfx/bootsplash-themes/Manifest |
|
|
82 | 33058 net-fs/autofs/Manifest |
|
|
83 | 39781 www-client/firefox-bin/Manifest |
|
|
84 | 48983 www-client/icecat/Manifest |
|
|
85 | 60213 www-client/mozilla-firefox/Manifest |
|
|
86 | 39065 x11-themes/gkrellm-themes/Manifest |
|
|
87 | |
|
|
88 | |
|
|
89 | Additionally, with the MetaManifest proposal, the following new manifests would |
|
|
90 | also be compressed, for a saving of nearly 4MiB:: |
|
|
91 | |
|
|
92 | Size Path |
|
|
93 | 33442 app-admin/Manifest |
|
|
94 | 71073 app-dicts/Manifest |
|
|
95 | 35923 app-emacs/Manifest |
|
|
96 | 45808 app-misc/Manifest |
|
|
97 | 50169 app-text/Manifest |
|
|
98 | 112786 dev-java/Manifest |
|
|
99 | 65581 dev-libs/Manifest |
|
|
100 | 42619 dev-lisp/Manifest |
|
|
101 | 182163 dev-perl/Manifest |
|
|
102 | 96198 dev-python/Manifest |
|
|
103 | 58963 dev-ruby/Manifest |
|
|
104 | 59736 dev-util/Manifest |
|
|
105 | 58338 eclass/Manifest |
|
|
106 | 55749 kde-base/Manifest |
|
|
107 | 110064 licenses/Manifest |
|
|
108 | 35262 media-gfx/Manifest |
|
|
109 | 53995 media-libs/Manifest |
|
|
110 | 55607 media-plugins/Manifest |
|
|
111 | 71911 media-sound/Manifest |
|
|
112 | 34835 media-video/Manifest |
|
|
113 | 5747849 metadata/Manifest |
|
|
114 | 47452 net-analyzer/Manifest |
|
|
115 | 65989 net-misc/Manifest |
|
|
116 | 316787 profiles/Manifest |
|
|
117 | 67784 sys-apps/Manifest |
|
|
118 | 48971 x11-misc/Manifest |
|
|
119 | 41475 x11-plugins/Manifest |
|
|
120 | |
| 41 | |
121 | |
| 42 | Backwards Compatibility |
122 | Backwards Compatibility |
| 43 | ======================= |
123 | ======================= |
| 44 | The package Manifests should also be maintained as ONLY uncompressed in |
124 | The package Manifests should also be maintained as ONLY uncompressed in |
| 45 | CVS. |
125 | CVS. |
| … | |
… | |
| 53 | MetaManifests may come into existence as compressed from the start, as |
133 | MetaManifests may come into existence as compressed from the start, as |
| 54 | do not have an backwards compatibility issues. |
134 | do not have an backwards compatibility issues. |
| 55 | |
135 | |
| 56 | As a side note, this breaks all manual interaction with Manifests |
136 | As a side note, this breaks all manual interaction with Manifests |
| 57 | such as grep, and so should only be applied to large Manifest2 files, |
137 | such as grep, and so should only be applied to large Manifest2 files, |
| 58 | such as the MetaManifest. 384KiB is suggested as a arbitary cut-off |
138 | such as the MetaManifest. |
| 59 | point to start generating compressed Manifest2 files. |
|
|
| 60 | |
139 | |
| 61 | References |
140 | References |
| 62 | ========== |
141 | ========== |
| 63 | .. [#GLEP44] Mauch, M. (2005) GLEP44 - Manifest2 format. |
142 | .. [#GLEP44] Mauch, M. (2005) GLEP44 - Manifest2 format. |
| 64 | http://www.gentoo.org/proj/en/glep/glep-0044.html |
143 | http://www.gentoo.org/proj/en/glep/glep-0044.html |
| 65 | |
144 | |
| 66 | Copyright |
145 | Copyright |
| 67 | ========= |
146 | ========= |
| 68 | Copyright (c) 2007 by Robin Hugh Johnson. This material may be |
147 | Copyright (c) 2008-2010 by Robin Hugh Johnson. This material may be |
| 69 | distributed only subject to the terms and conditions set forth in the |
148 | distributed only subject to the terms and conditions set forth in the |
| 70 | Open Publication License, v1.0. |
149 | Open Publication License, v1.0. |
| 71 | |
150 | |
| 72 | vim: tw=72 ts=2 expandtab: |
151 | vim: tw=72 ts=2 expandtab: |