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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.3 - (show annotations) (download) (as text)
Sun May 17 15:50:27 2009 UTC (5 years, 1 month ago) by peper
Branch: MAIN
Changes since 1.2: +444 -124 lines
File MIME type: text/html
Update GLEP 55.

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 <head>
6 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
7 <meta name="generator" content="Docutils 0.5: http://docutils.sourceforge.net/" />
8 <title>GLEP 55 -- Use EAPI-suffixed ebuilds (.ebuild-EAPI)</title>
9 <style type="text/css">
10
11 /*
12 :Author: David Goodger
13 :Contact: goodger@users.sourceforge.net
14 :date: $Date: 2003/06/02 17:03:08 $
15 :version: $Revision: 1.1 $
16 :copyright: This stylesheet has been placed in the public domain.
17
18 Default cascading style sheet for the PEP HTML output of Docutils.
19 */
20
21 .first {
22 margin-top: 0 }
23
24 .last {
25 margin-bottom: 0 }
26
27 .navigation {
28 width: 100% ;
29 background: #cc99ff ;
30 margin-top: 0px ;
31 margin-bottom: 0px }
32
33 .navigation .navicon {
34 width: 150px ;
35 height: 35px }
36
37 .navigation .textlinks {
38 padding-left: 1em ;
39 text-align: left }
40
41 .navigation td, .navigation th {
42 padding-left: 0em ;
43 padding-right: 0em ;
44 vertical-align: middle }
45
46 .rfc2822 {
47 margin-top: 0.5em ;
48 margin-left: 0.5em ;
49 margin-right: 0.5em ;
50 margin-bottom: 0em }
51
52 .rfc2822 td {
53 text-align: left }
54
55 .rfc2822 th.field-name {
56 text-align: right ;
57 font-family: sans-serif ;
58 padding-right: 0.5em ;
59 font-weight: bold ;
60 margin-bottom: 0em }
61
62 a.toc-backref {
63 text-decoration: none ;
64 color: black }
65
66 body {
67 margin: 0px ;
68 margin-bottom: 1em ;
69 padding: 0px }
70
71 dd {
72 margin-bottom: 0.5em }
73
74 div.section {
75 margin-left: 1em ;
76 margin-right: 1em ;
77 margin-bottom: 1.5em }
78
79 div.section div.section {
80 margin-left: 0em ;
81 margin-right: 0em ;
82 margin-top: 1.5em }
83
84 div.abstract {
85 margin: 2em 5em }
86
87 div.abstract p.topic-title {
88 font-weight: bold ;
89 text-align: center }
90
91 div.attention, div.caution, div.danger, div.error, div.hint,
92 div.important, div.note, div.tip, div.warning {
93 margin: 2em ;
94 border: medium outset ;
95 padding: 1em }
96
97 div.attention p.admonition-title, div.caution p.admonition-title,
98 div.danger p.admonition-title, div.error p.admonition-title,
99 div.warning p.admonition-title {
100 color: red ;
101 font-weight: bold ;
102 font-family: sans-serif }
103
104 div.hint p.admonition-title, div.important p.admonition-title,
105 div.note p.admonition-title, div.tip p.admonition-title {
106 font-weight: bold ;
107 font-family: sans-serif }
108
109 div.figure {
110 margin-left: 2em }
111
112 div.footer, div.header {
113 font-size: smaller }
114
115 div.footer {
116 margin-left: 1em ;
117 margin-right: 1em }
118
119 div.system-messages {
120 margin: 5em }
121
122 div.system-messages h1 {
123 color: red }
124
125 div.system-message {
126 border: medium outset ;
127 padding: 1em }
128
129 div.system-message p.system-message-title {
130 color: red ;
131 font-weight: bold }
132
133 div.topic {
134 margin: 2em }
135
136 h1 {
137 font-family: sans-serif ;
138 font-size: large }
139
140 h2 {
141 font-family: sans-serif ;
142 font-size: medium }
143
144 h3 {
145 font-family: sans-serif ;
146 font-size: small }
147
148 h4 {
149 font-family: sans-serif ;
150 font-style: italic ;
151 font-size: small }
152
153 h5 {
154 font-family: sans-serif;
155 font-size: x-small }
156
157 h6 {
158 font-family: sans-serif;
159 font-style: italic ;
160 font-size: x-small }
161
162 .section hr {
163 width: 75% }
164
165 ol.simple, ul.simple {
166 margin-bottom: 1em }
167
168 ol.arabic {
169 list-style: decimal }
170
171 ol.loweralpha {
172 list-style: lower-alpha }
173
174 ol.upperalpha {
175 list-style: upper-alpha }
176
177 ol.lowerroman {
178 list-style: lower-roman }
179
180 ol.upperroman {
181 list-style: upper-roman }
182
183 p.caption {
184 font-style: italic }
185
186 p.credits {
187 font-style: italic ;
188 font-size: smaller }
189
190 p.label {
191 white-space: nowrap }
192
193 p.topic-title {
194 font-family: sans-serif ;
195 font-weight: bold }
196
197 pre.line-block {
198 font-family: serif ;
199 font-size: 100% }
200
201 pre.literal-block, pre.doctest-block {
202 margin-left: 2em ;
203 margin-right: 2em ;
204 background-color: #eeeeee }
205
206 span.classifier {
207 font-family: sans-serif ;
208 font-style: oblique }
209
210 span.classifier-delimiter {
211 font-family: sans-serif ;
212 font-weight: bold }
213
214 span.interpreted {
215 font-family: sans-serif }
216
217 span.option-argument {
218 font-style: italic }
219
220 span.pre {
221 white-space: pre }
222
223 span.problematic {
224 color: red }
225
226 table {
227 margin-top: 0.5em ;
228 margin-bottom: 0.5em }
229
230 td, th {
231 padding-left: 0.5em ;
232 padding-right: 0.5em ;
233 vertical-align: top }
234
235 td.num {
236 text-align: right }
237
238 th.field-name {
239 font-weight: bold ;
240 text-align: left ;
241 white-space: nowrap }
242
243 h1 tt, h2 tt, h3 tt, h4 tt, h5 tt, h6 tt {
244 font-size: 100% }
245
246 tt {
247 background-color: #eeeeee }
248
249 ul.auto-toc {
250 list-style-type: none }
251
252 </style></head>
253 <body bgcolor="white">
254 <table class="navigation" cellpadding="0" cellspacing="0"
255 width="100%" border="0">
256 <tr><td class="navicon" width="150" height="35">
257 <a href="http://www.gentoo.org/" title="Gentoo Linux Home Page">
258 <img src="http://www.gentoo.org/images/gentoo-new.gif" alt="[Gentoo]"
259 border="0" width="150" height="35" /></a></td>
260 <td class="textlinks" align="left">
261 [<b><a href="http://www.gentoo.org/">Gentoo Linux Home</a></b>]
262 [<b><a href="http://www.gentoo.org/proj/en/glep">GLEP Index</a></b>]
263 [<b><a href="http://www.gentoo.org/proj/en/glep/glep-0055.txt">GLEP Source</a></b>]
264 </td></tr></table>
265 <table class="rfc2822 docutils field-list" frame="void" rules="none">
266 <col class="field-name" />
267 <col class="field-body" />
268 <tbody valign="top">
269 <tr class="field"><th class="field-name">GLEP:</th><td class="field-body">55</td>
270 </tr>
271 <tr class="field"><th class="field-name">Title:</th><td class="field-body">Use EAPI-suffixed ebuilds (.ebuild-EAPI)</td>
272 </tr>
273 <tr class="field"><th class="field-name">Version:</th><td class="field-body">1.2</td>
274 </tr>
275 <tr class="field"><th class="field-name">Last-Modified:</th><td class="field-body"><a class="reference external" href="http://www.gentoo.org/cgi-bin/viewcvs.cgi/xml/htdocs/proj/en/glep/glep-0055.txt?cvsroot=gentoo">2008/01/06 02:39:42</a></td>
276 </tr>
277 <tr class="field"><th class="field-name">Author:</th><td class="field-body">Piotr JaroszyƄski &lt;peper&#32;&#97;t&#32;gentoo.org&gt;</td>
278 </tr>
279 <tr class="field"><th class="field-name">Status:</th><td class="field-body">Draft</td>
280 </tr>
281 <tr class="field"><th class="field-name">Type:</th><td class="field-body">Standards Track</td>
282 </tr>
283 <tr class="field"><th class="field-name">Content-Type:</th><td class="field-body"><a class="reference external" href="glep-0002.html">text/x-rst</a></td>
284 </tr>
285 <tr class="field"><th class="field-name">Created:</th><td class="field-body">17-Dec-2007</td>
286 </tr>
287 <tr class="field"><th class="field-name">Post-History:</th><td class="field-body">17-Dec-2007, 22-Dec-2007, 17-May-2009</td>
288 </tr>
289 </tbody>
290 </table>
291 <hr />
292 <div class="contents topic" id="contents">
293 <p class="topic-title first">Contents</p>
294 <ul class="simple">
295 <li><a class="reference internal" href="#abstract" id="id3">Abstract</a></li>
296 <li><a class="reference internal" href="#problem" id="id4">Problem</a></li>
297 <li><a class="reference internal" href="#current-behaviour" id="id5">Current behaviour</a><ul>
298 <li><a class="reference internal" href="#incompatible-change-of-inherit-e-g-make-it-look-in-the-package-dir-too" id="id6">Incompatible change of inherit (e.g. make it look in the package dir too)</a></li>
299 <li><a class="reference internal" href="#new-global-scope-function" id="id7">New global scope function</a></li>
300 <li><a class="reference internal" href="#new-version-format" id="id8">New version format</a></li>
301 </ul>
302 </li>
303 <li><a class="reference internal" href="#abstract-solution" id="id9">Abstract solution</a></li>
304 <li><a class="reference internal" href="#proposed-solution" id="id10">Proposed solution</a></li>
305 <li><a class="reference internal" href="#specification" id="id11">Specification</a></li>
306 <li><a class="reference internal" href="#summary-of-ideas" id="id12">Summary of ideas</a><ul>
307 <li><a class="reference internal" href="#eapi-suffixed-ebuilds-proposed-solution" id="id13">EAPI-suffixed ebuilds (proposed solution)</a></li>
308 <li><a class="reference internal" href="#eapi-in-the-filename-with-one-time-extension-change" id="id14">EAPI in the filename with one-time extension change</a></li>
309 <li><a class="reference internal" href="#easily-fetchable-eapi-inside-the-ebuild" id="id15">Easily fetchable EAPI inside the ebuild</a></li>
310 <li><a class="reference internal" href="#easily-fetchable-eapi-inside-the-ebuild-and-one-time-extension-change" id="id16">Easily fetchable EAPI inside the ebuild and one-time extension change</a></li>
311 <li><a class="reference internal" href="#use-different-subdirectories-for-different-eapis-i-e-cat-pkg-eapix" id="id17">Use different subdirectories for different EAPIs, i.e. cat/pkg/eapiX/</a></li>
312 </ul>
313 </li>
314 <li><a class="reference internal" href="#references" id="id18">References</a></li>
315 <li><a class="reference internal" href="#copyright" id="id19">Copyright</a></li>
316 </ul>
317 </div>
318 <blockquote>
319 <p>&quot;A little learning is a dangerous thing; drink deep, or taste not the Pierian
320 spring: there shallow draughts intoxicate the brain, and drinking largely
321 sobers us again.&quot;</p>
322 <p class="attribution">&mdash;Alexander Pope, An Essay on Criticism</p>
323 </blockquote>
324 <div class="section" id="abstract">
325 <h1><a class="toc-backref" href="#id3">Abstract</a></h1>
326 <p>This GLEP proposes usage of EAPI-suffixed file extensions for ebuilds (for
327 example, foo-1.2.3.ebuild-1).</p>
328 </div>
329 <div class="section" id="problem">
330 <h1><a class="toc-backref" href="#id4">Problem</a></h1>
331 <p>The current way of specifying the EAPI in ebuilds is flawed. In order to get the
332 EAPI the package manager needs to source the ebuild, which itself needs the EAPI
333 in the first place. Otherwise it imposes a serious limitation, namely every ebuild,
334 using any of the future EAPIs, will have to be source'able by old package
335 managers and hence there is no way to do any of the following:</p>
336 <blockquote>
337 <ul class="simple">
338 <li>Change the behaviour of inherit in any way (for example, to extend or change
339 eclass functionality).</li>
340 <li>Add new global scope functions in any sane way.</li>
341 <li>Extend versioning rules in an EAPI - for example, addition of the scm
342 suffix - GLEP54 <a class="footnote-reference" href="#glep54" id="id1">[1]</a> or allowing more sensible version formats like
343 <tt class="docutils literal"><span class="pre">1-rc1</span></tt>, <tt class="docutils literal"><span class="pre">1-alpha</span></tt> etc. to match upstream more closely.</li>
344 </ul>
345 </blockquote>
346 </div>
347 <div class="section" id="current-behaviour">
348 <h1><a class="toc-backref" href="#id5">Current behaviour</a></h1>
349 <p>Following subsections show what happens if you introduce any of the mentioned
350 changes in an ebuild and try to install it with portage 2.1.6.13.</p>
351 <div class="section" id="incompatible-change-of-inherit-e-g-make-it-look-in-the-package-dir-too">
352 <h2><a class="toc-backref" href="#id6">Incompatible change of inherit (e.g. make it look in the package dir too)</a></h2>
353 <p><tt class="docutils literal"><span class="pre">sys-apps/foo-1.ebuild</span></tt>:</p>
354 <pre class="literal-block">
355 EAPI=&quot;5&quot;
356 inherit &quot;foo&quot;
357
358 DESCRIPTION=&quot;&quot;
359 HOMEPAGE=&quot;&quot;
360 SRC_URI=&quot;&quot;
361 ...
362 </pre>
363 <p>Result:</p>
364 <pre class="literal-block">
365 *
366 * ERROR: sys-apps/foo-1 failed.
367 * Call stack:
368 * ebuild.sh, line 1879: Called _source_ebuild
369 * ebuild.sh, line 1818: Called source '/var/lib/gentoo/repositories/peper/sys-apps/foo/foo-1.ebuild'
370 * foo-1.ebuild, line 6: Called inherit 'foo'
371 * ebuild.sh, line 1218: Called die
372 * The specific snippet of code:
373 * [ ! -e &quot;$location&quot; ] &amp;&amp; die &quot;${1}.eclass could not be found by inherit()&quot;
374 * The die message:
375 * foo.eclass could not be found by inherit()
376 *
377 * If you need support, post the topmost build error, and the call stack if relevant.
378 * This ebuild is from an overlay: '/var/lib/gentoo/repositories/peper/'
379 *
380
381 !!! All ebuilds that could satisfy &quot;sys-apps/foo&quot; have been masked.
382 !!! One of the following masked packages is required to complete your request:
383 - sys-apps/foo-1 (masked by: corruption)
384 </pre>
385 <p>Current portage looks for eclasses only in the <tt class="docutils literal"><span class="pre">eclass</span></tt> directory of a
386 repository. This results in a fatal error and ebuild being masked by corruption
387 - might be pretty confusing to users.</p>
388 </div>
389 <div class="section" id="new-global-scope-function">
390 <h2><a class="toc-backref" href="#id7">New global scope function</a></h2>
391 <p><tt class="docutils literal"><span class="pre">sys-apps/foo-1.ebuild</span></tt>:</p>
392 <pre class="literal-block">
393 EAPI=&quot;5&quot;
394 new_global_scope_function &quot;foo&quot;
395
396 DESCRIPTION=&quot;&quot;
397 HOMEPAGE=&quot;&quot;
398 SRC_URI=&quot;&quot;
399 ...
400 </pre>
401 <p>Result:</p>
402 <pre class="literal-block">
403 /var/lib/gentoo/repositories/peper/sys-apps/foo/foo-1.ebuild: line 7: new_global_scope_function: command not found
404
405 !!! All ebuilds that could satisfy &quot;sys-apps/foo&quot; have been masked.
406 !!! One of the following masked packages is required to complete your request:
407 - sys-apps/foo-1 (masked by: EAPI 5)
408
409 The current version of portage supports EAPI '2'. You must upgrade to a
410 newer version of portage before EAPI masked packages can be installed.
411 </pre>
412 <p>Not that bad as user is advised to upgrade portage.</p>
413 </div>
414 <div class="section" id="new-version-format">
415 <h2><a class="toc-backref" href="#id8">New version format</a></h2>
416 <p><tt class="docutils literal"><span class="pre">sys-apps/foo-2-rc1.ebuild</span></tt>:</p>
417 <pre class="literal-block">
418 Invalid ebuild name: /var/lib/gentoo/repositories/peper/sys-apps/foo/foo-2-rc1.ebuild
419
420 emerge: there are no ebuilds to satisfy &quot;sys-apps/foo&quot;
421 </pre>
422 <p>Not the best error message, especially if there are lots of them.</p>
423 </div>
424 </div>
425 <div class="section" id="abstract-solution">
426 <h1><a class="toc-backref" href="#id9">Abstract solution</a></h1>
427 <p>A solution to this problem has to lift those limitations and the only way to do
428 it is to make the EAPI of an ebuild available to the package managers in a way
429 that doesn't require them to source the ebuild. Another important requirement is
430 for the solution to be backward compatible, which has the pleasant side-effect
431 of making the solution applicable in the Gentoo tree right away. Opposed to
432 waiting an arbitrary amount of time, which is never long enough anyway, as the
433 issues listed on the common portage problems page - <a class="footnote-reference" href="#portageproblems" id="id2">[2]</a> - show.</p>
434 </div>
435 <div class="section" id="proposed-solution">
436 <h1><a class="toc-backref" href="#id10">Proposed solution</a></h1>
437 <p>The proposed solution is to use EAPI-suffixed file extensions for ebuilds. This
438 allows package managers to trivially read the EAPI from the ebuild filename. It
439 is also backwards compatible, because currently ebuilds are recognised by the
440 <tt class="docutils literal"><span class="pre">.ebuild</span></tt> file extension and hence EAPI-suffixed ebuilds are simply ignored by
441 the package managers.</p>
442 </div>
443 <div class="section" id="specification">
444 <h1><a class="toc-backref" href="#id11">Specification</a></h1>
445 <p>Ebuild filename extension syntax: <tt class="docutils literal"><span class="pre">ebuild[-&lt;EAPI&gt;]</span></tt>, where <tt class="docutils literal"><span class="pre">[]</span></tt> denotes an
446 optional part, and <tt class="docutils literal"><span class="pre">&lt;EAPI&gt;</span></tt> is the EAPI of the ebuild.</p>
447 <p>The EAPI used by the ebuild is the EAPI included in the filename if it is set.
448 Otherwise the EAPI set inside the ebuild is used, which defaults to 0 (this is
449 the current behaviour).</p>
450 <p>Ebuilds with unsupported EAPIs are masked.</p>
451 <p>It should be considered an error to set the EAPI both in the filename and in the
452 ebuild.</p>
453 <p>Examples:</p>
454 <blockquote>
455 <ul>
456 <li><dl class="first docutils">
457 <dt><tt class="docutils literal"><span class="pre">pkg-1.ebuild</span></tt>, no EAPI set inside the ebuild</dt>
458 <dd><p class="first last">EAPI defaults to 0.</p>
459 </dd>
460 </dl>
461 </li>
462 <li><dl class="first docutils">
463 <dt><tt class="docutils literal"><span class="pre">pkg-2.ebuild-1</span></tt>, no EAPI set inside the ebuild</dt>
464 <dd><p class="first last">EAPI 1 is used.</p>
465 </dd>
466 </dl>
467 </li>
468 <li><dl class="first docutils">
469 <dt><tt class="docutils literal"><span class="pre">pkg-3.ebuild-1</span></tt>, <tt class="docutils literal"><span class="pre">EAPI=&quot;1&quot;</span></tt></dt>
470 <dd><p class="first last">EAPI set in both places - error.</p>
471 </dd>
472 </dl>
473 </li>
474 </ul>
475 </blockquote>
476 <p>Note that it is still not permitted to have more than one ebuild with equal
477 category, package name, and version. Although it would have the advantage of
478 allowing authors to provide backwards compatible ebuilds, it would introduce
479 problems too. The first is the requirement to have strict EAPI ordering, the
480 second is ensuring that all the ebuilds for a single category/package-version
481 are equivalent, i.e. installing any of them has exactly the same effect on a
482 given system.</p>
483 </div>
484 <div class="section" id="summary-of-ideas">
485 <h1><a class="toc-backref" href="#id12">Summary of ideas</a></h1>
486 <div class="section" id="eapi-suffixed-ebuilds-proposed-solution">
487 <h2><a class="toc-backref" href="#id13">EAPI-suffixed ebuilds (proposed solution)</a></h2>
488 <dl class="docutils">
489 <dt>Properties:</dt>
490 <dd><ul class="first last simple">
491 <li>Can be used right away: yes</li>
492 <li>Hurts performance: no</li>
493 </ul>
494 </dd>
495 </dl>
496 <p>Some say it is clear and simple, others that it is ugly and unintuitive.</p>
497 </div>
498 <div class="section" id="eapi-in-the-filename-with-one-time-extension-change">
499 <h2><a class="toc-backref" href="#id14">EAPI in the filename with one-time extension change</a></h2>
500 <p>One of the proposed filename formats:
501 <tt class="docutils literal"><span class="pre">&lt;PKG&gt;-&lt;VER&gt;.eapi-&lt;EAPI&gt;.eb</span></tt></p>
502 <dl class="docutils">
503 <dt>Properties:</dt>
504 <dd><ul class="first last simple">
505 <li>Can be used right away: yes</li>
506 <li>Hurts performance: no</li>
507 </ul>
508 </dd>
509 </dl>
510 <p>This is equivalent to the proposed solution.</p>
511 <p>Some say it is better because the extension is static.</p>
512 </div>
513 <div class="section" id="easily-fetchable-eapi-inside-the-ebuild">
514 <h2><a class="toc-backref" href="#id15">Easily fetchable EAPI inside the ebuild</a></h2>
515 <dl class="docutils">
516 <dt>Properties:</dt>
517 <dd><ul class="first last simple">
518 <li>Can be used right away: no</li>
519 <li>Hurts performance: yes</li>
520 </ul>
521 </dd>
522 </dl>
523 <p>Cannot be used right away as it would trigger the errors shown in Current
524 behaviour section for old package managers.</p>
525 <p>Performance decrease comes from the fact that with version format changes in the
526 picture package managers need EAPI to parse the ebuild's version. That means that merely
527 picking the best version of a package requires loading EAPI (from cache or the
528 ebuild) for each available ebuild.</p>
529 </div>
530 <div class="section" id="easily-fetchable-eapi-inside-the-ebuild-and-one-time-extension-change">
531 <h2><a class="toc-backref" href="#id16">Easily fetchable EAPI inside the ebuild and one-time extension change</a></h2>
532 <dl class="docutils">
533 <dt>Properties:</dt>
534 <dd><ul class="first last simple">
535 <li>Can be used right away: yes</li>
536 <li>Hurts performance: yes</li>
537 </ul>
538 </dd>
539 </dl>
540 <p>Performance decrease as described in the previous section.</p>
541 <p>Some say it is clear and simple, others that it is confusing and unintuitive,
542 because of the arbitrary format restrictions in what is a bash script otherwise.</p>
543 </div>
544 <div class="section" id="use-different-subdirectories-for-different-eapis-i-e-cat-pkg-eapix">
545 <h2><a class="toc-backref" href="#id17">Use different subdirectories for different EAPIs, i.e. cat/pkg/eapiX/</a></h2>
546 <dl class="docutils">
547 <dt>Properties:</dt>
548 <dd><ul class="first last simple">
549 <li>Can be used right away: yes</li>
550 <li>Hurts performance: yes</li>
551 </ul>
552 </dd>
553 </dl>
554 <p>Performance decrease comes from the fact that it adds several more directory
555 reads.</p>
556 <p>Some say that it makes it much harder for maintainers to see what they have.</p>
557 </div>
558 </div>
559 <div class="section" id="references">
560 <h1><a class="toc-backref" href="#id18">References</a></h1>
561 <table class="docutils footnote" frame="void" id="glep54" rules="none">
562 <colgroup><col class="label" /><col /></colgroup>
563 <tbody valign="top">
564 <tr><td class="label"><a class="fn-backref" href="#id1">[1]</a></td><td>GLEP 54, scm package version suffix
565 (<a class="reference external" href="http://glep.gentoo.org/glep-0054.html">http://glep.gentoo.org/glep-0054.html</a>)</td></tr>
566 </tbody>
567 </table>
568 <table class="docutils footnote" frame="void" id="portageproblems" rules="none">
569 <colgroup><col class="label" /><col /></colgroup>
570 <tbody valign="top">
571 <tr><td class="label"><a class="fn-backref" href="#id2">[2]</a></td><td>Common portage problems
572 (<a class="reference external" href="http://www.gentoo.org/proj/en/portage/doc/common-problems.xml">http://www.gentoo.org/proj/en/portage/doc/common-problems.xml</a>)</td></tr>
573 </tbody>
574 </table>
575 </div>
576 <div class="section" id="copyright">
577 <h1><a class="toc-backref" href="#id19">Copyright</a></h1>
578 <p>This document has been placed in the public domain.</p>
579 <!-- vim: set tw=80 fileencoding=utf-8 spell spelllang=en et : -->
580 </div>
581
582 </div>
583 <div class="footer">
584 <hr class="footer" />
585 <a class="reference external" href="glep-0055.txt">View document source</a>.
586 Generated on: 2009-05-17 15:29 UTC.
587 Generated by <a class="reference external" href="http://docutils.sourceforge.net/">Docutils</a> from <a class="reference external" href="http://docutils.sourceforge.net/rst.html">reStructuredText</a> source.
588
589 </div>
590 </body>
591 </html>

  ViewVC Help
Powered by ViewVC 1.1.20