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

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

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

Revision 1.2 Revision 1.5
6PEP, see http://www.python.org/peps/pep-0001.html for instructions and links 6PEP, see http://www.python.org/peps/pep-0001.html for instructions and links
7to templates. DO NOT USE THIS HTML FILE AS YOUR TEMPLATE! 7to templates. DO NOT USE THIS HTML FILE AS YOUR TEMPLATE!
8--> 8-->
9<head> 9<head>
10 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 10 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
11 <meta name="generator" content="Docutils 0.3.3: http://docutils.sourceforge.net/" /> 11 <meta name="generator" content="Docutils 0.4: http://docutils.sourceforge.net/" />
12 <title>GLEP 25 -- Distfile Patching Support</title> 12 <title>GLEP 25 -- Distfile Patching Support</title>
13 <link rel="stylesheet" href="tools/glep.css" type="text/css" /> 13 <style type="text/css">
14
15/*
16:Author: David Goodger
17:Contact: goodger@users.sourceforge.net
18:date: $Date: 2007/01/25 03:26:26 $
19:version: $Revision: 1.5 $
20:copyright: This stylesheet has been placed in the public domain.
21
22Default cascading style sheet for the PEP HTML output of Docutils.
23*/
24
25.first {
26 margin-top: 0 }
27
28.last {
29 margin-bottom: 0 }
30
31.navigation {
32 width: 100% ;
33 background: #cc99ff ;
34 margin-top: 0px ;
35 margin-bottom: 0px }
36
37.navigation .navicon {
38 width: 150px ;
39 height: 35px }
40
41.navigation .textlinks {
42 padding-left: 1em ;
43 text-align: left }
44
45.navigation td, .navigation th {
46 padding-left: 0em ;
47 padding-right: 0em ;
48 vertical-align: middle }
49
50.rfc2822 {
51 margin-top: 0.5em ;
52 margin-left: 0.5em ;
53 margin-right: 0.5em ;
54 margin-bottom: 0em }
55
56.rfc2822 td {
57 text-align: left }
58
59.rfc2822 th.field-name {
60 text-align: right ;
61 font-family: sans-serif ;
62 padding-right: 0.5em ;
63 font-weight: bold ;
64 margin-bottom: 0em }
65
66a.toc-backref {
67 text-decoration: none ;
68 color: black }
69
70body {
71 margin: 0px ;
72 margin-bottom: 1em ;
73 padding: 0px }
74
75dd {
76 margin-bottom: 0.5em }
77
78div.section {
79 margin-left: 1em ;
80 margin-right: 1em ;
81 margin-bottom: 1.5em }
82
83div.section div.section {
84 margin-left: 0em ;
85 margin-right: 0em ;
86 margin-top: 1.5em }
87
88div.abstract {
89 margin: 2em 5em }
90
91div.abstract p.topic-title {
92 font-weight: bold ;
93 text-align: center }
94
95div.attention, div.caution, div.danger, div.error, div.hint,
96div.important, div.note, div.tip, div.warning {
97 margin: 2em ;
98 border: medium outset ;
99 padding: 1em }
100
101div.attention p.admonition-title, div.caution p.admonition-title,
102div.danger p.admonition-title, div.error p.admonition-title,
103div.warning p.admonition-title {
104 color: red ;
105 font-weight: bold ;
106 font-family: sans-serif }
107
108div.hint p.admonition-title, div.important p.admonition-title,
109div.note p.admonition-title, div.tip p.admonition-title {
110 font-weight: bold ;
111 font-family: sans-serif }
112
113div.figure {
114 margin-left: 2em }
115
116div.footer, div.header {
117 font-size: smaller }
118
119div.footer {
120 margin-left: 1em ;
121 margin-right: 1em }
122
123div.system-messages {
124 margin: 5em }
125
126div.system-messages h1 {
127 color: red }
128
129div.system-message {
130 border: medium outset ;
131 padding: 1em }
132
133div.system-message p.system-message-title {
134 color: red ;
135 font-weight: bold }
136
137div.topic {
138 margin: 2em }
139
140h1 {
141 font-family: sans-serif ;
142 font-size: large }
143
144h2 {
145 font-family: sans-serif ;
146 font-size: medium }
147
148h3 {
149 font-family: sans-serif ;
150 font-size: small }
151
152h4 {
153 font-family: sans-serif ;
154 font-style: italic ;
155 font-size: small }
156
157h5 {
158 font-family: sans-serif;
159 font-size: x-small }
160
161h6 {
162 font-family: sans-serif;
163 font-style: italic ;
164 font-size: x-small }
165
166.section hr {
167 width: 75% }
168
169ol.simple, ul.simple {
170 margin-bottom: 1em }
171
172ol.arabic {
173 list-style: decimal }
174
175ol.loweralpha {
176 list-style: lower-alpha }
177
178ol.upperalpha {
179 list-style: upper-alpha }
180
181ol.lowerroman {
182 list-style: lower-roman }
183
184ol.upperroman {
185 list-style: upper-roman }
186
187p.caption {
188 font-style: italic }
189
190p.credits {
191 font-style: italic ;
192 font-size: smaller }
193
194p.label {
195 white-space: nowrap }
196
197p.topic-title {
198 font-family: sans-serif ;
199 font-weight: bold }
200
201pre.line-block {
202 font-family: serif ;
203 font-size: 100% }
204
205pre.literal-block, pre.doctest-block {
206 margin-left: 2em ;
207 margin-right: 2em ;
208 background-color: #eeeeee }
209
210span.classifier {
211 font-family: sans-serif ;
212 font-style: oblique }
213
214span.classifier-delimiter {
215 font-family: sans-serif ;
216 font-weight: bold }
217
218span.interpreted {
219 font-family: sans-serif }
220
221span.option-argument {
222 font-style: italic }
223
224span.pre {
225 white-space: pre }
226
227span.problematic {
228 color: red }
229
230table {
231 margin-top: 0.5em ;
232 margin-bottom: 0.5em }
233
234td, th {
235 padding-left: 0.5em ;
236 padding-right: 0.5em ;
237 vertical-align: top }
238
239td.num {
240 text-align: right }
241
242th.field-name {
243 font-weight: bold ;
244 text-align: left ;
245 white-space: nowrap }
246
247h1 tt, h2 tt, h3 tt, h4 tt, h5 tt, h6 tt {
248 font-size: 100% }
249
250tt {
251 background-color: #eeeeee }
252
253ul.auto-toc {
254 list-style-type: none }
255
256</style>
14</head> 257</head>
15<body bgcolor="white"> 258<body bgcolor="white">
16<table class="navigation" cellpadding="0" cellspacing="0" 259<table class="navigation" cellpadding="0" cellspacing="0"
17 width="100%" border="0"> 260 width="100%" border="0">
18<tr><td class="navicon" width="150" height="35"> 261<tr><td class="navicon" width="150" height="35">
19<a href="http://www.gentoo.org/" title="Gentoo Linux Home Page"> 262<a href="http://www.gentoo.org/" title="Gentoo Linux Home Page">
20<img src="http://www.gentoo.org/images/gentoo-new.gif" alt="[Gentoo]" 263<img src="http://www.gentoo.org/images/gentoo-new.gif" alt="[Gentoo]"
21 border="0" width="150" height="35" /></a></td> 264 border="0" width="150" height="35" /></a></td>
22<td class="textlinks" align="left"> 265<td class="textlinks" align="left">
23[<b><a href="http://www.gentoo.org/">Gentoo Linux Home</a></b>] 266[<b><a href="http://www.gentoo.org/">Gentoo Linux Home</a></b>]
24[<b><a href="http://www.gentoo.org/proj/en/glep">GLEP Index</a></b>] 267[<b><a href="http://www.gentoo.org/proj/en/glep/">GLEP Index</a></b>]
25[<b><a href="./glep-0025.txt">GLEP Source</a></b>] 268[<b><a href="http://www.gentoo.org/proj/en/glep/glep-0025.txt">GLEP Source</a></b>]
26</td></tr></table> 269</td></tr></table>
27<div class="document">
28<table class="rfc2822 field-list" frame="void" rules="none"> 270<table class="rfc2822 docutils field-list" frame="void" rules="none">
29<col class="field-name" /> 271<col class="field-name" />
30<col class="field-body" /> 272<col class="field-body" />
31<tbody valign="top"> 273<tbody valign="top">
32<tr class="field"><th class="field-name">GLEP:</th><td class="field-body">25</td> 274<tr class="field"><th class="field-name">GLEP:</th><td class="field-body">25</td>
33</tr> 275</tr>
34<tr class="field"><th class="field-name">Title:</th><td class="field-body">Distfile Patching Support</td> 276<tr class="field"><th class="field-name">Title:</th><td class="field-body">Distfile Patching Support</td>
35</tr> 277</tr>
36<tr class="field"><th class="field-name">Version:</th><td class="field-body">1.2</td> 278<tr class="field"><th class="field-name">Version:</th><td class="field-body">1.3</td>
37</tr> 279</tr>
38<tr class="field"><th class="field-name">Last-Modified:</th><td class="field-body"><a class="reference" href="http://www.gentoo.org/cgi-bin/viewcvs/xml/htdocs/proj/en/glep/glep-0025.txt?cvsroot=gentoo">2004/11/11 21:34:36</a></td> 280<tr class="field"><th class="field-name">Last-Modified:</th><td class="field-body"><a class="reference" href="http://www.gentoo.org/cgi-bin/viewcvs.cgi/xml/htdocs/proj/en/glep/glep-0025.txt?cvsroot=gentoo">2005/04/01 01:32:19</a></td>
39</tr> 281</tr>
40<tr class="field"><th class="field-name">Author:</th><td class="field-body">Brian Harring &lt;ferringb&#32;&#97;t&#32;gentoo.org&gt;</td> 282<tr class="field"><th class="field-name">Author:</th><td class="field-body">Brian Harring &lt;ferringb&#32;&#97;t&#32;gentoo.org&gt;</td>
41</tr> 283</tr>
42<tr class="field"><th class="field-name">Status:</th><td class="field-body">deferred</td> 284<tr class="field"><th class="field-name">Status:</th><td class="field-body">deferred</td>
43</tr> 285</tr>
44<tr class="field"><th class="field-name">Type:</th><td class="field-body">Standards Track</td> 286<tr class="field"><th class="field-name">Type:</th><td class="field-body">Standards Track</td>
45</tr> 287</tr>
46<tr class="field"><th class="field-name">Content-Type:</th><td class="field-body"><a class="reference" href="glep-0012.html">text/x-rst</a></td> 288<tr class="field"><th class="field-name">Content-Type:</th><td class="field-body"><a class="reference" href="glep-0002.html">text/x-rst</a></td>
47</tr> 289</tr>
48<tr class="field"><th class="field-name">Created:</th><td class="field-body">6-Mar-2004</td> 290<tr class="field"><th class="field-name">Created:</th><td class="field-body">6-Mar-2004</td>
49</tr> 291</tr>
50<tr class="field"><th class="field-name">Post-History:</th><td class="field-body">4-Apr-2004, 11-Nov-2004</td> 292<tr class="field"><th class="field-name">Post-History:</th><td class="field-body">4-Apr-2004, 11-Nov-2004</td>
51</tr> 293</tr>
52</tbody> 294</tbody>
53</table> 295</table>
54<hr /> 296<hr />
55<div class="contents topic" id="contents"> 297<div class="contents topic">
56<p class="topic-title first"><a name="contents">Contents</a></p> 298<p class="topic-title first"><a id="contents" name="contents">Contents</a></p>
57<ul class="simple"> 299<ul class="simple">
58<li><a class="reference" href="#abstract" id="id7" name="id7">Abstract</a></li> 300<li><a class="reference" href="#abstract" id="id7" name="id7">Abstract</a></li>
59<li><a class="reference" href="#status" id="id8" name="id8">Status</a></li> 301<li><a class="reference" href="#status" id="id8" name="id8">Status</a></li>
60<li><a class="reference" href="#motivation" id="id9" name="id9">Motivation</a></li> 302<li><a class="reference" href="#motivation" id="id9" name="id9">Motivation</a></li>
61<li><a class="reference" href="#binary-patches-vs-gnudiff-patches" id="id10" name="id10">Binary patches vs GNUDiff patches</a></li> 303<li><a class="reference" href="#binary-patches-vs-gnudiff-patches" id="id10" name="id10">Binary patches vs GNUDiff patches</a></li>
74</li> 316</li>
75<li><a class="reference" href="#distfile-mirror-additions" id="id20" name="id20">Distfile Mirror Additions</a></li> 317<li><a class="reference" href="#distfile-mirror-additions" id="id20" name="id20">Distfile Mirror Additions</a></li>
76<li><a class="reference" href="#patch-creation" id="id21" name="id21">Patch Creation</a></li> 318<li><a class="reference" href="#patch-creation" id="id21" name="id21">Patch Creation</a></li>
77</ul> 319</ul>
78</li> 320</li>
79<li><a class="reference" href="#backwards-compatability" id="id22" name="id22">Backwards Compatability</a></li> 321<li><a class="reference" href="#backwards-compatibility" id="id22" name="id22">Backwards Compatibility</a></li>
80<li><a class="reference" href="#reference-implementation" id="id23" name="id23">Reference Implementation</a></li> 322<li><a class="reference" href="#reference-implementation" id="id23" name="id23">Reference Implementation</a></li>
81<li><a class="reference" href="#references" id="id24" name="id24">References</a></li> 323<li><a class="reference" href="#references" id="id24" name="id24">References</a></li>
82<li><a class="reference" href="#copyright" id="id25" name="id25">Copyright</a></li> 324<li><a class="reference" href="#copyright" id="id25" name="id25">Copyright</a></li>
83</ul> 325</ul>
84</div> 326</div>
85<div class="section" id="abstract"> 327<div class="section">
86<h1><a class="toc-backref" href="#id7" name="abstract">Abstract</a></h1> 328<h1><a class="toc-backref" href="#id7" id="abstract" name="abstract">Abstract</a></h1>
87<p>The intention of this GLEP is to propose the creation of patching support for 329<p>The intention of this GLEP is to propose the creation of patching support for
88portage, and iron out the implementation details.</p> 330portage, and iron out the implementation details.</p>
89</div> 331</div>
90<div class="section" id="status"> 332<div class="section">
91<h1><a class="toc-backref" href="#id8" name="status">Status</a></h1> 333<h1><a class="toc-backref" href="#id8" id="status" name="status">Status</a></h1>
92<p>Timed out</p> 334<p>Timed out</p>
93</div> 335</div>
94<div class="section" id="motivation"> 336<div class="section">
95<h1><a class="toc-backref" href="#id9" name="motivation">Motivation</a></h1> 337<h1><a class="toc-backref" href="#id9" id="motivation" name="motivation">Motivation</a></h1>
96<p>Reduce the bandwidth load placed on our mirrors by decreasing the amount of 338<p>Reduce the bandwidth load placed on our mirrors by decreasing the amount of
97bytes transferred when upgrading between versions. Side benefit of this is to 339bytes transferred when upgrading between versions. Side benefit of this is to
98significantly decrease the download requirements for users lacking broadband.</p> 340significantly decrease the download requirements for users lacking broadband.</p>
99</div> 341</div>
100<div class="section" id="binary-patches-vs-gnudiff-patches"> 342<div class="section">
101<h1><a class="toc-backref" href="#id10" name="binary-patches-vs-gnudiff-patches">Binary patches vs GNUDiff patches</a></h1> 343<h1><a class="toc-backref" href="#id10" id="binary-patches-vs-gnudiff-patches" name="binary-patches-vs-gnudiff-patches">Binary patches vs GNUDiff patches</a></h1>
102<p>Most people are familiar with diff patches (unified diff for example)- this 344<p>Most people are familiar with diff patches (unified diff for example)- this
103glep is specifically proposing the use of an actual binary differencer. The 345glep is specifically proposing the use of an actual binary differencer. The
104reason for this is that diff patches are line based- you change a single 346reason for this is that diff patches are line based- you change a single
105character in a line, and the whole line must be included in the patch. Binary 347character in a line, and the whole line must be included in the patch. Binary
106differencers work at the byte level- it encodes just that byte. In that 348differencers work at the byte level- it encodes just that byte. In that
117md5 <a class="footnote-reference" href="#id4" id="id1" name="id1">[1]</a>.</p> 359md5 <a class="footnote-reference" href="#id4" id="id1" name="id1">[1]</a>.</p>
118<p>Currently, this glep is proposing only the usage of binary patches- that's not 360<p>Currently, this glep is proposing only the usage of binary patches- that's not
119to say (with a fair amount of work) it couldn't be extended to support 361to say (with a fair amount of work) it couldn't be extended to support
120standard diffs.</p> 362standard diffs.</p>
121</div> 363</div>
122<div class="section" id="rationale"> 364<div class="section">
123<h1><a class="toc-backref" href="#id11" name="rationale">Rationale</a></h1> 365<h1><a class="toc-backref" href="#id11" id="rationale" name="rationale">Rationale</a></h1>
124<p>The difference between source releases typically isn't very large, especially 366<p>The difference between source releases typically isn't very large, especially
125for minor releases. As an example, kdelibs-3.1.4.tar.bz2 is 10.53 MB, and 367for minor releases. As an example, kdelibs-3.1.4.tar.bz2 is 10.53 MB, and
126kdelibs-3.1.5.tar.bz2 is 10.54 MB. A bzip2'ed patch between those versions is 368kdelibs-3.1.5.tar.bz2 is 10.54 MB. A bzip2'ed patch between those versions is
12775.6 kb <a class="footnote-reference" href="#id5" id="id2" name="id2">[2]</a>, less then 1% the size of 3.1.5's tbz2.</p> 36975.6 kb <a class="footnote-reference" href="#id5" id="id2" name="id2">[2]</a>, less then 1% the size of 3.1.5's tbz2.</p>
128</div> 370</div>
129<div class="section" id="specification"> 371<div class="section">
130<h1><a class="toc-backref" href="#id12" name="specification">Specification</a></h1> 372<h1><a class="toc-backref" href="#id12" id="specification" name="specification">Specification</a></h1>
131<p>Quite a few sections of gentoo are affected- mirroring, the portage tree, and 373<p>Quite a few sections of gentoo are affected- mirroring, the portage tree, and
132portage itself.</p> 374portage itself.</p>
133<div class="section" id="additions-to-the-tree"> 375<div class="section">
134<h2><a class="toc-backref" href="#id13" name="additions-to-the-tree">Additions to the tree</a></h2> 376<h2><a class="toc-backref" href="#id13" id="additions-to-the-tree" name="additions-to-the-tree">Additions to the tree</a></h2>
135<p>For adding patch info into the tree, this glep proposes a global patch list 377<p>For adding patch info into the tree, this glep proposes a global patch list
136(stored in profiles as patches.global), and individual patch lists stored in 378(stored in profiles as patches.global), and individual patch lists stored in
137relevant package directories (named patches). Using the kernel packages as an 379relevant package directories (named patches). Using the kernel packages as an
138example, a global list of patches enables us to create a patch once, add an 380example, a global list of patches enables us to create a patch once, add an
139entry, and have all kernel packages benefit from that single entry. Both 381entry, and have all kernel packages benefit from that single entry. Both
157will reside on one of our mirrors, the patch filename would be sufficient.</p> 399will reside on one of our mirrors, the patch filename would be sufficient.</p>
158<p>Finally, note that this is a unidirectional patch- using the above example, 400<p>Finally, note that this is a unidirectional patch- using the above example,
159kdelibs-3.1.4-3.1.5 can <strong>only</strong> be used to upgrade from 3.1.4 to 3.1.5, not 401kdelibs-3.1.4-3.1.5 can <strong>only</strong> be used to upgrade from 3.1.4 to 3.1.5, not
160in reverse (originally explained in <a class="reference" href="#binary-patches-vs-gnudiff-patches">Binary patches vs GNUDiff patches</a>).</p> 402in reverse (originally explained in <a class="reference" href="#binary-patches-vs-gnudiff-patches">Binary patches vs GNUDiff patches</a>).</p>
161</div> 403</div>
162<div class="section" id="portage-implementation"> 404<div class="section">
163<h2><a class="toc-backref" href="#id14" name="portage-implementation">Portage Implementation</a></h2> 405<h2><a class="toc-backref" href="#id14" id="portage-implementation" name="portage-implementation">Portage Implementation</a></h2>
164<p>This glep proposes the patching support should be (at this stage) optional- 406<p>This glep proposes the patching support should be (at this stage) optional-
165specifically, enabled via FEATURES=&quot;patching&quot;.</p> 407specifically, enabled via FEATURES=&quot;patching&quot;.</p>
166<div class="section" id="fetching"> 408<div class="section">
167<h3><a class="toc-backref" href="#id15" name="fetching">Fetching</a></h3> 409<h3><a class="toc-backref" href="#id15" id="fetching" name="fetching">Fetching</a></h3>
168<p>When patching is enabled, the global patch list is read, and the packages 410<p>When patching is enabled, the global patch list is read, and the packages
169patch list is read. From there, portage determines what files could be used 411patch list is read. From there, portage determines what files could be used
170as a base for patching to the desired file- further, determining if it's 412as a base for patching to the desired file- further, determining if it's
171actually worth patching (case where it wouldn't be is when the target file is 413actually worth patching (case where it wouldn't be is when the target file is
172less then the sum of the patches needed). Any patches to be used are fetched, 414less then the sum of the patches needed). Any patches to be used are fetched,
173and md5 verified.</p> 415and md5 verified.</p>
174</div> 416</div>
175<div class="section" id="reconstruction"> 417<div class="section">
176<h3><a class="toc-backref" href="#id16" name="reconstruction">Reconstruction</a></h3> 418<h3><a class="toc-backref" href="#id16" id="reconstruction" name="reconstruction">Reconstruction</a></h3>
177<p>Upon fetching and md5 verification of patch(es), the desired file is 419<p>Upon fetching and md5 verification of patch(es), the desired file is
178reconstructed. Assuming reconstruction didn't return any errors, the target 420reconstructed. Assuming reconstruction didn't return any errors, the target
179file has its uncompressed md5sum calculated and verified, then is recompressed 421file has its uncompressed md5sum calculated and verified, then is recompressed
180and the compressed md5sum calculated. At this point, if the compressed md5 422and the compressed md5sum calculated. At this point, if the compressed md5
181matches the md5 stored in the tree, then portage transfers the file into 423matches the md5 stored in the tree, then portage transfers the file into
182distfiles, and continues on it's merry way.</p> 424distfiles, and continues on it's merry way.</p>
183<p>If the compressed md5 is different from the tree's value, then the (proposed) 425<p>If the compressed md5 is different from the tree's value, then the (proposed)
184md5 database is updated with new compressed md5. Details of this database 426md5 database is updated with new compressed md5. Details of this database
185(and the issue it addresses) follow.</p> 427(and the issue it addresses) follow.</p>
186</div> 428</div>
187<div class="section" id="compressed-md5sums"> 429<div class="section">
188<h3><a class="toc-backref" href="#id17" name="compressed-md5sums">Compressed MD5sums:</a></h3> 430<h3><a class="toc-backref" href="#id17" id="compressed-md5sums" name="compressed-md5sums">Compressed MD5sums:</a></h3>
189<p>There will be instances where a file is reconstructed perfectly, recompressed, 431<p>There will be instances where a file is reconstructed perfectly, recompressed,
190and the recompressed md5sum differs from what is stored in the tree- the 432and the recompressed md5sum differs from what is stored in the tree- the
191problem is that the md5sum of a compressed file is inherently tied to the 433problem is that the md5sum of a compressed file is inherently tied to the
192compressor version/options used to compress the original source.</p> 434compressor version/options used to compress the original source.</p>
193<div class="section" id="the-problem-in-detail"> 435<div class="section">
194<h4><a class="toc-backref" href="#id18" name="the-problem-in-detail">The Problem in Detail</a></h4> 436<h4><a class="toc-backref" href="#id18" id="the-problem-in-detail" name="the-problem-in-detail">The Problem in Detail</a></h4>
195<p>A good example of this problem is related to bzip2 versions used for 437<p>A good example of this problem is related to bzip2 versions used for
196compression. Between bzip2 0.9x and bzip2 1.x, there was a subtle change in 438compression. Between bzip2 0.9x and bzip2 1.x, there was a subtle change in
197the compressor resulting in a slightly better compression result- end result 439the compressor resulting in a slightly better compression result- end result
198being a different file, eg a different md5sum. Assuming compressor versions 440being a different file, eg a different md5sum. Assuming compressor versions
199are the same, there also is the issue of what compression level the target 441are the same, there also is the issue of what compression level the target
206valid option- assuming all options were accounted for, clients would still be 448valid option- assuming all options were accounted for, clients would still be
207required to have multiple versions of the same compressor installed just for 449required to have multiple versions of the same compressor installed just for
208the sake of recreating a compressed md5sum <em>even though</em> the uncompressed 450the sake of recreating a compressed md5sum <em>even though</em> the uncompressed
209source's md5 has already been verified.</p> 451source's md5 has already been verified.</p>
210</div> 452</div>
211<div class="section" id="the-proposed-solution"> 453<div class="section">
212<h4><a class="toc-backref" href="#id19" name="the-proposed-solution">The Proposed Solution</a></h4> 454<h4><a class="toc-backref" href="#id19" id="the-proposed-solution" name="the-proposed-solution">The Proposed Solution</a></h4>
213<p>The creation of a clientside flatfile/db of valid alternate md5/size pairs 455<p>The creation of a clientside flatfile/db of valid alternate md5/size pairs
214would enable portage to handle perfectly reconstructed files, that have a 456would enable portage to handle perfectly reconstructed files, that have a
215different md5sum due to compression differences. The proposed format is thus:</p> 457different md5sum due to compression differences. The proposed format is thus:</p>
216<pre class="literal-block"> 458<pre class="literal-block">
217MD5 md5sum orig-file size MD5 md5sum [ optional new-name ] size 459MD5 md5sum orig-file size MD5 md5sum [ optional new-name ] size
237distfiles directory is shared out to multiple systems, this db must be shared 479distfiles directory is shared out to multiple systems, this db must be shared
238also.</p> 480also.</p>
239</div> 481</div>
240</div> 482</div>
241</div> 483</div>
242<div class="section" id="distfile-mirror-additions"> 484<div class="section">
243<h2><a class="toc-backref" href="#id20" name="distfile-mirror-additions">Distfile Mirror Additions</a></h2> 485<h2><a class="toc-backref" href="#id20" id="distfile-mirror-additions" name="distfile-mirror-additions">Distfile Mirror Additions</a></h2>
244<p>One issue of contention is where these files will actually be stored. As of 486<p>One issue of contention is where these files will actually be stored. As of
245the writing of this glep, a full distfiles mirror is roughly around 40 gb- a 487the writing of this glep, a full distfiles mirror is roughly around 40 gb- a
246rough estimate by the author places the space requirements for patches for 488rough estimate by the author places the space requirements for patches for
247each version at a total of around 4gb. Note this isn't even remotely a hard 489each version at a total of around 4gb. Note this isn't even remotely a hard
248figure yet, and a better figure is being checked into currently.</p> 490figure yet, and a better figure is being checked into currently.</p>
273<a class="reference" href="#binary-patches-vs-gnudiff-patches">Binary patches vs GNUDiff patches</a>)..</p> 515<a class="reference" href="#binary-patches-vs-gnudiff-patches">Binary patches vs GNUDiff patches</a>)..</p>
274<p>Of the options listed above, the first is the easiest, although the second 516<p>Of the options listed above, the first is the easiest, although the second
275could be made to work. Feedback and any possible alternatives would be 517could be made to work. Feedback and any possible alternatives would be
276greatly appreciated.</p> 518greatly appreciated.</p>
277</div> 519</div>
278<div class="section" id="patch-creation"> 520<div class="section">
279<h2><a class="toc-backref" href="#id21" name="patch-creation">Patch Creation</a></h2> 521<h2><a class="toc-backref" href="#id21" id="patch-creation" name="patch-creation">Patch Creation</a></h2>
280<p>Maintenance of patch lists, and the actual patch creation ought to be managed 522<p>Maintenance of patch lists, and the actual patch creation ought to be managed
281by a high level script- essentally a dev says &quot;I want a patch between this 523by a high level script- essentally a dev says &quot;I want a patch between this
282version, and that version: make it so&quot;, the script churns away 524version, and that version: make it so&quot;, the script churns away
283creating/updating the patch list, and generating the patch locally. The 525creating/updating the patch list, and generating the patch locally. The
284utility next uploads the new patch to /space/distfiles-local on dev.gentoo.org 526utility next uploads the new patch to /space/distfiles-local on dev.gentoo.org
290for new ebuilds.</p> 532for new ebuilds.</p>
291<p>The initial bulk of patches to get will be generated by the author, to ease 533<p>The initial bulk of patches to get will be generated by the author, to ease
292the transition and offer patches for people to test out.</p> 534the transition and offer patches for people to test out.</p>
293</div> 535</div>
294</div> 536</div>
295<div class="section" id="backwards-compatability"> 537<div class="section">
296<h1><a class="toc-backref" href="#id22" name="backwards-compatability">Backwards Compatability</a></h1> 538<h1><a class="toc-backref" href="#id22" id="backwards-compatibility" name="backwards-compatibility">Backwards Compatibility</a></h1>
297<p>As noted in <a class="reference" href="#the-proposed-solution">The Proposed Solution</a>, a system using patching and sharing out 539<p>As noted in <a class="reference" href="#the-proposed-solution">The Proposed Solution</a>, a system using patching and sharing out
298it's distfiles must share out it's alternate md5 db. Any system that uses the 540it's distfiles must share out it's alternate md5 db. Any system that uses the
299distfiles share must support the alternate md5 db also. If this is considered 541distfiles share must support the alternate md5 db also. If this is considered
300enough of an issue, it is conceivable to place reconstructed sources with an 542enough of an issue, it is conceivable to place reconstructed sources with an
301alternate md5 into a subdirectory of distdir- portage only looks within 543alternate md5 into a subdirectory of distdir- portage only looks within
302distdir, unwilling to descend into subdirectories.</p> 544distdir, unwilling to descend into subdirectories.</p>
303<p>Also note that <a class="reference" href="#distfile-mirror-additions">Distfile Mirror Additions</a> may add additional backwards 545<p>Also note that <a class="reference" href="#distfile-mirror-additions">Distfile Mirror Additions</a> may add additional backwards
304compatability issues, depending on what solution is accepted.</p> 546compatibility issues, depending on what solution is accepted.</p>
305</div> 547</div>
306<div class="section" id="reference-implementation"> 548<div class="section">
307<h1><a class="toc-backref" href="#id23" name="reference-implementation">Reference Implementation</a></h1> 549<h1><a class="toc-backref" href="#id23" id="reference-implementation" name="reference-implementation">Reference Implementation</a></h1>
308<p>TODO</p> 550<p>TODO</p>
309</div> 551</div>
310<div class="section" id="references"> 552<div class="section">
311<h1><a class="toc-backref" href="#id24" name="references">References</a></h1> 553<h1><a class="toc-backref" href="#id24" id="references" name="references">References</a></h1>
312<table class="footnote" frame="void" id="id4" rules="none"> 554<table class="docutils footnote" frame="void" id="id4" rules="none">
313<colgroup><col class="label" /><col /></colgroup> 555<colgroup><col class="label" /><col /></colgroup>
314<tbody valign="top"> 556<tbody valign="top">
315<tr><td class="label"><a class="fn-backref" href="#id1" name="id4">[1]</a></td><td><a class="reference" href="http://dev.gentoo.org/~ferringb/patches/kdelibs-3.1.4-3.1.5">http://dev.gentoo.org/~ferringb/patches/kdelibs-3.1.4-3.1.5</a>.{patch,diff}.bz2.</td></tr> 557<tr><td class="label"><a class="fn-backref" href="#id1" name="id4">[1]</a></td><td><a class="reference" href="http://dev.gentoo.org/~ferringb/patches/kdelibs-3.1.4-3.1.5">http://dev.gentoo.org/~ferringb/patches/kdelibs-3.1.4-3.1.5</a>.{patch,diff}.bz2.</td></tr>
316</tbody> 558</tbody>
317</table> 559</table>
318<table class="footnote" frame="void" id="id5" rules="none"> 560<table class="docutils footnote" frame="void" id="id5" rules="none">
319<colgroup><col class="label" /><col /></colgroup> 561<colgroup><col class="label" /><col /></colgroup>
320<tbody valign="top"> 562<tbody valign="top">
321<tr><td class="label"><a name="id5">[2]</a></td><td><em>(<a class="fn-backref" href="#id2">1</a>, <a class="fn-backref" href="#id3">2</a>)</em> kdelibs-3.1.4-3.1.5.patch.bz2, switching format patch, created via diffball-0.4_pre4 (diffball is available at <a class="reference" href="http://sourceforge.net/projects/diffball">http://sourceforge.net/projects/diffball</a>) 563<tr><td class="label"><a name="id5">[2]</a></td><td><em>(<a class="fn-backref" href="#id2">1</a>, <a class="fn-backref" href="#id3">2</a>)</em> kdelibs-3.1.4-3.1.5.patch.bz2, switching format patch, created via diffball-0.4_pre4 (diffball is available at <a class="reference" href="http://sourceforge.net/projects/diffball">http://sourceforge.net/projects/diffball</a>)
322Bzip2 -9 compressed, the patch is 75,687 bytes, uncompressed it is 337,649 bytes. The patch is available at <a class="reference" href="http://dev.gentoo.org/~ferringb/kdelibs-3.1.4-3.1.5.patch.bz2">http://dev.gentoo.org/~ferringb/kdelibs-3.1.4-3.1.5.patch.bz2</a> for those curious.</td></tr> 564Bzip2 -9 compressed, the patch is 75,687 bytes, uncompressed it is 337,649 bytes. The patch is available at <a class="reference" href="http://dev.gentoo.org/~ferringb/kdelibs-3.1.4-3.1.5.patch.bz2">http://dev.gentoo.org/~ferringb/kdelibs-3.1.4-3.1.5.patch.bz2</a> for those curious.</td></tr>
323</tbody> 565</tbody>
324</table> 566</table>
325<table class="footnote" frame="void" id="id6" rules="none"> 567<table class="docutils footnote" frame="void" id="id6" rules="none">
326<colgroup><col class="label" /><col /></colgroup> 568<colgroup><col class="label" /><col /></colgroup>
327<tbody valign="top"> 569<tbody valign="top">
328<tr><td class="label"><a name="id6">[3]</a></td><td>Glep9, 'Gentoo Package Update System' 570<tr><td class="label"><a name="id6">[3]</a></td><td>Glep9, 'Gentoo Package Update System'
329(<a class="reference" href="http://glep.gentoo.org/glep-0009.html">http://glep.gentoo.org/glep-0009.html</a>)</td></tr> 571(<a class="reference" href="http://glep.gentoo.org/glep-0009.html">http://glep.gentoo.org/glep-0009.html</a>)</td></tr>
330</tbody> 572</tbody>
331</table> 573</table>
332</div> 574</div>
333<div class="section" id="copyright"> 575<div class="section">
334<h1><a class="toc-backref" href="#id25" name="copyright">Copyright</a></h1> 576<h1><a class="toc-backref" href="#id25" id="copyright" name="copyright">Copyright</a></h1>
335<p>This document has been placed in the public domain.</p> 577<p>This document has been placed in the public domain.</p>
336</div> 578</div>
337</div>
338 579
580</div>
581<div class="footer">
339<hr class="footer" /> 582<hr class="footer" />
340<div class="footer">
341<a class="reference" href="glep-0025.txt">View document source</a>. 583<a class="reference" href="glep-0025.txt">View document source</a>.
342Generated on: 2004-11-11 21:27 UTC. 584Generated on: 2006-10-10 20:23 UTC.
343Generated by <a class="reference" href="http://docutils.sourceforge.net/">Docutils</a> from <a class="reference" href="http://docutils.sourceforge.net/rst.html">reStructuredText</a> source. 585Generated by <a class="reference" href="http://docutils.sourceforge.net/">Docutils</a> from <a class="reference" href="http://docutils.sourceforge.net/rst.html">reStructuredText</a> source.
586
344</div> 587</div>
345</body> 588</body>
346</html> 589</html>
347 590

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

  ViewVC Help
Powered by ViewVC 1.1.20