/[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.7 - (hide annotations) (download) (as text)
Sun Jan 9 16:13:15 2005 UTC (9 years, 8 months ago) by g2boojum
Branch: MAIN
Changes since 1.6: +6 -6 lines
File MIME type: text/html
Belatedly fixing bug 56584.

1 g2boojum 1.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 g2boojum 1.7 <meta name="generator" content="Docutils 0.3.5: http://docutils.sourceforge.net/" />
12 g2boojum 1.1 <title>GLEP 22 -- New "keyword" system to incorporate various userlands/kernels/archs</title>
13     <link rel="stylesheet" href="tools/glep.css" type="text/css" />
14     </head>
15     <body bgcolor="white">
16     <table class="navigation" cellpadding="0" cellspacing="0"
17     width="100%" border="0">
18     <tr><td class="navicon" width="150" height="35">
19     <a href="http://www.gentoo.org/" title="Gentoo Linux Home Page">
20     <img src="http://www.gentoo.org/images/gentoo-new.gif" alt="[Gentoo]"
21     border="0" width="150" height="35" /></a></td>
22     <td class="textlinks" align="left">
23     [<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>]
25 g2boojum 1.4 [<b><a href="./glep-0022.txt">GLEP Source</a></b>]
26 g2boojum 1.1 </td></tr></table>
27     <div class="document">
28     <table class="rfc2822 field-list" frame="void" rules="none">
29     <col class="field-name" />
30     <col class="field-body" />
31     <tbody valign="top">
32     <tr class="field"><th class="field-name">GLEP:</th><td class="field-body">22</td>
33     </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>
35     </tr>
36 g2boojum 1.7 <tr class="field"><th class="field-name">Version:</th><td class="field-body">1.8</td>
37 g2boojum 1.1 </tr>
38 g2boojum 1.7 <tr class="field"><th class="field-name">Last-Modified:</th><td class="field-body"><a class="reference" href="http://www.gentoo.org/cgi-bin/viewcvs/xml/htdocs/proj/en/glep/glep-0022.txt?cvsroot=gentoo">2005/01/09 16:12:40</a></td>
39 g2boojum 1.1 </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>
41     </tr>
42 g2boojum 1.6 <tr class="field"><th class="field-name">Status:</th><td class="field-body">Final</td>
43 g2boojum 1.1 </tr>
44     <tr class="field"><th class="field-name">Type:</th><td class="field-body">Standards Track</td>
45     </tr>
46 g2boojum 1.4 <tr class="field"><th class="field-name">Content-Type:</th><td class="field-body"><a class="reference" href="glep-0012.html">text/x-rst</a></td>
47 g2boojum 1.1 </tr>
48     <tr class="field"><th class="field-name">Created:</th><td class="field-body">6-Mar-2004</td>
49     </tr>
50 g2boojum 1.4 <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 g2boojum 1.1 </tr>
52     </tbody>
53     </table>
54     <hr />
55     <div class="contents topic" id="contents">
56 g2boojum 1.4 <p class="topic-title first"><a name="contents">Contents</a></p>
57 g2boojum 1.1 <ul class="simple">
58 g2boojum 1.2 <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>
60     <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>
62     <li><a class="reference" href="#specification" id="id18" name="id18">Specification</a><ul>
63 g2boojum 1.3 <li><a class="reference" href="#keyword-fragments" id="id19" name="id19">Keyword Fragments</a></li>
64 g2boojum 1.2 <li><a class="reference" href="#reasonable-defaults" id="id20" name="id20">Reasonable Defaults</a></li>
65 g2boojum 1.3 <li><a class="reference" href="#ebuild-keyword-database" id="id21" name="id21">Ebuild Keyword Database?</a></li>
66     <li><a class="reference" href="#profiles" id="id22" name="id22">Profiles</a></li>
67 g2boojum 1.1 </ul>
68     </li>
69 g2boojum 1.3 <li><a class="reference" href="#rationale" id="id23" name="id23">Rationale</a></li>
70     <li><a class="reference" href="#implementation" id="id24" name="id24">Implementation</a></li>
71     <li><a class="reference" href="#backwards-compatibility" id="id25" name="id25">Backwards Compatibility</a></li>
72     <li><a class="reference" href="#id1" id="id26" name="id26">References</a></li>
73     <li><a class="reference" href="#copyright" id="id27" name="id27">Copyright</a></li>
74 g2boojum 1.1 </ul>
75     </div>
76 g2boojum 1.2 <div class="section" id="status">
77     <h1><a class="toc-backref" href="#id14" name="status">Status</a></h1>
78 g2boojum 1.3 <p>After withdrawing this GLEP temporarily, a rewritten version has
79     now been resubmitted. This version no longer tries to prevent a
80     keyword explosion, but merely tries to make it manageable.</p>
81 g2boojum 1.4 <p>This version was approved on 14-Jun-2004, with the amendment that cascading
82     profiles should be used.</p>
83 g2boojum 1.2 </div>
84 g2boojum 1.1 <div class="section" id="credits">
85 g2boojum 1.2 <h1><a class="toc-backref" href="#id15" name="credits">Credits</a></h1>
86 g2boojum 1.3 <p>This GLEP originated from the concerns that Daniel Robbins had with the
87     <em>x86obsd</em> keyword, and his desire to make the KEYWORDS variable more
88     &quot;feature-rich&quot;. Drobbins' original idea was that we should allow compound
89 g2boojum 1.1 keywords such as gnu/x86, gnu/ppc, and macos/ppc (which would be explicit
90     versions of the more familiar x86, ppc, and macos keywords). Method noted
91 g2boojum 1.3 that userland/arch failed to capture the full range of possibilities (what
92     about a GNU userland on a BSD kernel+libc?), and the issue has languished due
93     to a lack of reasonable solutions. The original version of this GLEP
94     generated quite useful comments which hopefully have been addressed here to
95     make the GLEP much more reasonable.</p>
96 g2boojum 1.1 </div>
97     <div class="section" id="abstract">
98 g2boojum 1.2 <h1><a class="toc-backref" href="#id16" name="abstract">Abstract</a></h1>
99 g2boojum 1.3 <p>As Gentoo branches out to support non-Linux and non-GNU systems (such as Hurd,
100     the *BSDs, or even the soon-to-be-open-sourced Solaris), the potential for an
101     &quot;explosion&quot; of possible keywords becomes rather large, since each new
102     userland/kernel/arch/whatever combination will require a new keyword. This
103     GLEP proposes a simple extension to the current KEYWORDS variable that
104     encompasses the four parameters ARCH, USERLAND, KERNEL, and LIBC, but uses
105     sensible defaults to keep the new system manageable.</p>
106 g2boojum 1.1 </div>
107     <div class="section" id="motivation">
108 g2boojum 1.2 <h1><a class="toc-backref" href="#id17" name="motivation">Motivation</a></h1>
109 g2boojum 1.1 <p>Since the beginning, Gentoo Linux has been conceived as a &quot;metadistribution&quot;
110     that combines remarkable flexibility with sensible defaults and exceptional
111     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
112     flexibility to include systems other than GNU/Linux. For example, the author
113 g2boojum 1.3 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
114     <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
115     variety of different architectures, so, in principle, we would need a new
116     <em>openbsd-arch</em> keyword for each supported architecture. In fact, the
117     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
118     eventually like to support the option of &quot;mixing-and-matching&quot;
119     GNU/*BSD/whatever userlands and libcs irrespective of the underlying kernel.
120     (<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
121     replaced the BSD userland with a GNU userland.) The net result is that we
122     need keywords that can specify all possible permutations of arch,
123     userland, kernel and libc. A systematic nomenclature is needed.
124     Fortunately, the author is a Chemist. <em>Grin</em></p>
125 g2boojum 1.1 </div>
126     <div class="section" id="specification">
127 g2boojum 1.2 <h1><a class="toc-backref" href="#id18" name="specification">Specification</a></h1>
128 g2boojum 1.3 <div class="section" id="keyword-fragments">
129     <h2><a class="toc-backref" href="#id19" name="keyword-fragments">Keyword Fragments</a></h2>
130     <p>Each keyword needs to specify, either explicitly or
131     implicitly, the following parameters: ARCH, USERLAND, LIBC, and KERNEL.</p>
132 g2boojum 1.1 <blockquote>
133     <dl>
134     <dt>ARCH: </dt>
135     <dd>x86, amd64, cobalt, mips64, arm, hppa, ia64, ppc64, sparc</dd>
136 g2boojum 1.7 <dt>KERNEL: </dt>
137     <dd>linux, selinux, openbsd, freebsd, netbsd, macosx</dd>
138 g2boojum 1.1 <dt>USERLAND: </dt>
139     <dd>gnu, bsd</dd>
140     <dt>LIBC: </dt>
141     <dd>glibc, openbsd, freebsd, netbsd, macosx</dd>
142     </dl>
143     </blockquote>
144     <p>(The above examples are not meant to be complete. Hurd, for example
145 g2boojum 1.3 is not included because I know very little about Hurd.)</p>
146     <p>A fully-specified keyword would look like
147     &quot;ARCH-KERNEL-USERLAND-LIBC&quot;, so, for example,
148     &quot;ppc-fbsd-gnu-glibc&quot; would indicate a Gentoo system corresponding to
149     a ppc architecture running the FreeBSD kernel with a GNU userland and glibc
150     as the system C library.</p>
151 g2boojum 1.1 </div>
152     <div class="section" id="reasonable-defaults">
153 g2boojum 1.2 <h2><a class="toc-backref" href="#id20" name="reasonable-defaults">Reasonable Defaults</a></h2>
154 g2boojum 1.3 <p>To keep this system manageable (and both to reduce typing and maintain
155     backwards compatibility), we need sensible defaults. For backwards
156     compatibility, the Gentoo default is a Linux kernel with a GNU userland
157     and glibc C library. Thus, the current crop of ARCH-based keywords
158     (x86, ppc, etcetera) require no change whatsoever. For the *BSD-based
159     systems the default USERLAND and LIBC would be those normally associated
160     with the corresponding KERNEL, so &quot;x86-obsd&quot; describes an x86 system
161     with an OpenBSD kernel, a BSD userland, and the OpenBSD C library. If
162     either USERLAND or LIBC is specified, and thus not the default, then the
163     entire four-parameter string must be used.</p>
164     </div>
165     <div class="section" id="ebuild-keyword-database">
166     <h2><a class="toc-backref" href="#id21" name="ebuild-keyword-database">Ebuild Keyword Database?</a></h2>
167     <p>One issue that has been raised is that adding a large number of keywords
168     to ebuilds is likely to become cumbersome over the long run. (One could
169     imagine that for a simple <cite>econf &amp;&amp; emake &amp;&amp; einstall</cite> ebuild that the
170     list of keywords could grow to be the lengthiest part of the ebuild.)
171     Instead, perhaps it would make more sense to move each ebuild's keywords
172     out of the ebuild proper into a separate, perhaps online, database.
173     Nothing in this GLEP would be incompatible with such an approach, so
174     any further discussion will be deferred to a possible future GLEP on
175     that topic.</p>
176 g2boojum 1.1 </div>
177     <div class="section" id="profiles">
178 g2boojum 1.3 <h2><a class="toc-backref" href="#id22" name="profiles">Profiles</a></h2>
179     <p>Along with an explosion of keywords comes a concomitant explosion of potential
180     profiles. Just as in the current system, the profile name would be
181     &quot;FLAVOR-KEYWORD-VERSION&quot; (such as &quot;default-s390-2004.1&quot;). One drawback
182     to having a large number of profiles is that maintainance becomes a
183     significant problem. In fact, one could reasonably argue that the current
184     number of profiles is already too many to be easily maintained. One proposal
185     that has been raised to simplify matters is the idea of stackable, or
186     cascading, profiles, so that only differences between profiles would have to
187     be maintained.</p>
188 g2boojum 1.1 </div>
189     </div>
190     <div class="section" id="rationale">
191 g2boojum 1.3 <h1><a class="toc-backref" href="#id23" name="rationale">Rationale</a></h1>
192 g2boojum 1.1 <p>The proposed new &quot;keywording&quot; system is far from elegant, which is
193     a substantial drawback. On the other hand, it is simple, it requires
194 g2boojum 1.3 relatively minor changes, and the changes can be implemented
195 g2boojum 1.1 gradually over time.</p>
196     </div>
197     <div class="section" id="implementation">
198 g2boojum 1.3 <h1><a class="toc-backref" href="#id24" name="implementation">Implementation</a></h1>
199     <p>Since the new keyword system is backwards-compatible with the current
200     system, &quot;implementation&quot; just means adding new keywords to ebuilds
201     as new systems are supported.</p>
202 g2boojum 1.1 </div>
203     <div class="section" id="backwards-compatibility">
204 g2boojum 1.3 <h1><a class="toc-backref" href="#id25" name="backwards-compatibility">Backwards Compatibility</a></h1>
205 g2boojum 1.1 <p>Backwards compatibility has already been addressed in some detail,
206     with the stated goal being a system that would leave all current
207 g2boojum 1.3 ebuilds working exactly as they are now.</p>
208 g2boojum 1.1 </div>
209     <div class="section" id="id1">
210 g2boojum 1.3 <h1><a class="toc-backref" href="#id26" name="id1">References</a></h1>
211 g2boojum 1.1 <table class="footnote" frame="void" id="id2" rules="none">
212     <colgroup><col class="label" /><col /></colgroup>
213     <tbody valign="top">
214     <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>
215     </tbody>
216     </table>
217     <table class="footnote" frame="void" id="id5" rules="none">
218     <colgroup><col class="label" /><col /></colgroup>
219     <tbody valign="top">
220     <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>
221     </tbody>
222     </table>
223     <table class="footnote" frame="void" id="id8" rules="none">
224     <colgroup><col class="label" /><col /></colgroup>
225     <tbody valign="top">
226     <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>
227     </tbody>
228     </table>
229     <table class="footnote" frame="void" id="id10" rules="none">
230     <colgroup><col class="label" /><col /></colgroup>
231     <tbody valign="top">
232     <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>
233     </tbody>
234     </table>
235     <table class="footnote" frame="void" id="id12" rules="none">
236     <colgroup><col class="label" /><col /></colgroup>
237     <tbody valign="top">
238     <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>
239     </tbody>
240     </table>
241     </div>
242     <div class="section" id="copyright">
243 g2boojum 1.3 <h1><a class="toc-backref" href="#id27" name="copyright">Copyright</a></h1>
244     <p>This document has been placed in the public domain.</p>
245 g2boojum 1.1 </div>
246     </div>
247    
248 g2boojum 1.4 <hr class="footer" />
249 g2boojum 1.1 <div class="footer">
250     <a class="reference" href="glep-0022.txt">View document source</a>.
251 g2boojum 1.7 Generated on: 2005-01-09 16:41 UTC.
252 g2boojum 1.1 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.
253     </div>
254     </body>
255     </html>

  ViewVC Help
Powered by ViewVC 1.1.20