/[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.1 Revision 1.3
31<tbody valign="top"> 31<tbody valign="top">
32<tr class="field"><th class="field-name">GLEP:</th><td class="field-body">22</td> 32<tr class="field"><th class="field-name">GLEP:</th><td class="field-body">22</td>
33</tr> 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> 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> 35</tr>
36<tr class="field"><th class="field-name">Version:</th><td class="field-body">1.1</td> 36<tr class="field"><th class="field-name">Version:</th><td class="field-body">1.4</td>
37</tr> 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/03/07 02:20:32</a></td> 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> 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> 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> 41</tr>
42<tr class="field"><th class="field-name">Status:</th><td class="field-body">Draft</td> 42<tr class="field"><th class="field-name">Status:</th><td class="field-body">Draft</td>
43</tr> 43</tr>
45</tr> 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> 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> 47</tr>
48<tr class="field"><th class="field-name">Created:</th><td class="field-body">6-Mar-2004</td> 48<tr class="field"><th class="field-name">Created:</th><td class="field-body">6-Mar-2004</td>
49</tr> 49</tr>
50<tr class="field"><th class="field-name">Post-History:</th><td class="field-body">6-Mar-2004</td> 50<tr class="field"><th class="field-name">Post-History:</th><td class="field-body">6-Mar-2004, 5-Jun-2004</td>
51</tr> 51</tr>
52</tbody> 52</tbody>
53</table> 53</table>
54<hr /> 54<hr />
55<div class="contents topic" id="contents"> 55<div class="contents topic" id="contents">
56<p class="topic-title"><a name="contents">Contents</a></p> 56<p class="topic-title"><a name="contents">Contents</a></p>
57<ul class="simple"> 57<ul class="simple">
58<li><a class="reference" href="#status" id="id14" name="id14">Status</a></li>
58<li><a class="reference" href="#credits" id="id14" name="id14">Credits</a></li> 59<li><a class="reference" href="#credits" id="id15" name="id15">Credits</a></li>
59<li><a class="reference" href="#abstract" id="id15" name="id15">Abstract</a></li> 60<li><a class="reference" href="#abstract" id="id16" name="id16">Abstract</a></li>
60<li><a class="reference" href="#motivation" id="id16" name="id16">Motivation</a></li> 61<li><a class="reference" href="#motivation" id="id17" name="id17">Motivation</a></li>
61<li><a class="reference" href="#specification" id="id17" name="id17">Specification</a><ul> 62<li><a class="reference" href="#specification" id="id18" name="id18">Specification</a><ul>
62<li><a class="reference" href="#new-variables" id="id18" name="id18">New Variables</a></li> 63<li><a class="reference" href="#keyword-fragments" id="id19" name="id19">Keyword Fragments</a></li>
63<li><a class="reference" href="#reasonable-defaults" id="id19" name="id19">Reasonable Defaults</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>
64<li><a class="reference" href="#profiles" id="id20" name="id20">Profiles</a></li> 66<li><a class="reference" href="#profiles" id="id22" name="id22">Profiles</a></li>
65</ul> 67</ul>
66</li> 68</li>
67<li><a class="reference" href="#rationale" id="id21" name="id21">Rationale</a></li> 69<li><a class="reference" href="#rationale" id="id23" name="id23">Rationale</a></li>
68<li><a class="reference" href="#implementation" id="id22" name="id22">Implementation</a></li> 70<li><a class="reference" href="#implementation" id="id24" name="id24">Implementation</a></li>
69<li><a class="reference" href="#backwards-compatibility" id="id23" name="id23">Backwards Compatibility</a></li> 71<li><a class="reference" href="#backwards-compatibility" id="id25" name="id25">Backwards Compatibility</a></li>
70<li><a class="reference" href="#id1" id="id24" name="id24">References</a></li> 72<li><a class="reference" href="#id1" id="id26" name="id26">References</a></li>
71<li><a class="reference" href="#copyright" id="id25" name="id25">Copyright</a></li> 73<li><a class="reference" href="#copyright" id="id27" name="id27">Copyright</a></li>
72</ul> 74</ul>
73</div> 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
79now been resubmitted. This version no longer tries to prevent a
80keyword explosion, but merely tries to make it manageable.</p>
81</div>
74<div class="section" id="credits"> 82<div class="section" id="credits">
75<h1><a class="toc-backref" href="#id14" name="credits">Credits</a></h1> 83<h1><a class="toc-backref" href="#id15" name="credits">Credits</a></h1>
76<p>This GLEP originated from the concerns that Daniel Robbins had with 84<p>This GLEP originated from the concerns that Daniel Robbins had with the
77the <em>x86obsd</em> keyword, and his desire to make the KEYWORDS variable more 85<em>x86obsd</em> keyword, and his desire to make the KEYWORDS variable more
78&quot;feature-rich&quot;. Drobbins' original idea was that we should 86&quot;feature-rich&quot;. Drobbins' original idea was that we should allow compound
79allow compound
80keywords such as gnu/x86, gnu/ppc, and macos/ppc (which would be explicit 87keywords such as gnu/x86, gnu/ppc, and macos/ppc (which would be explicit
81versions of the more familiar x86, ppc, and macos keywords). Method noted 88versions of the more familiar x86, ppc, and macos keywords). Method noted
82that userland/arch failed to capture the full range of possibilities (what 89that userland/arch failed to capture the full range of possibilities (what
83about a GNU userland on a BSD kernel+libc?), and 90about a GNU userland on a BSD kernel+libc?), and the issue has languished due
84the issue has languished due to a lack of reasonable solutions.</p> 91to a lack of reasonable solutions. The original version of this GLEP
92generated quite useful comments which hopefully have been addressed here to
93make the GLEP much more reasonable.</p>
85</div> 94</div>
86<div class="section" id="abstract"> 95<div class="section" id="abstract">
87<h1><a class="toc-backref" href="#id15" name="abstract">Abstract</a></h1> 96<h1><a class="toc-backref" href="#id16" name="abstract">Abstract</a></h1>
88<p>As Gentoo branches out to support non-Linux and non-GNU systems (such 97<p>As Gentoo branches out to support non-Linux and non-GNU systems (such as Hurd,
89as Hurd or the *BSDs), the potential for an &quot;explosion&quot; of possible 98the *BSDs, or even the soon-to-be-open-sourced Solaris), the potential for an
90keywords becomes rather large, since each 99&quot;explosion&quot; of possible keywords becomes rather large, since each new
91new userland/kernel/arch/whatever 100userland/kernel/arch/whatever combination will require a new keyword. This
92combination would require a new keyword. 101GLEP proposes a simple extension to the current KEYWORDS variable that
93This GLEP proposes replacing the current 102encompasses the four parameters ARCH, USERLAND, KERNEL, and LIBC, but uses
94KEYWORDS variable with four variables, ARCH, USERNAME, KERNEL, and LIBC,
95along with sensible defaults to keep the new system manageable.</p> 103sensible defaults to keep the new system manageable.</p>
96</div> 104</div>
97<div class="section" id="motivation"> 105<div class="section" id="motivation">
98<h1><a class="toc-backref" href="#id16" name="motivation">Motivation</a></h1> 106<h1><a class="toc-backref" href="#id17" name="motivation">Motivation</a></h1>
99<p>Since the beginning, Gentoo Linux has been conceived as a &quot;metadistribution&quot; 107<p>Since the beginning, Gentoo Linux has been conceived as a &quot;metadistribution&quot;
100that combines remarkable flexibility with sensible defaults and exceptional 108that combines remarkable flexibility with sensible defaults and exceptional
101maintainablilty. 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 109maintainablilty. 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
102flexibility to include systems other than GNU/Linux. For example, the author 110flexibility to include systems other than GNU/Linux. For example, the author
103of 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 111of 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
104<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 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
105a variety of different architectures, so, in principle, we would need a new 113variety of different architectures, so, in principle, we would need a new
106<em>openbsd-arch</em> keyword for each supported architecture. In fact, the situation 114<em>openbsd-arch</em> keyword for each supported architecture. In fact, the
107is 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 115situation 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
108like 116eventually like to support the option of &quot;mixing-and-matching&quot;
109to support the option of &quot;mixing-and-matching&quot; GNU/*BSD/whatever userlands 117GNU/*BSD/whatever userlands and libcs irrespective of the underlying kernel.
110and 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 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
111has 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
112BSD userland with a GNU userland.) The net result is that we would need 119replaced the BSD userland with a GNU userland.) The net result is that we
113keywords that specified all possible permutations of arch, userland, kernel 120need keywords that can specify all possible permutations of arch,
114and libc. Not fun.</p> 121userland, kernel and libc. A systematic nomenclature is needed.
122Fortunately, the author is a Chemist. <em>Grin</em></p>
115</div> 123</div>
116<div class="section" id="specification"> 124<div class="section" id="specification">
117<h1><a class="toc-backref" href="#id17" name="specification">Specification</a></h1> 125<h1><a class="toc-backref" href="#id18" name="specification">Specification</a></h1>
118<div class="section" id="new-variables"> 126<div class="section" id="keyword-fragments">
119<h2><a class="toc-backref" href="#id18" name="new-variables">New Variables</a></h2> 127<h2><a class="toc-backref" href="#id19" name="keyword-fragments">Keyword Fragments</a></h2>
120<p>I suggest that we replace the single KEYWORDS variable in ebuilds 128<p>Each keyword needs to specify, either explicitly or
121with four separate variables: ARCH, USERLAND, LIBC, and KERNEL.</p> 129implicitly, the following parameters: ARCH, USERLAND, LIBC, and KERNEL.</p>
122<blockquote> 130<blockquote>
123<dl> 131<dl>
124<dt>ARCH: </dt> 132<dt>ARCH: </dt>
125<dd>x86, amd64, cobalt, mips64, arm, hppa, ia64, ppc64, sparc</dd> 133<dd>x86, amd64, cobalt, mips64, arm, hppa, ia64, ppc64, sparc</dd>
126<dt>USERLAND: </dt> 134<dt>USERLAND: </dt>
130<dt>KERNEL: </dt> 138<dt>KERNEL: </dt>
131<dd>linux, selinux, openbsd, freebsd, netbsd, macosx</dd> 139<dd>linux, selinux, openbsd, freebsd, netbsd, macosx</dd>
132</dl> 140</dl>
133</blockquote> 141</blockquote>
134<p>(The above examples are not meant to be complete. Hurd, for example 142<p>(The above examples are not meant to be complete. Hurd, for example
135is not included because I know very little about Hurd.) 143is not included because I know very little about Hurd.)</p>
136For each variable the standard &quot;-,-*,~&quot; prefixes would be allowed. 144<p>A fully-specified keyword would look like
137Similarly, <cite>/etc/make.conf</cite> would have ACCEPT_ARCH, ACCEPT_USERLAND, 145&quot;ARCH-KERNEL-USERLAND-LIBC&quot;, so, for example,
138ACCEPT_LIBC, and ACCEPT_KERNEL variables.</p> 146&quot;ppc-fbsd-gnu-glibc&quot; would indicate a Gentoo system corresponding to
147a ppc architecture running the FreeBSD kernel with a GNU userland and glibc
148as the system C library.</p>
139</div> 149</div>
140<div class="section" id="reasonable-defaults"> 150<div class="section" id="reasonable-defaults">
141<h2><a class="toc-backref" href="#id19" name="reasonable-defaults">Reasonable Defaults</a></h2> 151<h2><a class="toc-backref" href="#id20" name="reasonable-defaults">Reasonable Defaults</a></h2>
142<p>To keep this system manageable, we need sensible defaults. An ebuild 152<p>To keep this system manageable (and both to reduce typing and maintain
143that has missing USERLAND, KERNEL, or LIBC variables is provided 153backwards compatibility), we need sensible defaults. For backwards
144with implicit USERLAND=&quot;gnu&quot;, KERNEL=&quot;linux&quot;, and/or LIBC=&quot;glibc&quot; 154compatibility, the Gentoo default is a Linux kernel with a GNU userland
145variables. However, once a variable is explicitly added (such as 155and glibc C library. Thus, the current crop of ARCH-based keywords
146KERNEL=&quot;openbsd&quot;), the default is no longer assumed. That is, 156(x86, ppc, etcetera) require no change whatsoever. For the *BSD-based
147one would need KERNEL=&quot;openbsd linux&quot; if the ebuild is stable on 157systems the default USERLAND and LIBC would be those normally associated
148both openbsd and linux kernels.</p> 158with the corresponding KERNEL, so &quot;x86-obsd&quot; describes an x86 system
149<p>The ARCH variable, on the other hand, does <em>not</em> have a default, per se. 159with an OpenBSD kernel, a BSD userland, and the OpenBSD C library. If
150Instead, if no ARCH variable exists then portage would automatically 160either USERLAND or LIBC is specified, and thus not the default, then the
151add the ebuild's KEYWORD entries to ARCH. Thus, all current ebuilds 161entire four-parameter string must be used.</p>
152would still work without changes, allowing for a gradual transition 162</div>
153to the new system as the new variables are needed.</p> 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
166to ebuilds is likely to become cumbersome over the long run. (One could
167imagine that for a simple <cite>econf &amp;&amp; emake &amp;&amp; einstall</cite> ebuild that the
168list of keywords could grow to be the lengthiest part of the ebuild.)
169Instead, perhaps it would make more sense to move each ebuild's keywords
170out of the ebuild proper into a separate, perhaps online, database.
171Nothing in this GLEP would be incompatible with such an approach, so
172any further discussion will be deferred to a possible future GLEP on
173that topic.</p>
154</div> 174</div>
155<div class="section" id="profiles"> 175<div class="section" id="profiles">
156<h2><a class="toc-backref" href="#id20" name="profiles">Profiles</a></h2> 176<h2><a class="toc-backref" href="#id22" name="profiles">Profiles</a></h2>
157<p>Along with an explosion of keywords comes a concomitant explosion 177<p>Along with an explosion of keywords comes a concomitant explosion of potential
158of potential profiles. The good news is that profiles show up only 178profiles. Just as in the current system, the profile name would be
159in a single directory, so an explosion there is easier to contain. 179&quot;FLAVOR-KEYWORD-VERSION&quot; (such as &quot;default-s390-2004.1&quot;). One drawback
160I suggest an arch-kernel-userland-libc-version naming scheme, with
161the kernel-userland-libc terms defaulting to linux-gnu-glibc if
162absent. (Yes, Chemists do tend to be fond of systematic naming
163systems.)</p>
164<p>One drawback to having a large number of profiles is that maintainance 180to having a large number of profiles is that maintainance becomes a
165becomes a significant problem. In fact, one could reasonably argue 181significant problem. In fact, one could reasonably argue that the current
166that the current number of profiles is already too many to be 182number of profiles is already too many to be easily maintained. One proposal
167easily maintained. One proposal that has been raised to simplify 183that has been raised to simplify matters is the idea of stackable, or
168matters is the idea of stackable, or cascading, profiles, so that 184cascading, profiles, so that only differences between profiles would have to
169only differences between profiles would have to be maintained.</p> 185be maintained.</p>
170</div> 186</div>
171</div> 187</div>
172<div class="section" id="rationale"> 188<div class="section" id="rationale">
173<h1><a class="toc-backref" href="#id21" name="rationale">Rationale</a></h1> 189<h1><a class="toc-backref" href="#id23" name="rationale">Rationale</a></h1>
174<p>The proposed new &quot;keywording&quot; system is far from elegant, which is 190<p>The proposed new &quot;keywording&quot; system is far from elegant, which is
175a substantial drawback. On the other hand, it is simple, it requires 191a substantial drawback. On the other hand, it is simple, it requires
176relatively minor changes (albeit ones that eventually would impact 192relatively minor changes, and the changes can be implemented
177every ebuild in the portage tree), and the changes can be implemented
178gradually over time.</p> 193gradually over time.</p>
179</div> 194</div>
180<div class="section" id="implementation"> 195<div class="section" id="implementation">
181<h1><a class="toc-backref" href="#id22" name="implementation">Implementation</a></h1> 196<h1><a class="toc-backref" href="#id24" name="implementation">Implementation</a></h1>
182<p>Implementation of this GLEP would divide into adding 197<p>Since the new keyword system is backwards-compatible with the current
183Portage functionality to support the new system and 198system, &quot;implementation&quot; just means adding new keywords to ebuilds
184modifying ebuilds to 199as new systems are supported.</p>
185comply with the new system.
186The Portage support involves hacking Portage
187to assemble and check a four-state
188arch-userland-kernel-libc variable instead of the simpler
189KEYWORD variable. One might quibble over algorithmic issues, but
190the actual concept is pretty straightforward. Rewriting ebuilds,
191on the other hand, is a massive undertaking. Fortunately, it is
192also a process that can be done over whatever length of time is
193required, since &quot;legacy&quot; ebuilds should work with no changes.</p>
194</div> 200</div>
195<div class="section" id="backwards-compatibility"> 201<div class="section" id="backwards-compatibility">
196<h1><a class="toc-backref" href="#id23" name="backwards-compatibility">Backwards Compatibility</a></h1> 202<h1><a class="toc-backref" href="#id25" name="backwards-compatibility">Backwards Compatibility</a></h1>
197<p>Backwards compatibility has already been addressed in some detail, 203<p>Backwards compatibility has already been addressed in some detail,
198with the stated goal being a system that would leave all current 204with the stated goal being a system that would leave all current
199ebuilds in a still-functioning state after the portage modifications 205ebuilds working exactly as they are now.</p>
200have been made. However, we are already using an ARCH variable for
201some arcane purpose in Portage, and that issue would still need to
202be resolved.</p>
203</div> 206</div>
204<div class="section" id="id1"> 207<div class="section" id="id1">
205<h1><a class="toc-backref" href="#id24" name="id1">References</a></h1> 208<h1><a class="toc-backref" href="#id26" name="id1">References</a></h1>
206<table class="footnote" frame="void" id="id2" rules="none"> 209<table class="footnote" frame="void" id="id2" rules="none">
207<colgroup><col class="label" /><col /></colgroup> 210<colgroup><col class="label" /><col /></colgroup>
208<tbody valign="top"> 211<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> 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>
210</tbody> 213</tbody>
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> 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>
234</tbody> 237</tbody>
235</table> 238</table>
236</div> 239</div>
237<div class="section" id="copyright"> 240<div class="section" id="copyright">
238<h1><a class="toc-backref" href="#id25" name="copyright">Copyright</a></h1> 241<h1><a class="toc-backref" href="#id27" name="copyright">Copyright</a></h1>
239<p>This document is licensed under the Creative Commons - Attribution / Share 242<p>This document has been placed in the public domain.</p>
240Alike license. (<a class="reference" href="http://creativecommons.org/licenses/by-sa/1.0">http://creativecommons.org/licenses/by-sa/1.0</a>)</p>
241</div> 243</div>
242</div> 244</div>
243 245
244<hr class="footer"/> 246<hr class="footer"/>
245<div class="footer"> 247<div class="footer">
246<a class="reference" href="glep-0022.txt">View document source</a>. 248<a class="reference" href="glep-0022.txt">View document source</a>.
247Generated on: 2004-03-07 02:20 UTC. 249Generated on: 2004-06-06 00:41 UTC.
248Generated 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. 250Generated 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.
249</div> 251</div>
250</body> 252</body>
251</html> 253</html>
252 254

Legend:
Removed from v.1.1  
changed lines
  Added in v.1.3

  ViewVC Help
Powered by ViewVC 1.1.20