/[gentoo]/xml/htdocs/proj/en/glep/glep-0061.html
Gentoo

Diff of /xml/htdocs/proj/en/glep/glep-0061.html

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

Revision 1.1 Revision 1.5
2<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 2<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
3<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> 3<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
4 4
5<head> 5<head>
6 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 6 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
7 <meta name="generator" content="Docutils 0.5: http://docutils.sourceforge.net/" /> 7 <meta name="generator" content="Docutils 0.6: http://docutils.sourceforge.net/" />
8 <title>GLEP 61 -- Manifest2 compression</title> 8 <title>GLEP 61 -- Manifest2 compression</title>
9 <link rel="stylesheet" href="tools/glep.css" type="text/css" /></head> 9 <link rel="stylesheet" href="tools/glep.css" type="text/css" /></head>
10<body bgcolor="white"> 10<body bgcolor="white">
11<table class="navigation" cellpadding="0" cellspacing="0" 11<table class="navigation" cellpadding="0" cellspacing="0"
12 width="100%" border="0"> 12 width="100%" border="0">
25<tbody valign="top"> 25<tbody valign="top">
26<tr class="field"><th class="field-name">GLEP:</th><td class="field-body">61</td> 26<tr class="field"><th class="field-name">GLEP:</th><td class="field-body">61</td>
27</tr> 27</tr>
28<tr class="field"><th class="field-name">Title:</th><td class="field-body">Manifest2 compression</td> 28<tr class="field"><th class="field-name">Title:</th><td class="field-body">Manifest2 compression</td>
29</tr> 29</tr>
30<tr class="field"><th class="field-name">Version:</th><td class="field-body">1.1</td> 30<tr class="field"><th class="field-name">Version:</th><td class="field-body">1.5</td>
31</tr> 31</tr>
32<tr class="field"><th class="field-name">Last-Modified:</th><td class="field-body"><a class="reference external" href="http://www.gentoo.org/cgi-bin/viewcvs.cgi/xml/htdocs/proj/en/glep/glep-0061.txt?cvsroot=gentoo">2008/07/13 02:21:58</a></td> 32<tr class="field"><th class="field-name">Last-Modified:</th><td class="field-body"><a class="reference external" href="http://www.gentoo.org/cgi-bin/viewcvs.cgi/xml/htdocs/proj/en/glep/glep-0061.txt?cvsroot=gentoo">2010/01/31 08:27:05</a></td>
33</tr> 33</tr>
34<tr class="field"><th class="field-name">Author:</th><td class="field-body">Robin Hugh Johnson &lt;robbat2&#32;&#97;t&#32;gentoo.org&gt;</td> 34<tr class="field"><th class="field-name">Author:</th><td class="field-body">Robin Hugh Johnson &lt;robbat2&#32;&#97;t&#32;gentoo.org&gt;</td>
35</tr> 35</tr>
36<tr class="field"><th class="field-name">Status:</th><td class="field-body">Draft</td> 36<tr class="field"><th class="field-name">Status:</th><td class="field-body">Draft</td>
37</tr> 37</tr>
41</tr> 41</tr>
42<tr class="field"><th class="field-name">Requires:</th><td class="field-body"><a class="reference external" href="http://www.gentoo.org/proj/en/glepglep-0044.html">44</a></td> 42<tr class="field"><th class="field-name">Requires:</th><td class="field-body"><a class="reference external" href="http://www.gentoo.org/proj/en/glepglep-0044.html">44</a></td>
43</tr> 43</tr>
44<tr class="field"><th class="field-name">Created:</th><td class="field-body">July 2008</td> 44<tr class="field"><th class="field-name">Created:</th><td class="field-body">July 2008</td>
45</tr> 45</tr>
46<tr class="field"><th class="field-name">Updated:</th><td class="field-body">October 2008, January 2010</td>
47</tr>
46<tr class="field"><th class="field-name">Updates:</th><td class="field-body">44</td> 48<tr class="field"><th class="field-name">Updates:</th><td class="field-body">44</td>
49</tr>
50<tr class="field"><th class="field-name">Post-History:</th><td class="field-body">December 2009, January 2010</td>
47</tr> 51</tr>
48</tbody> 52</tbody>
49</table> 53</table>
50<hr /> 54<hr />
51<div class="contents topic" id="contents"> 55<div class="contents topic" id="contents">
52<p class="topic-title first">Contents</p> 56<p class="topic-title first">Contents</p>
53<ul class="simple"> 57<ul class="simple">
54<li><a class="reference internal" href="#abstract" id="id1">Abstract</a></li> 58<li><a class="reference internal" href="#abstract" id="id1">Abstract</a></li>
55<li><a class="reference internal" href="#motivation" id="id2">Motivation</a></li> 59<li><a class="reference internal" href="#motivation" id="id2">Motivation</a></li>
56<li><a class="reference internal" href="#specification" id="id3">Specification</a></li> 60<li><a class="reference internal" href="#specification" id="id3">Specification</a><ul>
61<li><a class="reference internal" href="#creation-of-compressed-manifests" id="id4">Creation of compressed Manifests:</a></li>
62<li><a class="reference internal" href="#validation-of-manifests" id="id5">Validation of Manifests:</a></li>
63</ul>
64</li>
65<li><a class="reference internal" href="#example-results-with-a-32kib-cut-off-gzip-algorithm" id="id6">Example Results with a 32KiB cut-off, gzip algorithm</a></li>
57<li><a class="reference internal" href="#backwards-compatibility" id="id4">Backwards Compatibility</a></li> 66<li><a class="reference internal" href="#backwards-compatibility" id="id7">Backwards Compatibility</a></li>
58<li><a class="reference internal" href="#references" id="id5">References</a></li> 67<li><a class="reference internal" href="#references" id="id8">References</a></li>
59<li><a class="reference internal" href="#copyright" id="id6">Copyright</a></li> 68<li><a class="reference internal" href="#copyright" id="id9">Copyright</a></li>
60</ul> 69</ul>
61</div> 70</div>
62<div class="section" id="abstract"> 71<div class="section" id="abstract">
63<h1><a class="toc-backref" href="#id1">Abstract</a></h1> 72<h1><a class="toc-backref" href="#id1">Abstract</a></h1>
64<p>Deals with compression of large Manifest2 files.</p> 73<p>Deals with compression of large Manifest2 files.</p>
66<div class="section" id="motivation"> 75<div class="section" id="motivation">
67<h1><a class="toc-backref" href="#id2">Motivation</a></h1> 76<h1><a class="toc-backref" href="#id2">Motivation</a></h1>
68<p>With the introduction of MetaManifest, and full-tree Manifest coverage, 77<p>With the introduction of MetaManifest, and full-tree Manifest coverage,
69we are faced with the possibility of having very large Manifests.</p> 78we are faced with the possibility of having very large Manifests.</p>
70<p>Preliminary experiments with MetaManifest, show that with just the 79<p>Preliminary experiments with MetaManifest, show that with just the
71existing per-package Manifests, the full MetaManifest, for a tree 80existing per-package Manifests, the full MetaManifest (top-level only,
72including metadata/, exceeds 8MiB in size. Applying common compression 81no first-level sub directories), for a tree including metadata/, exceeds
73can achieve a 50-60% reduction in this size.</p> 828MiB in size. Applying common compression can achieve a 50-60% reduction
83in this size.</p>
84<p>Additionally, some of the larger already-existing Manifests in the tree
85can also be reduced.</p>
74</div> 86</div>
75<div class="section" id="specification"> 87<div class="section" id="specification">
76<h1><a class="toc-backref" href="#id3">Specification</a></h1> 88<h1><a class="toc-backref" href="#id3">Specification</a></h1>
89<div class="section" id="creation-of-compressed-manifests">
90<h2><a class="toc-backref" href="#id4">Creation of compressed Manifests:</a></h2>
91<p>32KiB is suggested as a arbitrary cut-off point to start generating
92compressed Manifest2 files.</p>
93<p>The compression must only applied during the creation of a tree intended
94for end users. No Manifests stored in a VCS should be compressed in the
95VCS. For the main gentoo-portage tree, this means that the compressed
96Manifests should be generated using the CVS to Rsync process.</p>
97<p>The Manifest compression process is required to ensure that inconsistent
98compressed versions do not exist.</p>
99</div>
100<div class="section" id="validation-of-manifests">
101<h2><a class="toc-backref" href="#id5">Validation of Manifests:</a></h2>
77<p>When searching for a Manifest2 file, if the basename form does not 102<p>When searching for a Manifest2 file, if the basename form does not
78exist, the package manager should search in the same location using 103exist, the package manager should search in the same location using
79common compressed suffixes, and use the compressed file in place of the 104common compressed suffixes, and use the compressed file in place of the
80Manifest2.</p> 105Manifest2.</p>
81<p>gzip, bzip2, lzma should all be supported if available on the given 106<p>gzip, bzip2, lzma, xz should all be supported if available on the given
82platform. In the case that multiple versions exist, the package manager 107platform. In the case that multiple versions exist, the package manager
83should simply pick one - they should be identical, differing only in 108should simply pick one - they should be identical, differing only in
84compression.</p> 109compression.</p>
85<p>The Manifest generation process is required to ensure that inconsistent 110</div>
86compressed versions do not exist.</p> 111</div>
112<div class="section" id="example-results-with-a-32kib-cut-off-gzip-algorithm">
113<h1><a class="toc-backref" href="#id6">Example Results with a 32KiB cut-off, gzip algorithm</a></h1>
114<p>As of 2010/01/30, the suggested cut-off would impact the following 21 existing
115Manifests, for a saving of nearly 900KiB:</p>
116<pre class="literal-block">
117Size Path
118 65788 app-doc/linux-gazette/Manifest
119 75739 app-office/openoffice-bin/Manifest
120 40534 app-text/texlive-core/Manifest
121 41710 dev-texlive/texlive-bibtexextra/Manifest
122 38197 dev-texlive/texlive-documentation-english/Manifest
123129610 dev-texlive/texlive-fontsextra/Manifest
124 36022 dev-texlive/texlive-humanities/Manifest
125686118 dev-texlive/texlive-latexextra/Manifest
126 43392 dev-texlive/texlive-latexrecommended/Manifest
127 33375 dev-texlive/texlive-mathextra/Manifest
128 39781 dev-texlive/texlive-pictures/Manifest
129 69567 dev-texlive/texlive-pstricks/Manifest
130 75460 dev-texlive/texlive-publishers/Manifest
131 50879 dev-texlive/texlive-science/Manifest
132 36711 kde-base/kde-l10n/Manifest
133 36539 media-gfx/bootsplash-themes/Manifest
134 33058 net-fs/autofs/Manifest
135 39781 www-client/firefox-bin/Manifest
136 48983 www-client/icecat/Manifest
137 60213 www-client/mozilla-firefox/Manifest
138 39065 x11-themes/gkrellm-themes/Manifest
139</pre>
140<p>Additionally, with the MetaManifest proposal, the following new manifests would
141also be compressed, for a saving of nearly 4MiB:</p>
142<pre class="literal-block">
143Size Path
144 33442 app-admin/Manifest
145 71073 app-dicts/Manifest
146 35923 app-emacs/Manifest
147 45808 app-misc/Manifest
148 50169 app-text/Manifest
149 112786 dev-java/Manifest
150 65581 dev-libs/Manifest
151 42619 dev-lisp/Manifest
152 182163 dev-perl/Manifest
153 96198 dev-python/Manifest
154 58963 dev-ruby/Manifest
155 59736 dev-util/Manifest
156 58338 eclass/Manifest
157 55749 kde-base/Manifest
158 110064 licenses/Manifest
159 35262 media-gfx/Manifest
160 53995 media-libs/Manifest
161 55607 media-plugins/Manifest
162 71911 media-sound/Manifest
163 34835 media-video/Manifest
1645747849 metadata/Manifest
165 47452 net-analyzer/Manifest
166 65989 net-misc/Manifest
167 316787 profiles/Manifest
168 67784 sys-apps/Manifest
169 48971 x11-misc/Manifest
170 41475 x11-plugins/Manifest
171</pre>
87</div> 172</div>
88<div class="section" id="backwards-compatibility"> 173<div class="section" id="backwards-compatibility">
89<h1><a class="toc-backref" href="#id4">Backwards Compatibility</a></h1> 174<h1><a class="toc-backref" href="#id7">Backwards Compatibility</a></h1>
90<p>The package Manifests should also be maintained as ONLY uncompressed in 175<p>The package Manifests should also be maintained as ONLY uncompressed in
91CVS.</p> 176CVS.</p>
92<p>For processing of all existing per-package Manifests, if compression is 177<p>For processing of all existing per-package Manifests, if compression is
93used, it should be done in parallel to the existing Manifests, to 178used, it should be done in parallel to the existing Manifests, to
94provide for a changeover period. Newer versions of Portage may later 179provide for a changeover period. Newer versions of Portage may later
96compressed versions are guaranteed to exist on the servers.</p> 181compressed versions are guaranteed to exist on the servers.</p>
97<p>MetaManifests may come into existence as compressed from the start, as 182<p>MetaManifests may come into existence as compressed from the start, as
98do not have an backwards compatibility issues.</p> 183do not have an backwards compatibility issues.</p>
99<p>As a side note, this breaks all manual interaction with Manifests 184<p>As a side note, this breaks all manual interaction with Manifests
100such as grep, and so should only be applied to large Manifest2 files, 185such as grep, and so should only be applied to large Manifest2 files,
101such as the MetaManifest. 384KiB is suggested as a arbitary cut-off 186such as the MetaManifest.</p>
102point to start generating compressed Manifest2 files.</p>
103</div> 187</div>
104<div class="section" id="references"> 188<div class="section" id="references">
105<h1><a class="toc-backref" href="#id5">References</a></h1> 189<h1><a class="toc-backref" href="#id8">References</a></h1>
106<table class="docutils footnote" frame="void" id="glep44" rules="none"> 190<table class="docutils footnote" frame="void" id="glep44" rules="none">
107<colgroup><col class="label" /><col /></colgroup> 191<colgroup><col class="label" /><col /></colgroup>
108<tbody valign="top"> 192<tbody valign="top">
109<tr><td class="label">[1]</td><td>Mauch, M. (2005) GLEP44 - Manifest2 format. 193<tr><td class="label">[1]</td><td>Mauch, M. (2005) GLEP44 - Manifest2 format.
110<a class="reference external" href="http://www.gentoo.org/proj/en/glep/glep-0044.html">http://www.gentoo.org/proj/en/glep/glep-0044.html</a></td></tr> 194<a class="reference external" href="http://www.gentoo.org/proj/en/glep/glep-0044.html">http://www.gentoo.org/proj/en/glep/glep-0044.html</a></td></tr>
111</tbody> 195</tbody>
112</table> 196</table>
113</div> 197</div>
114<div class="section" id="copyright"> 198<div class="section" id="copyright">
115<h1><a class="toc-backref" href="#id6">Copyright</a></h1> 199<h1><a class="toc-backref" href="#id9">Copyright</a></h1>
116<p>Copyright (c) 2007 by Robin Hugh Johnson. This material may be 200<p>Copyright (c) 2008-2010 by Robin Hugh Johnson. This material may be
117distributed only subject to the terms and conditions set forth in the 201distributed only subject to the terms and conditions set forth in the
118Open Publication License, v1.0.</p> 202Open Publication License, v1.0.</p>
119<p>vim: tw=72 ts=2 expandtab:</p> 203<p>vim: tw=72 ts=2 expandtab:</p>
120</div> 204</div>
121 205
122</div> 206</div>
123<div class="footer"> 207<div class="footer">
124<hr class="footer" /> 208<hr class="footer" />
125<a class="reference external" href="glep-0061.txt">View document source</a>. 209<a class="reference external" href="glep-0061.txt">View document source</a>.
126Generated on: 2008-10-21 23:26 UTC. 210Generated on: 2010-01-31 08:27 UTC.
127Generated by <a class="reference external" href="http://docutils.sourceforge.net/">Docutils</a> from <a class="reference external" href="http://docutils.sourceforge.net/rst.html">reStructuredText</a> source. 211Generated by <a class="reference external" href="http://docutils.sourceforge.net/">Docutils</a> from <a class="reference external" href="http://docutils.sourceforge.net/rst.html">reStructuredText</a> source.
128 212
129</div> 213</div>
130</body> 214</body>
131</html> 215</html>

Legend:
Removed from v.1.1  
changed lines
  Added in v.1.5

  ViewVC Help
Powered by ViewVC 1.1.20