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

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

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

Revision 1.7 Revision 1.10
1<?xml version="1.0" encoding="utf-8" ?> 1<?xml version="1.0" encoding="utf-8" ?>
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
5This HTML is auto-generated. DO NOT EDIT THIS FILE! If you are writing a new
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!
8-->
9<head> 5<head>
10 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 6 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
11 <meta name="generator" content="Docutils 0.4: http://docutils.sourceforge.net/" /> 7 <meta name="generator" content="Docutils 0.6: http://docutils.sourceforge.net/" />
12 <title>GLEP 33 -- Eclass Restructure/Redesign</title> 8 <title>GLEP 33 -- Eclass Restructure/Redesign</title>
13 <style type="text/css"> 9 <link rel="stylesheet" href="tools/glep.css" type="text/css" /></head>
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.7 $
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>
257</head>
258<body bgcolor="white"> 10<body bgcolor="white">
259<table class="navigation" cellpadding="0" cellspacing="0" 11<table class="navigation" cellpadding="0" cellspacing="0"
260 width="100%" border="0"> 12 width="100%" border="0">
261<tr><td class="navicon" width="150" height="35"> 13<tr><td class="navicon" width="150" height="35">
262<a href="http://www.gentoo.org/" title="Gentoo Linux Home Page"> 14<a href="http://www.gentoo.org/" title="Gentoo Linux Home Page">
263<img src="http://www.gentoo.org/images/gentoo-new.gif" alt="[Gentoo]" 15<img src="http://www.gentoo.org/images/gentoo-new.gif" alt="[Gentoo]"
264 border="0" width="150" height="35" /></a></td> 16 border="0" width="150" height="35" /></a></td>
265<td class="textlinks" align="left"> 17<td class="textlinks" align="left">
266[<b><a href="http://www.gentoo.org/">Gentoo Linux Home</a></b>] 18[<b><a href="http://www.gentoo.org/">Gentoo Linux Home</a></b>]
267[<b><a href="http://www.gentoo.org/proj/en/glep/">GLEP Index</a></b>] 19[<b><a href="http://www.gentoo.org/proj/en/glep">GLEP Index</a></b>]
268[<b><a href="http://www.gentoo.org/proj/en/glep/glep-0033.txt">GLEP Source</a></b>] 20[<b><a href="http://www.gentoo.org/proj/en/glep/glep-0033.txt">GLEP Source</a></b>]
269</td></tr></table> 21</td></tr></table>
270<table class="rfc2822 docutils field-list" frame="void" rules="none"> 22<table class="rfc2822 docutils field-list" frame="void" rules="none">
271<col class="field-name" /> 23<col class="field-name" />
272<col class="field-body" /> 24<col class="field-body" />
273<tbody valign="top"> 25<tbody valign="top">
274<tr class="field"><th class="field-name">GLEP:</th><td class="field-body">33</td> 26<tr class="field"><th class="field-name">GLEP:</th><td class="field-body">33</td>
275</tr> 27</tr>
276<tr class="field"><th class="field-name">Title:</th><td class="field-body">Eclass Restructure/Redesign</td> 28<tr class="field"><th class="field-name">Title:</th><td class="field-body">Eclass Restructure/Redesign</td>
277</tr> 29</tr>
278<tr class="field"><th class="field-name">Version:</th><td class="field-body">1.6</td> 30<tr class="field"><th class="field-name">Version:</th><td class="field-body">1.8</td>
279</tr> 31</tr>
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-0033.txt?cvsroot=gentoo">2006/09/05 20:54:30</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-0033.txt?cvsroot=gentoo">2010/04/07 22:04:02</a></td>
281</tr> 33</tr>
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;, John Mylchreest &lt;johnm&#32;&#97;t&#32;gentoo.org&gt;</td> 34<tr class="field"><th class="field-name">Author:</th><td class="field-body">Brian Harring &lt;ferringb&#32;&#97;t&#32;gentoo.org&gt;, John Mylchreest &lt;johnm&#32;&#97;t&#32;gentoo.org&gt;</td>
283</tr> 35</tr>
284<tr class="field"><th class="field-name">Status:</th><td class="field-body">Moribund</td> 36<tr class="field"><th class="field-name">Status:</th><td class="field-body">Moribund</td>
285</tr> 37</tr>
286<tr class="field"><th class="field-name">Type:</th><td class="field-body">Standards Track</td> 38<tr class="field"><th class="field-name">Type:</th><td class="field-body">Standards Track</td>
287</tr> 39</tr>
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> 40<tr class="field"><th class="field-name">Content-Type:</th><td class="field-body"><a class="reference external" href="glep-0002.html">text/x-rst</a></td>
289</tr> 41</tr>
290<tr class="field"><th class="field-name">Created:</th><td class="field-body">29-Jan-2005</td> 42<tr class="field"><th class="field-name">Created:</th><td class="field-body">29-Jan-2005</td>
291</tr> 43</tr>
292<tr class="field"><th class="field-name">Post-History:</th><td class="field-body">29-Jan-2005 6-Mar-2005 15-Sep-2005 5-Sep-2006</td> 44<tr class="field"><th class="field-name">Post-History:</th><td class="field-body">29-Jan-2005 6-Mar-2005 15-Sep-2005 5-Sep-2006</td>
293</tr> 45</tr>
294</tbody> 46</tbody>
295</table> 47</table>
296<hr /> 48<hr />
297<div class="contents topic"> 49<div class="contents topic" id="contents">
298<p class="topic-title first"><a id="contents" name="contents">Contents</a></p> 50<p class="topic-title first">Contents</p>
299<ul class="simple"> 51<ul class="simple">
300<li><a class="reference" href="#status" id="id2" name="id2">Status</a></li> 52<li><a class="reference internal" href="#status" id="id2">Status</a></li>
301<li><a class="reference" href="#abstract" id="id3" name="id3">Abstract</a></li> 53<li><a class="reference internal" href="#abstract" id="id3">Abstract</a></li>
302<li><a class="reference" href="#terminology" id="id4" name="id4">Terminology</a></li> 54<li><a class="reference internal" href="#terminology" id="id4">Terminology</a></li>
303<li><a class="reference" href="#motivation-and-rationale" id="id5" name="id5">Motivation and Rationale</a></li> 55<li><a class="reference internal" href="#motivation-and-rationale" id="id5">Motivation and Rationale</a></li>
304<li><a class="reference" href="#specification" id="id6" name="id6">Specification</a><ul> 56<li><a class="reference internal" href="#specification" id="id6">Specification</a><ul>
305<li><a class="reference" href="#ebuild-libraries-elibs-for-short" id="id7" name="id7">Ebuild Libraries (elibs for short)</a></li> 57<li><a class="reference internal" href="#ebuild-libraries-elibs-for-short" id="id7">Ebuild Libraries (elibs for short)</a></li>
306<li><a class="reference" href="#the-reduced-role-of-eclasses-and-a-clarification-of-existing-eclass-requirements" id="id8" name="id8">The reduced role of Eclasses, and a clarification of existing Eclass requirements</a></li> 58<li><a class="reference internal" href="#the-reduced-role-of-eclasses-and-a-clarification-of-existing-eclass-requirements" id="id8">The reduced role of Eclasses, and a clarification of existing Eclass requirements</a></li>
307<li><a class="reference" href="#the-end-of-backwards-compatibility" id="id9" name="id9">The end of backwards compatibility...</a></li> 59<li><a class="reference internal" href="#the-end-of-backwards-compatibility" id="id9">The end of backwards compatibility...</a></li>
308<li><a class="reference" href="#tree-restructuring" id="id10" name="id10">Tree restructuring</a></li> 60<li><a class="reference internal" href="#tree-restructuring" id="id10">Tree restructuring</a></li>
309<li><a class="reference" href="#the-start-of-a-different-phase-of-backwards-compatibility" id="id11" name="id11">The start of a different phase of backwards compatibility</a></li> 61<li><a class="reference internal" href="#the-start-of-a-different-phase-of-backwards-compatibility" id="id11">The start of a different phase of backwards compatibility</a></li>
310<li><a class="reference" href="#migrating-to-the-new-setup" id="id12" name="id12">Migrating to the new setup</a></li> 62<li><a class="reference internal" href="#migrating-to-the-new-setup" id="id12">Migrating to the new setup</a></li>
311</ul> 63</ul>
312</li> 64</li>
313<li><a class="reference" href="#backwards-compatibility" id="id13" name="id13">Backwards Compatibility</a></li> 65<li><a class="reference internal" href="#backwards-compatibility" id="id13">Backwards Compatibility</a></li>
314<li><a class="reference" href="#copyright" id="id14" name="id14">Copyright</a></li> 66<li><a class="reference internal" href="#copyright" id="id14">Copyright</a></li>
315</ul> 67</ul>
316</div> 68</div>
317<div class="section"> 69<div class="section" id="status">
318<h1><a class="toc-backref" href="#id2" id="status" name="status">Status</a></h1> 70<h1><a class="toc-backref" href="#id2">Status</a></h1>
319<p>Approved by the Gentoo Council on 15 September 2005. As of Sept. 2006 71<p>Approved by the Gentoo Council on 15 September 2005. As of Sept. 2006
320this GLEP is on hold, pending future revisions.</p> 72this GLEP is on hold, pending future revisions.</p>
321</div> 73</div>
322<div class="section"> 74<div class="section" id="abstract">
323<h1><a class="toc-backref" href="#id3" id="abstract" name="abstract">Abstract</a></h1> 75<h1><a class="toc-backref" href="#id3">Abstract</a></h1>
324<p>For any design, the transition from theoretical to applied exposes inadequacies 76<p>For any design, the transition from theoretical to applied exposes inadequacies
325in the original design. This document is intended to document, and propose a 77in the original design. This document is intended to document, and propose a
326revision of the current eclass setup to address current eclass inadequacies.</p> 78revision of the current eclass setup to address current eclass inadequacies.</p>
327<p>This document proposes several things- the creation of ebuild libraries, 'elibs', 79<p>This document proposes several things- the creation of ebuild libraries, 'elibs',
328a narrowing of the focus of eclasses, a move of eclasses w/in the tree, the 80a narrowing of the focus of eclasses, a move of eclasses w/in the tree, the
329addition of changelogs, and a way to allow for simple eclass gpg signing. 81addition of changelogs, and a way to allow for simple eclass gpg signing.
330In general, a large scale restructuring of what eclasses are and how they're 82In general, a large scale restructuring of what eclasses are and how they're
331implemented. Essentially version two of the eclass setup.</p> 83implemented. Essentially version two of the eclass setup.</p>
332</div> 84</div>
333<div class="section"> 85<div class="section" id="terminology">
334<h1><a class="toc-backref" href="#id4" id="terminology" name="terminology">Terminology</a></h1> 86<h1><a class="toc-backref" href="#id4">Terminology</a></h1>
335<p>From this point on, the proposed eclass setup will be called 'new eclasses', the 87<p>From this point on, the proposed eclass setup will be called 'new eclasses', the
336existing crop (as of this writing) will be referenced as 'old eclasses'. The 88existing crop (as of this writing) will be referenced as 'old eclasses'. The
337distinction is elaborated on within this document.</p> 89distinction is elaborated on within this document.</p>
338</div> 90</div>
339<div class="section"> 91<div class="section" id="motivation-and-rationale">
340<h1><a class="toc-backref" href="#id5" id="motivation-and-rationale" name="motivation-and-rationale">Motivation and Rationale</a></h1> 92<h1><a class="toc-backref" href="#id5">Motivation and Rationale</a></h1>
341<p>Eclasses within the tree currently are a bit of a mess- they're forced to 93<p>Eclasses within the tree currently are a bit of a mess- they're forced to
342maintain backwards compatibility w/ all previous functionality. In effect, 94maintain backwards compatibility w/ all previous functionality. In effect,
343their api is constant, and can only be added to- never changing the existing 95their api is constant, and can only be added to- never changing the existing
344functionality. This obviously is quite limiting, and leads to cruft accruing in 96functionality. This obviously is quite limiting, and leads to cruft accruing in
345eclasses as a eclasses design is refined. This needs to be dealt with prior to 97eclasses as a eclasses design is refined. This needs to be dealt with prior to
371template data, and are the basis for other ebuilds- elibs, however are <em>just</em> 123template data, and are the basis for other ebuilds- elibs, however are <em>just</em>
372common bash functionality.</p> 124common bash functionality.</p>
373<p>Consider the majority of the portage bin/* scripts- these all are candidates for 125<p>Consider the majority of the portage bin/* scripts- these all are candidates for
374being added to the tree as elibs, as is the bulk of eutils.</p> 126being added to the tree as elibs, as is the bulk of eutils.</p>
375</div> 127</div>
376<div class="section"> 128<div class="section" id="specification">
377<h1><a class="toc-backref" href="#id6" id="specification" name="specification">Specification</a></h1> 129<h1><a class="toc-backref" href="#id6">Specification</a></h1>
378<p>The various parts of this proposal are broken down into a set of changes and 130<p>The various parts of this proposal are broken down into a set of changes and
379elaborations on why a proposed change is preferable. It's advisable to the 131elaborations on why a proposed change is preferable. It's advisable to the
380reader that this be read serially, rather then jumping around.</p> 132reader that this be read serially, rather then jumping around.</p>
381<div class="section"> 133<div class="section" id="ebuild-libraries-elibs-for-short">
382<h2><a class="toc-backref" href="#id7" id="ebuild-libraries-elibs-for-short" name="ebuild-libraries-elibs-for-short">Ebuild Libraries (elibs for short)</a></h2> 134<h2><a class="toc-backref" href="#id7">Ebuild Libraries (elibs for short)</a></h2>
383<p>As briefly touched upon in Motivation and Rationale, the original eclass design 135<p>As briefly touched upon in Motivation and Rationale, the original eclass design
384allowed for the eclass to modify the metadata of an ebuild, metadata being the 136allowed for the eclass to modify the metadata of an ebuild, metadata being the
385DEPENDS, RDEPENDS, SRC_URI, IUSE, etc, vars that are required to be constant, 137DEPENDS, RDEPENDS, SRC_URI, IUSE, etc, vars that are required to be constant,
386and used by portage for dep resolution, fetching, etc. Using the earlier 138and used by portage for dep resolution, fetching, etc. Using the earlier
387example, if you're after a single function from an eclass (say epatch from 139example, if you're after a single function from an eclass (say epatch from
446<p>As to why their are so many restrictions, the answer is simple- the definition of 198<p>As to why their are so many restrictions, the answer is simple- the definition of
447what elibs are, what they are capable of, and how to use them is nailed down as much as 199what elibs are, what they are capable of, and how to use them is nailed down as much as
448possible to avoid <em>any</em> ambiguity related to them. The intention is to make it clear, 200possible to avoid <em>any</em> ambiguity related to them. The intention is to make it clear,
449such that no misconceptions occur, resulting in bugs.</p> 201such that no misconceptions occur, resulting in bugs.</p>
450</div> 202</div>
451<div class="section"> 203<div class="section" id="the-reduced-role-of-eclasses-and-a-clarification-of-existing-eclass-requirements">
452<h2><a class="toc-backref" href="#id8" id="the-reduced-role-of-eclasses-and-a-clarification-of-existing-eclass-requirements" name="the-reduced-role-of-eclasses-and-a-clarification-of-existing-eclass-requirements">The reduced role of Eclasses, and a clarification of existing Eclass requirements</a></h2> 204<h2><a class="toc-backref" href="#id8">The reduced role of Eclasses, and a clarification of existing Eclass requirements</a></h2>
453<p>Since elibs are now intended on holding common bash functionality, the focus of 205<p>Since elibs are now intended on holding common bash functionality, the focus of
454eclasses should be in defining an appropriate template for ebuilds. For example, 206eclasses should be in defining an appropriate template for ebuilds. For example,
455defining common DEPENDS, RDEPENDS, src_compile functions, src_unpack, etc. 207defining common DEPENDS, RDEPENDS, src_compile functions, src_unpack, etc.
456Additionally, eclasses should pull in any elibs they need for functionality.</p> 208Additionally, eclasses should pull in any elibs they need for functionality.</p>
457<p>Eclass functionality that isn't directly related to the metadata, or src_* and 209<p>Eclass functionality that isn't directly related to the metadata, or src_* and
485indefinitely- compatibility must be maintained against the current tree, but 237indefinitely- compatibility must be maintained against the current tree, but
486just that. As such new eclasses (the true distinction of new vs old is 238just that. As such new eclasses (the true distinction of new vs old is
487elaborated in the next section) can be removed from the tree once they're no 239elaborated in the next section) can be removed from the tree once they're no
488longer in use.</p> 240longer in use.</p>
489</div> 241</div>
490<div class="section"> 242<div class="section" id="the-end-of-backwards-compatibility">
491<h2><a class="toc-backref" href="#id9" id="the-end-of-backwards-compatibility" name="the-end-of-backwards-compatibility">The end of backwards compatibility...</a></h2> 243<h2><a class="toc-backref" href="#id9">The end of backwards compatibility...</a></h2>
492<p>With current eclasses, once the eclass is in use, its api can no longer be 244<p>With current eclasses, once the eclass is in use, its api can no longer be
493changed, nor can the eclass ever be removed from the tree. This is why we still 245changed, nor can the eclass ever be removed from the tree. This is why we still
494have <em>ancient</em> eclasses that are completely unused sitting in the tree, for 246have <em>ancient</em> eclasses that are completely unused sitting in the tree, for
495example inherit.eclass. The reason for this, not surprisingly, is a portage 247example inherit.eclass. The reason for this, not surprisingly, is a portage
496deficiency: on unmerging an installed ebuild, portage used the eclass from the 248deficiency: on unmerging an installed ebuild, portage used the eclass from the
528subdirectory of the eclass dir in the tree, all current portage versions would 280subdirectory of the eclass dir in the tree, all current portage versions would
529still be able to access them.</p> 281still be able to access them.</p>
530<p>In other words, these new eclasses would in effect, be old eclasses since older 282<p>In other words, these new eclasses would in effect, be old eclasses since older
531portage versions could still access them.</p> 283portage versions could still access them.</p>
532</div> 284</div>
533<div class="section"> 285<div class="section" id="tree-restructuring">
534<h2><a class="toc-backref" href="#id10" id="tree-restructuring" name="tree-restructuring">Tree restructuring</a></h2> 286<h2><a class="toc-backref" href="#id10">Tree restructuring</a></h2>
535<p>There are only two way to block the existing (as of this writing) inherit 287<p>There are only two way to block the existing (as of this writing) inherit
536functionality from accessing the new eclasses- either change the extension of 288functionality from accessing the new eclasses- either change the extension of
537eclasses to something other then 'eclass', or to have them stored in a separate 289eclasses to something other then 'eclass', or to have them stored in a separate
538subdirectory of the tree then eclass.</p> 290subdirectory of the tree then eclass.</p>
539<p>The latter is preferable, and the proposed solution. Reasons are- the current 291<p>The latter is preferable, and the proposed solution. Reasons are- the current
578these checks would only be capable of doing basic sanity checks, such as syntax checks. 330these checks would only be capable of doing basic sanity checks, such as syntax checks.
579There is no way to prevent people from doing dumb things (exempting perhaps repeated 331There is no way to prevent people from doing dumb things (exempting perhaps repeated
580applications of a cattle prod)- these are strictly automatic checks, akin to repoman's 332applications of a cattle prod)- these are strictly automatic checks, akin to repoman's
581dependency checks.</p> 333dependency checks.</p>
582</div> 334</div>
583<div class="section"> 335<div class="section" id="the-start-of-a-different-phase-of-backwards-compatibility">
584<h2><a class="toc-backref" href="#id11" id="the-start-of-a-different-phase-of-backwards-compatibility" name="the-start-of-a-different-phase-of-backwards-compatibility">The start of a different phase of backwards compatibility</a></h2> 336<h2><a class="toc-backref" href="#id11">The start of a different phase of backwards compatibility</a></h2>
585<p>As clarified above, new eclasses will exist in a separate directory that will be 337<p>As clarified above, new eclasses will exist in a separate directory that will be
586intentionally inaccessible to the inherit function. As such, users of older 338intentionally inaccessible to the inherit function. As such, users of older
587portage versions <em>will</em> have to upgrade to merge any ebuild that uses elibs/new 339portage versions <em>will</em> have to upgrade to merge any ebuild that uses elibs/new
588eclasses. A depend on the next major portage version would transparently handle 340eclasses. A depend on the next major portage version would transparently handle
589this for rsync users.</p> 341this for rsync users.</p>
637lost functionality. The intention is to clean up the existing mess, and allow us 389lost functionality. The intention is to clean up the existing mess, and allow us
638to move forward. The saying &quot;you've got to break a few eggs to make an omelet&quot; 390to move forward. The saying &quot;you've got to break a few eggs to make an omelet&quot;
639is akin, exempting the fact we're providing a way to make the eggs whole again 391is akin, exempting the fact we're providing a way to make the eggs whole again
640(the king's men would've loved such an option).</p> 392(the king's men would've loved such an option).</p>
641</div> 393</div>
642<div class="section"> 394<div class="section" id="migrating-to-the-new-setup">
643<h2><a class="toc-backref" href="#id12" id="migrating-to-the-new-setup" name="migrating-to-the-new-setup">Migrating to the new setup</a></h2> 395<h2><a class="toc-backref" href="#id12">Migrating to the new setup</a></h2>
644<p>As has been done in the past whenever a change in the tree results in ebuilds 396<p>As has been done in the past whenever a change in the tree results in ebuilds
645requiring a specific version of portage, as ebuilds migrate to the new eclasses, 397requiring a specific version of portage, as ebuilds migrate to the new eclasses,
646they should depend on a version of portage that supports it. From the users 398they should depend on a version of portage that supports it. From the users
647viewpoint, this transparently handles the migration.</p> 399viewpoint, this transparently handles the migration.</p>
648<p>This isn't so transparent for devs or a particular infrastructure server however. 400<p>This isn't so transparent for devs or a particular infrastructure server however.
666<p>Essentially, you have a chance to nail the design perfectly/cleanly, and have a 418<p>Essentially, you have a chance to nail the design perfectly/cleanly, and have a
667window in which to redesign it. It's humbly suggested eclass devs take 419window in which to redesign it. It's humbly suggested eclass devs take
668advantage of it. :)</p> 420advantage of it. :)</p>
669</div> 421</div>
670</div> 422</div>
671<div class="section"> 423<div class="section" id="backwards-compatibility">
672<h1><a class="toc-backref" href="#id13" id="backwards-compatibility" name="backwards-compatibility">Backwards Compatibility</a></h1> 424<h1><a class="toc-backref" href="#id13">Backwards Compatibility</a></h1>
673<p>All backwards compatibility issues are addressed in line, but a recap is offered- 425<p>All backwards compatibility issues are addressed in line, but a recap is offered-
674it's suggested that if the a particular compatibility issue is 426it's suggested that if the a particular compatibility issue is
675questioned/worried over, the reader read the relevant section. There should be 427questioned/worried over, the reader read the relevant section. There should be
676a more in depth discussion of the issue, along with a more extensive explanation 428a more in depth discussion of the issue, along with a more extensive explanation
677of the potential solutions, and reasons for the chosen solution.</p> 429of the potential solutions, and reasons for the chosen solution.</p>
698case. Note, this case is rare also- as clarified above, it's mentioned 450case. Note, this case is rare also- as clarified above, it's mentioned
699strictly to be complete, it's not much of a real world scenario as elaborated 451strictly to be complete, it's not much of a real world scenario as elaborated
700above. 452above.
701</pre> 453</pre>
702</div> 454</div>
703<div class="section"> 455<div class="section" id="copyright">
704<h1><a class="toc-backref" href="#id14" id="copyright" name="copyright">Copyright</a></h1> 456<h1><a class="toc-backref" href="#id14">Copyright</a></h1>
705<p>This document has been placed in the public domain.</p> 457<p>This document has been placed in the public domain.</p>
706</div> 458</div>
707 459
708</div> 460</div>
709<div class="footer"> 461<div class="footer">
710<hr class="footer" /> 462<hr class="footer" />
711<a class="reference" href="glep-0033.txt">View document source</a>. 463<a class="reference external" href="glep-0033.txt">View document source</a>.
712Generated on: 2006-10-10 20:23 UTC. 464Generated on: 2010-04-07 22:04 UTC.
713Generated 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. 465Generated 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.
714 466
715</div> 467</div>
716</body> 468</body>
717</html> 469</html>
718

Legend:
Removed from v.1.7  
changed lines
  Added in v.1.10

  ViewVC Help
Powered by ViewVC 1.1.20