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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.9 - (show annotations) (download) (as text)
Thu Jan 25 03:25:53 2007 UTC (7 years, 11 months ago) by antarus
Branch: MAIN
Changes since 1.8: +3 -3 lines
File MIME type: text/html
Fix headers in all current gleps

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">
3 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
4 <!--
5 This HTML is auto-generated. DO NOT EDIT THIS FILE! If you are writing a new
6 PEP, see http://www.python.org/peps/pep-0001.html for instructions and links
7 to templates. DO NOT USE THIS HTML FILE AS YOUR TEMPLATE!
8 -->
9 <head>
10 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
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>
13 <style type="text/css">
14
15 /*
16 :Author: David Goodger
17 :Contact: goodger@users.sourceforge.net
18 :date: $Date: 2006/10/10 20:25:14 $
19 :version: $Revision: 1.8 $
20 :copyright: This stylesheet has been placed in the public domain.
21
22 Default 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
66 a.toc-backref {
67 text-decoration: none ;
68 color: black }
69
70 body {
71 margin: 0px ;
72 margin-bottom: 1em ;
73 padding: 0px }
74
75 dd {
76 margin-bottom: 0.5em }
77
78 div.section {
79 margin-left: 1em ;
80 margin-right: 1em ;
81 margin-bottom: 1.5em }
82
83 div.section div.section {
84 margin-left: 0em ;
85 margin-right: 0em ;
86 margin-top: 1.5em }
87
88 div.abstract {
89 margin: 2em 5em }
90
91 div.abstract p.topic-title {
92 font-weight: bold ;
93 text-align: center }
94
95 div.attention, div.caution, div.danger, div.error, div.hint,
96 div.important, div.note, div.tip, div.warning {
97 margin: 2em ;
98 border: medium outset ;
99 padding: 1em }
100
101 div.attention p.admonition-title, div.caution p.admonition-title,
102 div.danger p.admonition-title, div.error p.admonition-title,
103 div.warning p.admonition-title {
104 color: red ;
105 font-weight: bold ;
106 font-family: sans-serif }
107
108 div.hint p.admonition-title, div.important p.admonition-title,
109 div.note p.admonition-title, div.tip p.admonition-title {
110 font-weight: bold ;
111 font-family: sans-serif }
112
113 div.figure {
114 margin-left: 2em }
115
116 div.footer, div.header {
117 font-size: smaller }
118
119 div.footer {
120 margin-left: 1em ;
121 margin-right: 1em }
122
123 div.system-messages {
124 margin: 5em }
125
126 div.system-messages h1 {
127 color: red }
128
129 div.system-message {
130 border: medium outset ;
131 padding: 1em }
132
133 div.system-message p.system-message-title {
134 color: red ;
135 font-weight: bold }
136
137 div.topic {
138 margin: 2em }
139
140 h1 {
141 font-family: sans-serif ;
142 font-size: large }
143
144 h2 {
145 font-family: sans-serif ;
146 font-size: medium }
147
148 h3 {
149 font-family: sans-serif ;
150 font-size: small }
151
152 h4 {
153 font-family: sans-serif ;
154 font-style: italic ;
155 font-size: small }
156
157 h5 {
158 font-family: sans-serif;
159 font-size: x-small }
160
161 h6 {
162 font-family: sans-serif;
163 font-style: italic ;
164 font-size: x-small }
165
166 .section hr {
167 width: 75% }
168
169 ol.simple, ul.simple {
170 margin-bottom: 1em }
171
172 ol.arabic {
173 list-style: decimal }
174
175 ol.loweralpha {
176 list-style: lower-alpha }
177
178 ol.upperalpha {
179 list-style: upper-alpha }
180
181 ol.lowerroman {
182 list-style: lower-roman }
183
184 ol.upperroman {
185 list-style: upper-roman }
186
187 p.caption {
188 font-style: italic }
189
190 p.credits {
191 font-style: italic ;
192 font-size: smaller }
193
194 p.label {
195 white-space: nowrap }
196
197 p.topic-title {
198 font-family: sans-serif ;
199 font-weight: bold }
200
201 pre.line-block {
202 font-family: serif ;
203 font-size: 100% }
204
205 pre.literal-block, pre.doctest-block {
206 margin-left: 2em ;
207 margin-right: 2em ;
208 background-color: #eeeeee }
209
210 span.classifier {
211 font-family: sans-serif ;
212 font-style: oblique }
213
214 span.classifier-delimiter {
215 font-family: sans-serif ;
216 font-weight: bold }
217
218 span.interpreted {
219 font-family: sans-serif }
220
221 span.option-argument {
222 font-style: italic }
223
224 span.pre {
225 white-space: pre }
226
227 span.problematic {
228 color: red }
229
230 table {
231 margin-top: 0.5em ;
232 margin-bottom: 0.5em }
233
234 td, th {
235 padding-left: 0.5em ;
236 padding-right: 0.5em ;
237 vertical-align: top }
238
239 td.num {
240 text-align: right }
241
242 th.field-name {
243 font-weight: bold ;
244 text-align: left ;
245 white-space: nowrap }
246
247 h1 tt, h2 tt, h3 tt, h4 tt, h5 tt, h6 tt {
248 font-size: 100% }
249
250 tt {
251 background-color: #eeeeee }
252
253 ul.auto-toc {
254 list-style-type: none }
255
256 </style>
257 </head>
258 <body bgcolor="white">
259 <table class="navigation" cellpadding="0" cellspacing="0"
260 width="100%" border="0">
261 <tr><td class="navicon" width="150" height="35">
262 <a href="http://www.gentoo.org/" title="Gentoo Linux Home Page">
263 <img src="http://www.gentoo.org/images/gentoo-new.gif" alt="[Gentoo]"
264 border="0" width="150" height="35" /></a></td>
265 <td class="textlinks" align="left">
266 [<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>]
268 [<b><a href="http://www.gentoo.org/proj/en/glep/glep-0022.txt">GLEP Source</a></b>]
269 </td></tr></table>
270 <table class="rfc2822 docutils field-list" frame="void" rules="none">
271 <col class="field-name" />
272 <col class="field-body" />
273 <tbody valign="top">
274 <tr class="field"><th class="field-name">GLEP:</th><td class="field-body">22</td>
275 </tr>
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>
277 </tr>
278 <tr class="field"><th class="field-name">Version:</th><td class="field-body">1.8</td>
279 </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-0022.txt?cvsroot=gentoo">2005/01/09 16:12:40</a></td>
281 </tr>
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>
283 </tr>
284 <tr class="field"><th class="field-name">Status:</th><td class="field-body">Final</td>
285 </tr>
286 <tr class="field"><th class="field-name">Type:</th><td class="field-body">Standards Track</td>
287 </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>
289 </tr>
290 <tr class="field"><th class="field-name">Created:</th><td class="field-body">6-Mar-2004</td>
291 </tr>
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>
293 </tr>
294 </tbody>
295 </table>
296 <hr />
297 <div class="contents topic">
298 <p class="topic-title first"><a id="contents" name="contents">Contents</a></p>
299 <ul class="simple">
300 <li><a class="reference" href="#status" id="id14" name="id14">Status</a></li>
301 <li><a class="reference" href="#credits" id="id15" name="id15">Credits</a></li>
302 <li><a class="reference" href="#abstract" id="id16" name="id16">Abstract</a></li>
303 <li><a class="reference" href="#motivation" id="id17" name="id17">Motivation</a></li>
304 <li><a class="reference" href="#specification" id="id18" name="id18">Specification</a><ul>
305 <li><a class="reference" href="#keyword-fragments" id="id19" name="id19">Keyword Fragments</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>
308 <li><a class="reference" href="#profiles" id="id22" name="id22">Profiles</a></li>
309 </ul>
310 </li>
311 <li><a class="reference" href="#rationale" id="id23" name="id23">Rationale</a></li>
312 <li><a class="reference" href="#implementation" id="id24" name="id24">Implementation</a></li>
313 <li><a class="reference" href="#backwards-compatibility" id="id25" name="id25">Backwards Compatibility</a></li>
314 <li><a class="reference" href="#id1" id="id26" name="id26">References</a></li>
315 <li><a class="reference" href="#copyright" id="id27" name="id27">Copyright</a></li>
316 </ul>
317 </div>
318 <div class="section">
319 <h1><a class="toc-backref" href="#id14" id="status" name="status">Status</a></h1>
320 <p>After withdrawing this GLEP temporarily, a rewritten version has
321 now been resubmitted. This version no longer tries to prevent a
322 keyword explosion, but merely tries to make it manageable.</p>
323 <p>This version was approved on 14-Jun-2004, with the amendment that cascading
324 profiles should be used.</p>
325 </div>
326 <div class="section">
327 <h1><a class="toc-backref" href="#id15" id="credits" name="credits">Credits</a></h1>
328 <p>This GLEP originated from the concerns that Daniel Robbins had with the
329 <em>x86obsd</em> keyword, and his desire to make the KEYWORDS variable more
330 &quot;feature-rich&quot;. Drobbins' original idea was that we should allow compound
331 keywords such as gnu/x86, gnu/ppc, and macos/ppc (which would be explicit
332 versions of the more familiar x86, ppc, and macos keywords). Method noted
333 that userland/arch failed to capture the full range of possibilities (what
334 about a GNU userland on a BSD kernel+libc?), and the issue has languished due
335 to a lack of reasonable solutions. The original version of this GLEP
336 generated quite useful comments which hopefully have been addressed here to
337 make the GLEP much more reasonable.</p>
338 </div>
339 <div class="section">
340 <h1><a class="toc-backref" href="#id16" id="abstract" name="abstract">Abstract</a></h1>
341 <p>As Gentoo branches out to support non-Linux and non-GNU systems (such as Hurd,
342 the *BSDs, or even the soon-to-be-open-sourced Solaris), the potential for an
343 &quot;explosion&quot; of possible keywords becomes rather large, since each new
344 userland/kernel/arch/whatever combination will require a new keyword. This
345 GLEP proposes a simple extension to the current KEYWORDS variable that
346 encompasses the four parameters ARCH, USERLAND, KERNEL, and LIBC, but uses
347 sensible defaults to keep the new system manageable.</p>
348 </div>
349 <div class="section">
350 <h1><a class="toc-backref" href="#id17" id="motivation" name="motivation">Motivation</a></h1>
351 <p>Since the beginning, Gentoo Linux has been conceived as a &quot;metadistribution&quot;
352 that combines remarkable flexibility with sensible defaults and exceptional
353 maintainablilty. 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
354 flexibility to include systems other than GNU/Linux. For example, the author
355 of 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
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
357 variety of different architectures, so, in principle, we would need a new
358 <em>openbsd-arch</em> keyword for each supported architecture. In fact, the
359 situation 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
360 eventually like to support the option of &quot;mixing-and-matching&quot;
361 GNU/*BSD/whatever userlands and libcs irrespective of the underlying kernel.
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
363 replaced the BSD userland with a GNU userland.) The net result is that we
364 need keywords that can specify all possible permutations of arch,
365 userland, kernel and libc. A systematic nomenclature is needed.
366 Fortunately, the author is a Chemist. <em>Grin</em></p>
367 </div>
368 <div class="section">
369 <h1><a class="toc-backref" href="#id18" id="specification" name="specification">Specification</a></h1>
370 <div class="section">
371 <h2><a class="toc-backref" href="#id19" id="keyword-fragments" name="keyword-fragments">Keyword Fragments</a></h2>
372 <p>Each keyword needs to specify, either explicitly or
373 implicitly, the following parameters: ARCH, USERLAND, LIBC, and KERNEL.</p>
374 <blockquote>
375 <dl class="docutils">
376 <dt>ARCH:</dt>
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>
380 <dt>USERLAND:</dt>
381 <dd>gnu, bsd</dd>
382 <dt>LIBC:</dt>
383 <dd>glibc, openbsd, freebsd, netbsd, macosx</dd>
384 </dl>
385 </blockquote>
386 <p>(The above examples are not meant to be complete. Hurd, for example
387 is not included because I know very little about Hurd.)</p>
388 <p>A fully-specified keyword would look like
389 &quot;ARCH-KERNEL-USERLAND-LIBC&quot;, so, for example,
390 &quot;ppc-fbsd-gnu-glibc&quot; would indicate a Gentoo system corresponding to
391 a ppc architecture running the FreeBSD kernel with a GNU userland and glibc
392 as the system C library.</p>
393 </div>
394 <div class="section">
395 <h2><a class="toc-backref" href="#id20" id="reasonable-defaults" name="reasonable-defaults">Reasonable Defaults</a></h2>
396 <p>To keep this system manageable (and both to reduce typing and maintain
397 backwards compatibility), we need sensible defaults. For backwards
398 compatibility, the Gentoo default is a Linux kernel with a GNU userland
399 and glibc C library. Thus, the current crop of ARCH-based keywords
400 (x86, ppc, etcetera) require no change whatsoever. For the *BSD-based
401 systems the default USERLAND and LIBC would be those normally associated
402 with the corresponding KERNEL, so &quot;x86-obsd&quot; describes an x86 system
403 with an OpenBSD kernel, a BSD userland, and the OpenBSD C library. If
404 either USERLAND or LIBC is specified, and thus not the default, then the
405 entire four-parameter string must be used.</p>
406 </div>
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
410 to ebuilds is likely to become cumbersome over the long run. (One could
411 imagine that for a simple <cite>econf &amp;&amp; emake &amp;&amp; einstall</cite> ebuild that the
412 list of keywords could grow to be the lengthiest part of the ebuild.)
413 Instead, perhaps it would make more sense to move each ebuild's keywords
414 out of the ebuild proper into a separate, perhaps online, database.
415 Nothing in this GLEP would be incompatible with such an approach, so
416 any further discussion will be deferred to a possible future GLEP on
417 that topic.</p>
418 </div>
419 <div class="section">
420 <h2><a class="toc-backref" href="#id22" id="profiles" name="profiles">Profiles</a></h2>
421 <p>Along with an explosion of keywords comes a concomitant explosion of potential
422 profiles. Just as in the current system, the profile name would be
423 &quot;FLAVOR-KEYWORD-VERSION&quot; (such as &quot;default-s390-2004.1&quot;). One drawback
424 to having a large number of profiles is that maintainance becomes a
425 significant problem. In fact, one could reasonably argue that the current
426 number of profiles is already too many to be easily maintained. One proposal
427 that has been raised to simplify matters is the idea of stackable, or
428 cascading, profiles, so that only differences between profiles would have to
429 be maintained.</p>
430 </div>
431 </div>
432 <div class="section">
433 <h1><a class="toc-backref" href="#id23" id="rationale" name="rationale">Rationale</a></h1>
434 <p>The proposed new &quot;keywording&quot; system is far from elegant, which is
435 a substantial drawback. On the other hand, it is simple, it requires
436 relatively minor changes, and the changes can be implemented
437 gradually over time.</p>
438 </div>
439 <div class="section">
440 <h1><a class="toc-backref" href="#id24" id="implementation" name="implementation">Implementation</a></h1>
441 <p>Since the new keyword system is backwards-compatible with the current
442 system, &quot;implementation&quot; just means adding new keywords to ebuilds
443 as new systems are supported.</p>
444 </div>
445 <div class="section">
446 <h1><a class="toc-backref" href="#id25" id="backwards-compatibility" name="backwards-compatibility">Backwards Compatibility</a></h1>
447 <p>Backwards compatibility has already been addressed in some detail,
448 with the stated goal being a system that would leave all current
449 ebuilds working exactly as they are now.</p>
450 </div>
451 <div class="section">
452 <h1><a class="toc-backref" href="#id26" id="id1" name="id1">References</a></h1>
453 <table class="docutils footnote" frame="void" id="id2" rules="none">
454 <colgroup><col class="label" /><col /></colgroup>
455 <tbody valign="top">
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>
457 </tbody>
458 </table>
459 <table class="docutils footnote" frame="void" id="id5" rules="none">
460 <colgroup><col class="label" /><col /></colgroup>
461 <tbody valign="top">
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>
463 </tbody>
464 </table>
465 <table class="docutils footnote" frame="void" id="id8" rules="none">
466 <colgroup><col class="label" /><col /></colgroup>
467 <tbody valign="top">
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>
469 </tbody>
470 </table>
471 <table class="docutils footnote" frame="void" id="id10" rules="none">
472 <colgroup><col class="label" /><col /></colgroup>
473 <tbody valign="top">
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>
475 </tbody>
476 </table>
477 <table class="docutils footnote" frame="void" id="id12" rules="none">
478 <colgroup><col class="label" /><col /></colgroup>
479 <tbody valign="top">
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>
481 </tbody>
482 </table>
483 </div>
484 <div class="section">
485 <h1><a class="toc-backref" href="#id27" id="copyright" name="copyright">Copyright</a></h1>
486 <p>This document has been placed in the public domain.</p>
487 </div>
488
489 </div>
490 <div class="footer">
491 <hr class="footer" />
492 <a class="reference" href="glep-0022.txt">View document source</a>.
493 Generated on: 2006-10-10 20:23 UTC.
494 Generated 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
496 </div>
497 </body>
498 </html>

  ViewVC Help
Powered by ViewVC 1.1.20