/[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.2 Revision 1.9
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.0: http://docutils.sourceforge.net/" /> 11 <meta name="generator" content="Docutils 0.4: http://docutils.sourceforge.net/" />
12 <title>GLEP 22 -- New "keyword" system to incorporate various userlands/kernels/archs</title> 12 <title>GLEP 22 -- New "keyword" system to incorporate various userlands/kernels/archs</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:25:53 $
19:version: $Revision: 1.9 $
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="http://www.gentoo.org/proj/en/glep/glep-0022.txt">GLEP Source</a></b>] 268[<b><a href="http://www.gentoo.org/proj/en/glep/glep-0022.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">22</td> 274<tr class="field"><th class="field-name">GLEP:</th><td class="field-body">22</td>
33</tr> 275</tr>
34<tr class="field"><th class="field-name">Title:</th><td class="field-body">New &quot;keyword&quot; system to incorporate various userlands/kernels/archs</td> 276<tr class="field"><th class="field-name">Title:</th><td class="field-body">New &quot;keyword&quot; system to incorporate various userlands/kernels/archs</td>
35</tr> 277</tr>
36<tr class="field"><th class="field-name">Version:</th><td class="field-body">1.1</td> 278<tr class="field"><th class="field-name">Version:</th><td class="field-body">1.8</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.cgi/xml/htdocs/proj/en/glep/glep-0022.txt?cvsroot=gentoo">2004/03/07 02:20:32</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-0022.txt?cvsroot=gentoo">2005/01/09 16:12:40</a></td>
39</tr> 281</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> 282<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> 283</tr>
42<tr class="field"><th class="field-name">Status:</th><td class="field-body">Withdrawn</td> 284<tr class="field"><th class="field-name">Status:</th><td class="field-body">Final</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-0002.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">6-Mar-2004</td> 292<tr class="field"><th class="field-name">Post-History:</th><td class="field-body">6-Mar-2004, 5-Jun-2004, 20-Jul-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"><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="#status" id="id14" name="id14">Status</a></li> 300<li><a class="reference" href="#status" id="id14" name="id14">Status</a></li>
59<li><a class="reference" href="#credits" id="id15" name="id15">Credits</a></li> 301<li><a class="reference" href="#credits" id="id15" name="id15">Credits</a></li>
60<li><a class="reference" href="#abstract" id="id16" name="id16">Abstract</a></li> 302<li><a class="reference" href="#abstract" id="id16" name="id16">Abstract</a></li>
61<li><a class="reference" href="#motivation" id="id17" name="id17">Motivation</a></li> 303<li><a class="reference" href="#motivation" id="id17" name="id17">Motivation</a></li>
62<li><a class="reference" href="#specification" id="id18" name="id18">Specification</a><ul> 304<li><a class="reference" href="#specification" id="id18" name="id18">Specification</a><ul>
63<li><a class="reference" href="#new-variables" id="id19" name="id19">New Variables</a></li> 305<li><a class="reference" href="#keyword-fragments" id="id19" name="id19">Keyword Fragments</a></li>
64<li><a class="reference" href="#reasonable-defaults" id="id20" name="id20">Reasonable Defaults</a></li> 306<li><a class="reference" href="#reasonable-defaults" id="id20" name="id20">Reasonable Defaults</a></li>
307<li><a class="reference" href="#ebuild-keyword-database" id="id21" name="id21">Ebuild Keyword Database?</a></li>
65<li><a class="reference" href="#profiles" id="id21" name="id21">Profiles</a></li> 308<li><a class="reference" href="#profiles" id="id22" name="id22">Profiles</a></li>
66</ul> 309</ul>
67</li> 310</li>
68<li><a class="reference" href="#rationale" id="id22" name="id22">Rationale</a></li> 311<li><a class="reference" href="#rationale" id="id23" name="id23">Rationale</a></li>
69<li><a class="reference" href="#implementation" id="id23" name="id23">Implementation</a></li> 312<li><a class="reference" href="#implementation" id="id24" name="id24">Implementation</a></li>
70<li><a class="reference" href="#backwards-compatibility" id="id24" name="id24">Backwards Compatibility</a></li> 313<li><a class="reference" href="#backwards-compatibility" id="id25" name="id25">Backwards Compatibility</a></li>
71<li><a class="reference" href="#id1" id="id25" name="id25">References</a></li> 314<li><a class="reference" href="#id1" id="id26" name="id26">References</a></li>
72<li><a class="reference" href="#copyright" id="id26" name="id26">Copyright</a></li> 315<li><a class="reference" href="#copyright" id="id27" name="id27">Copyright</a></li>
73</ul> 316</ul>
74</div> 317</div>
75<div class="section" id="status"> 318<div class="section">
76<h1><a class="toc-backref" href="#id14" name="status">Status</a></h1> 319<h1><a class="toc-backref" href="#id14" id="status" name="status">Status</a></h1>
77<p>I'm withdrawing this GLEP. It is clear from the discussions on 320<p>After withdrawing this GLEP temporarily, a rewritten version has
78gentoo-dev that although breaking they keywords into four components 321now been resubmitted. This version no longer tries to prevent a
79is probably a good idea, the four components are <em>not</em> independent. 322keyword explosion, but merely tries to make it manageable.</p>
80Thus, the &quot;keyword explosion&quot; that this GLEP tries to prevent is 323<p>This version was approved on 14-Jun-2004, with the amendment that cascading
81inevitable. The real issue, then, is how to make the keyword 324profiles should be used.</p>
82explosion reasonably manageable, but that's a topic for another
83GLEP.</p>
84</div> 325</div>
85<div class="section" id="credits"> 326<div class="section">
86<h1><a class="toc-backref" href="#id15" name="credits">Credits</a></h1> 327<h1><a class="toc-backref" href="#id15" id="credits" name="credits">Credits</a></h1>
87<p>This GLEP originated from the concerns that Daniel Robbins had with 328<p>This GLEP originated from the concerns that Daniel Robbins had with the
88the <em>x86obsd</em> keyword, and his desire to make the KEYWORDS variable more 329<em>x86obsd</em> keyword, and his desire to make the KEYWORDS variable more
89&quot;feature-rich&quot;. Drobbins' original idea was that we should 330&quot;feature-rich&quot;. Drobbins' original idea was that we should allow compound
90allow compound
91keywords such as gnu/x86, gnu/ppc, and macos/ppc (which would be explicit 331keywords such as gnu/x86, gnu/ppc, and macos/ppc (which would be explicit
92versions of the more familiar x86, ppc, and macos keywords). Method noted 332versions of the more familiar x86, ppc, and macos keywords). Method noted
93that userland/arch failed to capture the full range of possibilities (what 333that userland/arch failed to capture the full range of possibilities (what
94about a GNU userland on a BSD kernel+libc?), and 334about a GNU userland on a BSD kernel+libc?), and the issue has languished due
95the issue has languished due to a lack of reasonable solutions.</p> 335to a lack of reasonable solutions. The original version of this GLEP
336generated quite useful comments which hopefully have been addressed here to
337make the GLEP much more reasonable.</p>
96</div> 338</div>
97<div class="section" id="abstract"> 339<div class="section">
98<h1><a class="toc-backref" href="#id16" name="abstract">Abstract</a></h1> 340<h1><a class="toc-backref" href="#id16" id="abstract" name="abstract">Abstract</a></h1>
99<p>As Gentoo branches out to support non-Linux and non-GNU systems (such 341<p>As Gentoo branches out to support non-Linux and non-GNU systems (such as Hurd,
100as Hurd or the *BSDs), the potential for an &quot;explosion&quot; of possible 342the *BSDs, or even the soon-to-be-open-sourced Solaris), the potential for an
101keywords becomes rather large, since each 343&quot;explosion&quot; of possible keywords becomes rather large, since each new
102new userland/kernel/arch/whatever 344userland/kernel/arch/whatever combination will require a new keyword. This
103combination would require a new keyword. 345GLEP proposes a simple extension to the current KEYWORDS variable that
104This GLEP proposes replacing the current 346encompasses the four parameters ARCH, USERLAND, KERNEL, and LIBC, but uses
105KEYWORDS variable with four variables, ARCH, USERLAND, KERNEL, and LIBC,
106along with sensible defaults to keep the new system manageable.</p> 347sensible defaults to keep the new system manageable.</p>
107</div> 348</div>
108<div class="section" id="motivation"> 349<div class="section">
109<h1><a class="toc-backref" href="#id17" name="motivation">Motivation</a></h1> 350<h1><a class="toc-backref" href="#id17" id="motivation" name="motivation">Motivation</a></h1>
110<p>Since the beginning, Gentoo Linux has been conceived as a &quot;metadistribution&quot; 351<p>Since the beginning, Gentoo Linux has been conceived as a &quot;metadistribution&quot;
111that combines remarkable flexibility with sensible defaults and exceptional 352that combines remarkable flexibility with sensible defaults and exceptional
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 353maintainablilty. 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
113flexibility to include systems other than GNU/Linux. For example, the author 354flexibility to include systems other than GNU/Linux. For example, the author
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 355of 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
115<a class="reference" href="http://www.openbsd.com">OpenBSD</a> <a class="footnote-reference" href="#id5" id="id6" name="id6">[2]</a> as the underlying kernel, userland, and libc. <a class="reference" href="http://www.openbsd.com">OpenBSD</a> <a class="footnote-reference" href="#id5" id="id7" name="id7">[2]</a> supports 356<a class="reference" href="http://www.openbsd.com">OpenBSD</a> <a class="footnote-reference" href="#id5" id="id6" name="id6">[2]</a> as the underlying kernel, userland, and libc. <a class="reference" href="http://www.openbsd.com">OpenBSD</a> <a class="footnote-reference" href="#id5" id="id7" name="id7">[2]</a> supports a
116a variety of different architectures, so, in principle, we would need a new 357variety of different architectures, so, in principle, we would need a new
117<em>openbsd-arch</em> keyword for each supported architecture. In fact, the situation 358<em>openbsd-arch</em> keyword for each supported architecture. In fact, the
118is even more complicated, because 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="id4" name="id4">[1]</a> project would eventually 359situation is even more complicated, because 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="id4" name="id4">[1]</a> project would
119like 360eventually like to support the option of &quot;mixing-and-matching&quot;
120to support the option of &quot;mixing-and-matching&quot; GNU/*BSD/whatever userlands 361GNU/*BSD/whatever userlands and libcs irrespective of the underlying kernel.
121and libcs irrespective of the underlying kernel. (<a class="reference" href="http://www.debian.org">Debian</a> <a class="footnote-reference" href="#id10" id="id11" name="id11">[4]</a>, for example 362(<a class="reference" href="http://www.debian.org">Debian</a> <a class="footnote-reference" href="#id10" id="id11" name="id11">[4]</a>, for example has a similar BSD <a class="reference" href="http://www.debian.org/ports/netbsd/">project</a> <a class="footnote-reference" href="#id12" id="id13" name="id13">[5]</a>, except that they have
122has a similar BSD <a class="reference" href="http://www.debian.org/ports/netbsd/">project</a> <a class="footnote-reference" href="#id12" id="id13" name="id13">[5]</a>, except that they have replaced the
123BSD userland with a GNU userland.) The net result is that we would need 363replaced the BSD userland with a GNU userland.) The net result is that we
124keywords that specified all possible permutations of arch, userland, kernel 364need keywords that can specify all possible permutations of arch,
125and libc. Not fun.</p> 365userland, kernel and libc. A systematic nomenclature is needed.
366Fortunately, the author is a Chemist. <em>Grin</em></p>
126</div> 367</div>
127<div class="section" id="specification"> 368<div class="section">
128<h1><a class="toc-backref" href="#id18" name="specification">Specification</a></h1> 369<h1><a class="toc-backref" href="#id18" id="specification" name="specification">Specification</a></h1>
129<div class="section" id="new-variables"> 370<div class="section">
130<h2><a class="toc-backref" href="#id19" name="new-variables">New Variables</a></h2> 371<h2><a class="toc-backref" href="#id19" id="keyword-fragments" name="keyword-fragments">Keyword Fragments</a></h2>
131<p>I suggest that we replace the single KEYWORDS variable in ebuilds 372<p>Each keyword needs to specify, either explicitly or
132with four separate variables: ARCH, USERLAND, LIBC, and KERNEL.</p> 373implicitly, the following parameters: ARCH, USERLAND, LIBC, and KERNEL.</p>
133<blockquote> 374<blockquote>
134<dl> 375<dl class="docutils">
135<dt>ARCH: </dt> 376<dt>ARCH:</dt>
136<dd>x86, amd64, cobalt, mips64, arm, hppa, ia64, ppc64, sparc</dd> 377<dd>x86, amd64, cobalt, mips64, arm, hppa, ia64, ppc64, sparc</dd>
378<dt>KERNEL:</dt>
379<dd>linux, selinux, openbsd, freebsd, netbsd, macosx</dd>
137<dt>USERLAND: </dt> 380<dt>USERLAND:</dt>
138<dd>gnu, bsd</dd> 381<dd>gnu, bsd</dd>
139<dt>LIBC: </dt> 382<dt>LIBC:</dt>
140<dd>glibc, openbsd, freebsd, netbsd, macosx</dd> 383<dd>glibc, openbsd, freebsd, netbsd, macosx</dd>
141<dt>KERNEL: </dt>
142<dd>linux, selinux, openbsd, freebsd, netbsd, macosx</dd>
143</dl> 384</dl>
144</blockquote> 385</blockquote>
145<p>(The above examples are not meant to be complete. Hurd, for example 386<p>(The above examples are not meant to be complete. Hurd, for example
146is not included because I know very little about Hurd.) 387is not included because I know very little about Hurd.)</p>
147For each variable the standard &quot;-,-*,~&quot; prefixes would be allowed. 388<p>A fully-specified keyword would look like
148Similarly, <cite>/etc/make.conf</cite> would have ACCEPT_ARCH, ACCEPT_USERLAND, 389&quot;ARCH-KERNEL-USERLAND-LIBC&quot;, so, for example,
149ACCEPT_LIBC, and ACCEPT_KERNEL variables.</p> 390&quot;ppc-fbsd-gnu-glibc&quot; would indicate a Gentoo system corresponding to
391a ppc architecture running the FreeBSD kernel with a GNU userland and glibc
392as the system C library.</p>
150</div> 393</div>
151<div class="section" id="reasonable-defaults"> 394<div class="section">
152<h2><a class="toc-backref" href="#id20" name="reasonable-defaults">Reasonable Defaults</a></h2> 395<h2><a class="toc-backref" href="#id20" id="reasonable-defaults" name="reasonable-defaults">Reasonable Defaults</a></h2>
153<p>To keep this system manageable, we need sensible defaults. An ebuild 396<p>To keep this system manageable (and both to reduce typing and maintain
154that has missing USERLAND, KERNEL, or LIBC variables is provided 397backwards compatibility), we need sensible defaults. For backwards
155with implicit USERLAND=&quot;gnu&quot;, KERNEL=&quot;linux&quot;, and/or LIBC=&quot;glibc&quot; 398compatibility, the Gentoo default is a Linux kernel with a GNU userland
156variables. However, once a variable is explicitly added (such as 399and glibc C library. Thus, the current crop of ARCH-based keywords
157KERNEL=&quot;openbsd&quot;), the default is no longer assumed. That is, 400(x86, ppc, etcetera) require no change whatsoever. For the *BSD-based
158one would need KERNEL=&quot;openbsd linux&quot; if the ebuild is stable on 401systems the default USERLAND and LIBC would be those normally associated
159both openbsd and linux kernels.</p> 402with the corresponding KERNEL, so &quot;x86-obsd&quot; describes an x86 system
160<p>The ARCH variable, on the other hand, does <em>not</em> have a default, per se. 403with an OpenBSD kernel, a BSD userland, and the OpenBSD C library. If
161Instead, if no ARCH variable exists then portage would automatically 404either USERLAND or LIBC is specified, and thus not the default, then the
162add the ebuild's KEYWORD entries to ARCH. Thus, all current ebuilds 405entire four-parameter string must be used.</p>
163would still work without changes, allowing for a gradual transition
164to the new system as the new variables are needed.</p>
165</div> 406</div>
166<div class="section" id="profiles"> 407<div class="section">
408<h2><a class="toc-backref" href="#id21" id="ebuild-keyword-database" name="ebuild-keyword-database">Ebuild Keyword Database?</a></h2>
409<p>One issue that has been raised is that adding a large number of keywords
410to ebuilds is likely to become cumbersome over the long run. (One could
411imagine that for a simple <cite>econf &amp;&amp; emake &amp;&amp; einstall</cite> ebuild that the
412list of keywords could grow to be the lengthiest part of the ebuild.)
413Instead, perhaps it would make more sense to move each ebuild's keywords
414out of the ebuild proper into a separate, perhaps online, database.
415Nothing in this GLEP would be incompatible with such an approach, so
416any further discussion will be deferred to a possible future GLEP on
417that topic.</p>
418</div>
419<div class="section">
167<h2><a class="toc-backref" href="#id21" name="profiles">Profiles</a></h2> 420<h2><a class="toc-backref" href="#id22" id="profiles" name="profiles">Profiles</a></h2>
168<p>Along with an explosion of keywords comes a concomitant explosion 421<p>Along with an explosion of keywords comes a concomitant explosion of potential
169of potential profiles. The good news is that profiles show up only 422profiles. Just as in the current system, the profile name would be
170in a single directory, so an explosion there is easier to contain. 423&quot;FLAVOR-KEYWORD-VERSION&quot; (such as &quot;default-s390-2004.1&quot;). One drawback
171I suggest an arch-kernel-userland-libc-version naming scheme, with
172the kernel-userland-libc terms defaulting to linux-gnu-glibc if
173absent. (Yes, Chemists do tend to be fond of systematic naming
174systems.)</p>
175<p>One drawback to having a large number of profiles is that maintainance 424to having a large number of profiles is that maintainance becomes a
176becomes a significant problem. In fact, one could reasonably argue 425significant problem. In fact, one could reasonably argue that the current
177that the current number of profiles is already too many to be 426number of profiles is already too many to be easily maintained. One proposal
178easily maintained. One proposal that has been raised to simplify 427that has been raised to simplify matters is the idea of stackable, or
179matters is the idea of stackable, or cascading, profiles, so that 428cascading, profiles, so that only differences between profiles would have to
180only differences between profiles would have to be maintained.</p> 429be maintained.</p>
181</div> 430</div>
182</div> 431</div>
183<div class="section" id="rationale"> 432<div class="section">
184<h1><a class="toc-backref" href="#id22" name="rationale">Rationale</a></h1> 433<h1><a class="toc-backref" href="#id23" id="rationale" name="rationale">Rationale</a></h1>
185<p>The proposed new &quot;keywording&quot; system is far from elegant, which is 434<p>The proposed new &quot;keywording&quot; system is far from elegant, which is
186a substantial drawback. On the other hand, it is simple, it requires 435a substantial drawback. On the other hand, it is simple, it requires
187relatively minor changes (albeit ones that eventually would impact 436relatively minor changes, and the changes can be implemented
188every ebuild in the portage tree), and the changes can be implemented
189gradually over time.</p> 437gradually over time.</p>
190</div> 438</div>
191<div class="section" id="implementation"> 439<div class="section">
192<h1><a class="toc-backref" href="#id23" name="implementation">Implementation</a></h1> 440<h1><a class="toc-backref" href="#id24" id="implementation" name="implementation">Implementation</a></h1>
193<p>Implementation of this GLEP would divide into adding 441<p>Since the new keyword system is backwards-compatible with the current
194Portage functionality to support the new system and 442system, &quot;implementation&quot; just means adding new keywords to ebuilds
195modifying ebuilds to 443as new systems are supported.</p>
196comply with the new system.
197The Portage support involves hacking Portage
198to assemble and check a four-state
199arch-userland-kernel-libc variable instead of the simpler
200KEYWORD variable. One might quibble over algorithmic issues, but
201the actual concept is pretty straightforward. Rewriting ebuilds,
202on the other hand, is a massive undertaking. Fortunately, it is
203also a process that can be done over whatever length of time is
204required, since &quot;legacy&quot; ebuilds should work with no changes.</p>
205</div> 444</div>
206<div class="section" id="backwards-compatibility"> 445<div class="section">
207<h1><a class="toc-backref" href="#id24" name="backwards-compatibility">Backwards Compatibility</a></h1> 446<h1><a class="toc-backref" href="#id25" id="backwards-compatibility" name="backwards-compatibility">Backwards Compatibility</a></h1>
208<p>Backwards compatibility has already been addressed in some detail, 447<p>Backwards compatibility has already been addressed in some detail,
209with the stated goal being a system that would leave all current 448with the stated goal being a system that would leave all current
210ebuilds in a still-functioning state after the portage modifications 449ebuilds working exactly as they are now.</p>
211have been made. However, we are already using an ARCH variable for
212some arcane purpose in Portage, and that issue would still need to
213be resolved.</p>
214</div> 450</div>
215<div class="section" id="id1"> 451<div class="section">
216<h1><a class="toc-backref" href="#id25" name="id1">References</a></h1> 452<h1><a class="toc-backref" href="#id26" id="id1" name="id1">References</a></h1>
217<table class="footnote" frame="void" id="id2" rules="none"> 453<table class="docutils footnote" frame="void" id="id2" rules="none">
218<colgroup><col class="label" /><col /></colgroup> 454<colgroup><col class="label" /><col /></colgroup>
219<tbody valign="top"> 455<tbody valign="top">
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> 456<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>
221</tbody> 457</tbody>
222</table> 458</table>
223<table class="footnote" frame="void" id="id5" rules="none"> 459<table class="docutils footnote" frame="void" id="id5" rules="none">
224<colgroup><col class="label" /><col /></colgroup> 460<colgroup><col class="label" /><col /></colgroup>
225<tbody valign="top"> 461<tbody valign="top">
226<tr><td class="label"><a name="id5">[2]</a></td><td><em>(<a class="fn-backref" href="#id6">1</a>, <a class="fn-backref" href="#id7">2</a>)</em> <a class="reference" href="http://www.openbsd.com">http://www.openbsd.com</a></td></tr> 462<tr><td class="label"><a name="id5">[2]</a></td><td><em>(<a class="fn-backref" href="#id6">1</a>, <a class="fn-backref" href="#id7">2</a>)</em> <a class="reference" href="http://www.openbsd.com">http://www.openbsd.com</a></td></tr>
227</tbody> 463</tbody>
228</table> 464</table>
229<table class="footnote" frame="void" id="id8" rules="none"> 465<table class="docutils footnote" frame="void" id="id8" rules="none">
230<colgroup><col class="label" /><col /></colgroup> 466<colgroup><col class="label" /><col /></colgroup>
231<tbody valign="top"> 467<tbody valign="top">
232<tr><td class="label"><a class="fn-backref" href="#id9" name="id8">[3]</a></td><td><a class="reference" href="http://www.gentoo.org/proj/en/gentoo-alt/bsd/index.xml">http://www.gentoo.org/proj/en/gentoo-alt/bsd/index.xml</a></td></tr> 468<tr><td class="label"><a class="fn-backref" href="#id9" name="id8">[3]</a></td><td><a class="reference" href="http://www.gentoo.org/proj/en/gentoo-alt/bsd/index.xml">http://www.gentoo.org/proj/en/gentoo-alt/bsd/index.xml</a></td></tr>
233</tbody> 469</tbody>
234</table> 470</table>
235<table class="footnote" frame="void" id="id10" rules="none"> 471<table class="docutils footnote" frame="void" id="id10" rules="none">
236<colgroup><col class="label" /><col /></colgroup> 472<colgroup><col class="label" /><col /></colgroup>
237<tbody valign="top"> 473<tbody valign="top">
238<tr><td class="label"><a class="fn-backref" href="#id11" name="id10">[4]</a></td><td><a class="reference" href="http://www.debian.org">http://www.debian.org</a></td></tr> 474<tr><td class="label"><a class="fn-backref" href="#id11" name="id10">[4]</a></td><td><a class="reference" href="http://www.debian.org">http://www.debian.org</a></td></tr>
239</tbody> 475</tbody>
240</table> 476</table>
241<table class="footnote" frame="void" id="id12" rules="none"> 477<table class="docutils footnote" frame="void" id="id12" rules="none">
242<colgroup><col class="label" /><col /></colgroup> 478<colgroup><col class="label" /><col /></colgroup>
243<tbody valign="top"> 479<tbody valign="top">
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> 480<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>
245</tbody> 481</tbody>
246</table> 482</table>
247</div> 483</div>
248<div class="section" id="copyright"> 484<div class="section">
249<h1><a class="toc-backref" href="#id26" name="copyright">Copyright</a></h1> 485<h1><a class="toc-backref" href="#id27" id="copyright" name="copyright">Copyright</a></h1>
250<p>This document is licensed under the Creative Commons - Attribution / Share 486<p>This document has been placed in the public domain.</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>
252</div> 487</div>
253</div>
254 488
255<hr class="footer"/> 489</div>
256<div class="footer"> 490<div class="footer">
491<hr class="footer" />
257<a class="reference" href="glep-0022.txt">View document source</a>. 492<a class="reference" href="glep-0022.txt">View document source</a>.
258Generated on: 2004-05-02 20:52 UTC. 493Generated on: 2006-10-10 20:23 UTC.
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. 494Generated 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.
495
260</div> 496</div>
261</body> 497</body>
262</html> 498</html>
263 499

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

  ViewVC Help
Powered by ViewVC 1.1.20