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

Parent Directory Parent Directory | Revision Log Revision Log

Revision 1.3 - (show annotations) (download) (as text)
Sun Jun 6 00:42:07 2004 UTC (14 years, 9 months ago) by g2boojum
Branch: MAIN
Changes since 1.2: +96 -105 lines
File MIME type: text/html

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

  ViewVC Help
Powered by ViewVC 1.1.20