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

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

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

Revision 1.1 Revision 1.2
37</tr> 37</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.cgi/xml/htdocs/proj/en/glep/glep-0022.txt?cvsroot=gentoo">2004/03/07 02:20:32</a></td> 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.cgi/xml/htdocs/proj/en/glep/glep-0022.txt?cvsroot=gentoo">2004/03/07 02:20:32</a></td>
39</tr> 39</tr>
40<tr class="field"><th class="field-name">Author:</th><td class="field-body">Grant Goodyear &lt;g2boojum&#32;&#97;t&#32;gentoo.org&gt;</td> 40<tr class="field"><th class="field-name">Author:</th><td class="field-body">Grant Goodyear &lt;g2boojum&#32;&#97;t&#32;gentoo.org&gt;</td>
41</tr> 41</tr>
42<tr class="field"><th class="field-name">Status:</th><td class="field-body">Draft</td> 42<tr class="field"><th class="field-name">Status:</th><td class="field-body">Withdrawn</td>
43</tr> 43</tr>
44<tr class="field"><th class="field-name">Type:</th><td class="field-body">Standards Track</td> 44<tr class="field"><th class="field-name">Type:</th><td class="field-body">Standards Track</td>
45</tr> 45</tr>
46<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> 46<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> 47</tr>
53</table> 53</table>
54<hr /> 54<hr />
55<div class="contents topic" id="contents"> 55<div class="contents topic" id="contents">
56<p class="topic-title"><a name="contents">Contents</a></p> 56<p class="topic-title"><a name="contents">Contents</a></p>
57<ul class="simple"> 57<ul class="simple">
58<li><a class="reference" href="#status" id="id14" name="id14">Status</a></li>
58<li><a class="reference" href="#credits" id="id14" name="id14">Credits</a></li> 59<li><a class="reference" href="#credits" id="id15" name="id15">Credits</a></li>
59<li><a class="reference" href="#abstract" id="id15" name="id15">Abstract</a></li> 60<li><a class="reference" href="#abstract" id="id16" name="id16">Abstract</a></li>
60<li><a class="reference" href="#motivation" id="id16" name="id16">Motivation</a></li> 61<li><a class="reference" href="#motivation" id="id17" name="id17">Motivation</a></li>
61<li><a class="reference" href="#specification" id="id17" name="id17">Specification</a><ul> 62<li><a class="reference" href="#specification" id="id18" name="id18">Specification</a><ul>
62<li><a class="reference" href="#new-variables" id="id18" name="id18">New Variables</a></li> 63<li><a class="reference" href="#new-variables" id="id19" name="id19">New Variables</a></li>
63<li><a class="reference" href="#reasonable-defaults" id="id19" name="id19">Reasonable Defaults</a></li> 64<li><a class="reference" href="#reasonable-defaults" id="id20" name="id20">Reasonable Defaults</a></li>
64<li><a class="reference" href="#profiles" id="id20" name="id20">Profiles</a></li> 65<li><a class="reference" href="#profiles" id="id21" name="id21">Profiles</a></li>
65</ul> 66</ul>
66</li> 67</li>
67<li><a class="reference" href="#rationale" id="id21" name="id21">Rationale</a></li> 68<li><a class="reference" href="#rationale" id="id22" name="id22">Rationale</a></li>
68<li><a class="reference" href="#implementation" id="id22" name="id22">Implementation</a></li> 69<li><a class="reference" href="#implementation" id="id23" name="id23">Implementation</a></li>
69<li><a class="reference" href="#backwards-compatibility" id="id23" name="id23">Backwards Compatibility</a></li> 70<li><a class="reference" href="#backwards-compatibility" id="id24" name="id24">Backwards Compatibility</a></li>
70<li><a class="reference" href="#id1" id="id24" name="id24">References</a></li> 71<li><a class="reference" href="#id1" id="id25" name="id25">References</a></li>
71<li><a class="reference" href="#copyright" id="id25" name="id25">Copyright</a></li> 72<li><a class="reference" href="#copyright" id="id26" name="id26">Copyright</a></li>
72</ul> 73</ul>
73</div> 74</div>
75<div class="section" id="status">
76<h1><a class="toc-backref" href="#id14" name="status">Status</a></h1>
77<p>I'm withdrawing this GLEP. It is clear from the discussions on
78gentoo-dev that although breaking they keywords into four components
79is probably a good idea, the four components are <em>not</em> independent.
80Thus, the &quot;keyword explosion&quot; that this GLEP tries to prevent is
81inevitable. The real issue, then, is how to make the keyword
82explosion reasonably manageable, but that's a topic for another
83GLEP.</p>
84</div>
74<div class="section" id="credits"> 85<div class="section" id="credits">
75<h1><a class="toc-backref" href="#id14" name="credits">Credits</a></h1> 86<h1><a class="toc-backref" href="#id15" name="credits">Credits</a></h1>
76<p>This GLEP originated from the concerns that Daniel Robbins had with 87<p>This GLEP originated from the concerns that Daniel Robbins had with
77the <em>x86obsd</em> keyword, and his desire to make the KEYWORDS variable more 88the <em>x86obsd</em> keyword, and his desire to make the KEYWORDS variable more
78&quot;feature-rich&quot;. Drobbins' original idea was that we should 89&quot;feature-rich&quot;. Drobbins' original idea was that we should
79allow compound 90allow compound
80keywords such as gnu/x86, gnu/ppc, and macos/ppc (which would be explicit 91keywords such as gnu/x86, gnu/ppc, and macos/ppc (which would be explicit
82that userland/arch failed to capture the full range of possibilities (what 93that userland/arch failed to capture the full range of possibilities (what
83about a GNU userland on a BSD kernel+libc?), and 94about a GNU userland on a BSD kernel+libc?), and
84the issue has languished due to a lack of reasonable solutions.</p> 95the issue has languished due to a lack of reasonable solutions.</p>
85</div> 96</div>
86<div class="section" id="abstract"> 97<div class="section" id="abstract">
87<h1><a class="toc-backref" href="#id15" name="abstract">Abstract</a></h1> 98<h1><a class="toc-backref" href="#id16" name="abstract">Abstract</a></h1>
88<p>As Gentoo branches out to support non-Linux and non-GNU systems (such 99<p>As Gentoo branches out to support non-Linux and non-GNU systems (such
89as Hurd or the *BSDs), the potential for an &quot;explosion&quot; of possible 100as Hurd or the *BSDs), the potential for an &quot;explosion&quot; of possible
90keywords becomes rather large, since each 101keywords becomes rather large, since each
91new userland/kernel/arch/whatever 102new userland/kernel/arch/whatever
92combination would require a new keyword. 103combination would require a new keyword.
93This GLEP proposes replacing the current 104This GLEP proposes replacing the current
94KEYWORDS variable with four variables, ARCH, USERNAME, KERNEL, and LIBC, 105KEYWORDS variable with four variables, ARCH, USERLAND, KERNEL, and LIBC,
95along with sensible defaults to keep the new system manageable.</p> 106along with sensible defaults to keep the new system manageable.</p>
96</div> 107</div>
97<div class="section" id="motivation"> 108<div class="section" id="motivation">
98<h1><a class="toc-backref" href="#id16" name="motivation">Motivation</a></h1> 109<h1><a class="toc-backref" href="#id17" name="motivation">Motivation</a></h1>
99<p>Since the beginning, Gentoo Linux has been conceived as a &quot;metadistribution&quot; 110<p>Since the beginning, Gentoo Linux has been conceived as a &quot;metadistribution&quot;
100that combines remarkable flexibility with sensible defaults and exceptional 111that combines remarkable flexibility with sensible defaults and exceptional
101maintainablilty. The goal of the <a class="reference" href="http://www.gentoo.org/proj/en/gentoo-alt/index.xml">Gentoo-Alt</a> <a class="footnote-reference" href="#id2" id="id3" name="id3">[1]</a> project has been to extend that 112maintainablilty. The goal of the <a class="reference" href="http://www.gentoo.org/proj/en/gentoo-alt/index.xml">Gentoo-Alt</a> <a class="footnote-reference" href="#id2" id="id3" name="id3">[1]</a> project has been to extend that
102flexibility to include systems other than GNU/Linux. For example, the author 113flexibility to include systems other than GNU/Linux. For example, the author
103of this GLEP has been working to create a <a class="reference" href="http://www.gentoo.org/proj/en/gentoo-alt/bsd/index.xml">version</a> <a class="footnote-reference" href="#id8" id="id9" name="id9">[3]</a> of Gentoo that uses 114of this GLEP has been working to create a <a class="reference" href="http://www.gentoo.org/proj/en/gentoo-alt/bsd/index.xml">version</a> <a class="footnote-reference" href="#id8" id="id9" name="id9">[3]</a> of Gentoo that uses
112BSD userland with a GNU userland.) The net result is that we would need 123BSD userland with a GNU userland.) The net result is that we would need
113keywords that specified all possible permutations of arch, userland, kernel 124keywords that specified all possible permutations of arch, userland, kernel
114and libc. Not fun.</p> 125and libc. Not fun.</p>
115</div> 126</div>
116<div class="section" id="specification"> 127<div class="section" id="specification">
117<h1><a class="toc-backref" href="#id17" name="specification">Specification</a></h1> 128<h1><a class="toc-backref" href="#id18" name="specification">Specification</a></h1>
118<div class="section" id="new-variables"> 129<div class="section" id="new-variables">
119<h2><a class="toc-backref" href="#id18" name="new-variables">New Variables</a></h2> 130<h2><a class="toc-backref" href="#id19" name="new-variables">New Variables</a></h2>
120<p>I suggest that we replace the single KEYWORDS variable in ebuilds 131<p>I suggest that we replace the single KEYWORDS variable in ebuilds
121with four separate variables: ARCH, USERLAND, LIBC, and KERNEL.</p> 132with four separate variables: ARCH, USERLAND, LIBC, and KERNEL.</p>
122<blockquote> 133<blockquote>
123<dl> 134<dl>
124<dt>ARCH: </dt> 135<dt>ARCH: </dt>
136For each variable the standard &quot;-,-*,~&quot; prefixes would be allowed. 147For each variable the standard &quot;-,-*,~&quot; prefixes would be allowed.
137Similarly, <cite>/etc/make.conf</cite> would have ACCEPT_ARCH, ACCEPT_USERLAND, 148Similarly, <cite>/etc/make.conf</cite> would have ACCEPT_ARCH, ACCEPT_USERLAND,
138ACCEPT_LIBC, and ACCEPT_KERNEL variables.</p> 149ACCEPT_LIBC, and ACCEPT_KERNEL variables.</p>
139</div> 150</div>
140<div class="section" id="reasonable-defaults"> 151<div class="section" id="reasonable-defaults">
141<h2><a class="toc-backref" href="#id19" name="reasonable-defaults">Reasonable Defaults</a></h2> 152<h2><a class="toc-backref" href="#id20" name="reasonable-defaults">Reasonable Defaults</a></h2>
142<p>To keep this system manageable, we need sensible defaults. An ebuild 153<p>To keep this system manageable, we need sensible defaults. An ebuild
143that has missing USERLAND, KERNEL, or LIBC variables is provided 154that has missing USERLAND, KERNEL, or LIBC variables is provided
144with implicit USERLAND=&quot;gnu&quot;, KERNEL=&quot;linux&quot;, and/or LIBC=&quot;glibc&quot; 155with implicit USERLAND=&quot;gnu&quot;, KERNEL=&quot;linux&quot;, and/or LIBC=&quot;glibc&quot;
145variables. However, once a variable is explicitly added (such as 156variables. However, once a variable is explicitly added (such as
146KERNEL=&quot;openbsd&quot;), the default is no longer assumed. That is, 157KERNEL=&quot;openbsd&quot;), the default is no longer assumed. That is,
151add the ebuild's KEYWORD entries to ARCH. Thus, all current ebuilds 162add the ebuild's KEYWORD entries to ARCH. Thus, all current ebuilds
152would still work without changes, allowing for a gradual transition 163would still work without changes, allowing for a gradual transition
153to the new system as the new variables are needed.</p> 164to the new system as the new variables are needed.</p>
154</div> 165</div>
155<div class="section" id="profiles"> 166<div class="section" id="profiles">
156<h2><a class="toc-backref" href="#id20" name="profiles">Profiles</a></h2> 167<h2><a class="toc-backref" href="#id21" name="profiles">Profiles</a></h2>
157<p>Along with an explosion of keywords comes a concomitant explosion 168<p>Along with an explosion of keywords comes a concomitant explosion
158of potential profiles. The good news is that profiles show up only 169of potential profiles. The good news is that profiles show up only
159in a single directory, so an explosion there is easier to contain. 170in a single directory, so an explosion there is easier to contain.
160I suggest an arch-kernel-userland-libc-version naming scheme, with 171I suggest an arch-kernel-userland-libc-version naming scheme, with
161the kernel-userland-libc terms defaulting to linux-gnu-glibc if 172the kernel-userland-libc terms defaulting to linux-gnu-glibc if
168matters is the idea of stackable, or cascading, profiles, so that 179matters is the idea of stackable, or cascading, profiles, so that
169only differences between profiles would have to be maintained.</p> 180only differences between profiles would have to be maintained.</p>
170</div> 181</div>
171</div> 182</div>
172<div class="section" id="rationale"> 183<div class="section" id="rationale">
173<h1><a class="toc-backref" href="#id21" name="rationale">Rationale</a></h1> 184<h1><a class="toc-backref" href="#id22" name="rationale">Rationale</a></h1>
174<p>The proposed new &quot;keywording&quot; system is far from elegant, which is 185<p>The proposed new &quot;keywording&quot; system is far from elegant, which is
175a substantial drawback. On the other hand, it is simple, it requires 186a substantial drawback. On the other hand, it is simple, it requires
176relatively minor changes (albeit ones that eventually would impact 187relatively minor changes (albeit ones that eventually would impact
177every ebuild in the portage tree), and the changes can be implemented 188every ebuild in the portage tree), and the changes can be implemented
178gradually over time.</p> 189gradually over time.</p>
179</div> 190</div>
180<div class="section" id="implementation"> 191<div class="section" id="implementation">
181<h1><a class="toc-backref" href="#id22" name="implementation">Implementation</a></h1> 192<h1><a class="toc-backref" href="#id23" name="implementation">Implementation</a></h1>
182<p>Implementation of this GLEP would divide into adding 193<p>Implementation of this GLEP would divide into adding
183Portage functionality to support the new system and 194Portage functionality to support the new system and
184modifying ebuilds to 195modifying ebuilds to
185comply with the new system. 196comply with the new system.
186The Portage support involves hacking Portage 197The Portage support involves hacking Portage
191on the other hand, is a massive undertaking. Fortunately, it is 202on the other hand, is a massive undertaking. Fortunately, it is
192also a process that can be done over whatever length of time is 203also a process that can be done over whatever length of time is
193required, since &quot;legacy&quot; ebuilds should work with no changes.</p> 204required, since &quot;legacy&quot; ebuilds should work with no changes.</p>
194</div> 205</div>
195<div class="section" id="backwards-compatibility"> 206<div class="section" id="backwards-compatibility">
196<h1><a class="toc-backref" href="#id23" name="backwards-compatibility">Backwards Compatibility</a></h1> 207<h1><a class="toc-backref" href="#id24" name="backwards-compatibility">Backwards Compatibility</a></h1>
197<p>Backwards compatibility has already been addressed in some detail, 208<p>Backwards compatibility has already been addressed in some detail,
198with the stated goal being a system that would leave all current 209with the stated goal being a system that would leave all current
199ebuilds in a still-functioning state after the portage modifications 210ebuilds in a still-functioning state after the portage modifications
200have been made. However, we are already using an ARCH variable for 211have been made. However, we are already using an ARCH variable for
201some arcane purpose in Portage, and that issue would still need to 212some arcane purpose in Portage, and that issue would still need to
202be resolved.</p> 213be resolved.</p>
203</div> 214</div>
204<div class="section" id="id1"> 215<div class="section" id="id1">
205<h1><a class="toc-backref" href="#id24" name="id1">References</a></h1> 216<h1><a class="toc-backref" href="#id25" name="id1">References</a></h1>
206<table class="footnote" frame="void" id="id2" rules="none"> 217<table class="footnote" frame="void" id="id2" rules="none">
207<colgroup><col class="label" /><col /></colgroup> 218<colgroup><col class="label" /><col /></colgroup>
208<tbody valign="top"> 219<tbody valign="top">
209<tr><td class="label"><a name="id2">[1]</a></td><td><em>(<a class="fn-backref" href="#id3">1</a>, <a class="fn-backref" href="#id4">2</a>)</em> <a class="reference" href="http://www.gentoo.org/proj/en/gentoo-alt/index.xml">http://www.gentoo.org/proj/en/gentoo-alt/index.xml</a></td></tr> 220<tr><td class="label"><a name="id2">[1]</a></td><td><em>(<a class="fn-backref" href="#id3">1</a>, <a class="fn-backref" href="#id4">2</a>)</em> <a class="reference" href="http://www.gentoo.org/proj/en/gentoo-alt/index.xml">http://www.gentoo.org/proj/en/gentoo-alt/index.xml</a></td></tr>
210</tbody> 221</tbody>
233<tr><td class="label"><a class="fn-backref" href="#id13" name="id12">[5]</a></td><td><a class="reference" href="http://www.debian.org/ports/netbsd/">http://www.debian.org/ports/netbsd/</a></td></tr> 244<tr><td class="label"><a class="fn-backref" href="#id13" name="id12">[5]</a></td><td><a class="reference" href="http://www.debian.org/ports/netbsd/">http://www.debian.org/ports/netbsd/</a></td></tr>
234</tbody> 245</tbody>
235</table> 246</table>
236</div> 247</div>
237<div class="section" id="copyright"> 248<div class="section" id="copyright">
238<h1><a class="toc-backref" href="#id25" name="copyright">Copyright</a></h1> 249<h1><a class="toc-backref" href="#id26" name="copyright">Copyright</a></h1>
239<p>This document is licensed under the Creative Commons - Attribution / Share 250<p>This document is licensed under the Creative Commons - Attribution / Share
240Alike license. (<a class="reference" href="http://creativecommons.org/licenses/by-sa/1.0">http://creativecommons.org/licenses/by-sa/1.0</a>)</p> 251Alike license. (<a class="reference" href="http://creativecommons.org/licenses/by-sa/1.0">http://creativecommons.org/licenses/by-sa/1.0</a>)</p>
241</div> 252</div>
242</div> 253</div>
243 254
244<hr class="footer"/> 255<hr class="footer"/>
245<div class="footer"> 256<div class="footer">
246<a class="reference" href="glep-0022.txt">View document source</a>. 257<a class="reference" href="glep-0022.txt">View document source</a>.
247Generated on: 2004-03-07 02:20 UTC. 258Generated on: 2004-05-02 20:52 UTC.
248Generated 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. 259Generated 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.
249</div> 260</div>
250</body> 261</body>
251</html> 262</html>
252 263

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

  ViewVC Help
Powered by ViewVC 1.1.20