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

Parent Directory Parent Directory | Revision Log Revision Log

Revision 1.10 - (hide annotations) (download) (as text)
Sun Oct 14 17:00:15 2007 UTC (11 years, 5 months ago) by antarus
Branch: MAIN
Changes since 1.9: +4 -251 lines
File MIME type: text/html
the canary on 53 went well, changing the rest

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

  ViewVC Help
Powered by ViewVC 1.1.20