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

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

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

Revision 1.3 Revision 1.5
9 <style type="text/css"> 9 <style type="text/css">
10 10
11/* 11/*
12:Author: David Goodger 12:Author: David Goodger
13:Contact: goodger@users.sourceforge.net 13:Contact: goodger@users.sourceforge.net
14:date: $Date: 2009/05/17 15:50:27 $ 14:date: $Date: 2009/05/17 20:56:53 $
15:version: $Revision: 1.3 $ 15:version: $Revision: 1.5 $
16:copyright: This stylesheet has been placed in the public domain. 16:copyright: This stylesheet has been placed in the public domain.
17 17
18Default cascading style sheet for the PEP HTML output of Docutils. 18Default cascading style sheet for the PEP HTML output of Docutils.
19*/ 19*/
20 20
268<tbody valign="top"> 268<tbody valign="top">
269<tr class="field"><th class="field-name">GLEP:</th><td class="field-body">55</td> 269<tr class="field"><th class="field-name">GLEP:</th><td class="field-body">55</td>
270</tr> 270</tr>
271<tr class="field"><th class="field-name">Title:</th><td class="field-body">Use EAPI-suffixed ebuilds (.ebuild-EAPI)</td> 271<tr class="field"><th class="field-name">Title:</th><td class="field-body">Use EAPI-suffixed ebuilds (.ebuild-EAPI)</td>
272</tr> 272</tr>
273<tr class="field"><th class="field-name">Version:</th><td class="field-body">1.2</td> 273<tr class="field"><th class="field-name">Version:</th><td class="field-body">1.4</td>
274</tr> 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> 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">2009/05/17 17:00:30</a></td>
276</tr> 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> 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> 278</tr>
279<tr class="field"><th class="field-name">Status:</th><td class="field-body">Draft</td> 279<tr class="field"><th class="field-name">Status:</th><td class="field-body">Draft</td>
280</tr> 280</tr>
296<li><a class="reference internal" href="#problem" id="id4">Problem</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> 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> 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> 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> 300<li><a class="reference internal" href="#new-version-format" id="id8">New version format</a></li>
301</ul> 301<li><a class="reference internal" href="#use-newer-bash-features" id="id9">Use newer bash features</a></li>
302</li> 302</ul>
303</li>
303<li><a class="reference internal" href="#abstract-solution" id="id9">Abstract solution</a></li> 304<li><a class="reference internal" href="#abstract-solution" id="id10">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="#proposed-solution" id="id11">Proposed solution</a></li>
305<li><a class="reference internal" href="#specification" id="id11">Specification</a></li> 306<li><a class="reference internal" href="#specification" id="id12">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="#summary-of-ideas" id="id13">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-suffixed-ebuilds-proposed-solution" id="id14">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="#eapi-in-the-filename-with-one-time-extension-change" id="id15">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" id="id16">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="#easily-fetchable-eapi-inside-the-ebuild-and-one-time-extension-change" id="id17">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<li><a class="reference internal" href="#use-different-subdirectories-for-different-eapis-i-e-cat-pkg-eapix" id="id18">Use different subdirectories for different EAPIs, i.e. cat/pkg/eapiX/</a></li>
312</ul>
313</li> 313</ul>
314</li>
314<li><a class="reference internal" href="#references" id="id18">References</a></li> 315<li><a class="reference internal" href="#references" id="id19">References</a></li>
315<li><a class="reference internal" href="#copyright" id="id19">Copyright</a></li> 316<li><a class="reference internal" href="#copyright" id="id20">Copyright</a></li>
316</ul> 317</ul>
317</div> 318</div>
318<blockquote> 319<blockquote>
319<p>&quot;A little learning is a dangerous thing; drink deep, or taste not the Pierian 320<p>&quot;A little learning is a dangerous thing; drink deep, or taste not the Pierian
320spring: there shallow draughts intoxicate the brain, and drinking largely 321spring: there shallow draughts intoxicate the brain, and drinking largely
339eclass functionality).</li> 340eclass functionality).</li>
340<li>Add new global scope functions in any sane way.</li> 341<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<li>Extend versioning rules in an EAPI - for example, addition of the scm
342suffix - GLEP54 <a class="footnote-reference" href="#glep54" id="id1">[1]</a> or allowing more sensible version formats like 343suffix - 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<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>
345<li>Use newer bash features.</li>
344</ul> 346</ul>
345</blockquote> 347</blockquote>
346</div> 348</div>
347<div class="section" id="current-behaviour"> 349<div class="section" id="current-behaviour">
348<h1><a class="toc-backref" href="#id5">Current behaviour</a></h1> 350<h1><a class="toc-backref" href="#id5">Current behaviour</a></h1>
419 421
420emerge: there are no ebuilds to satisfy &quot;sys-apps/foo&quot; 422emerge: there are no ebuilds to satisfy &quot;sys-apps/foo&quot;
421</pre> 423</pre>
422<p>Not the best error message, especially if there are lots of them.</p> 424<p>Not the best error message, especially if there are lots of them.</p>
423</div> 425</div>
426<div class="section" id="use-newer-bash-features">
427<h2><a class="toc-backref" href="#id9">Use newer bash features</a></h2>
428<p><tt class="docutils literal"><span class="pre">|&amp;</span></tt> is a new type of redirection added in bash-4. It cannot be used even in
429local scope as bash still parses the whole ebuild.</p>
430<p><tt class="docutils literal"><span class="pre">sys-apps/foo-1.ebuild</span></tt>:</p>
431<pre class="literal-block">
432EAPI=&quot;5&quot;
433
434foo() {
435 echo &quot;foo&quot; |&amp; cat
436}
437</pre>
438<p>Result:</p>
439<pre class="literal-block">
440/var/lib/gentoo/repositories/peper/sys-apps/foo/foo-1.ebuild: line 8: syntax error near unexpected token `&amp;'
441/var/lib/gentoo/repositories/peper/sys-apps/foo/foo-1.ebuild: line 8: ` echo &quot;foo&quot; |&amp; cat'
442*
443* ERROR: sys-apps/foo-1 failed.
444* Call stack:
445* ebuild.sh, line 1879: Called _source_ebuild
446* ebuild.sh, line 1818: Called die
447* The specific snippet of code:
448* source &quot;${EBUILD}&quot; || die &quot;error sourcing ebuild&quot;
449* The die message:
450* error sourcing ebuild
451*
452* If you need support, post the topmost build error, and the call stack if relevant.
453* This ebuild is from an overlay: '/var/lib/gentoo/repositories/peper/'
454* ... done!
455
456!!! All ebuilds that could satisfy &quot;sys-apps/foo&quot; have been masked.
457!!! One of the following masked packages is required to complete your request:
458- sys-apps/foo-1 (masked by: corruption)
459</pre>
460<p>Again, not the best error.</p>
461</div>
424</div> 462</div>
425<div class="section" id="abstract-solution"> 463<div class="section" id="abstract-solution">
426<h1><a class="toc-backref" href="#id9">Abstract solution</a></h1> 464<h1><a class="toc-backref" href="#id10">Abstract solution</a></h1>
427<p>A solution to this problem has to lift those limitations and the only way to do 465<p>A solution to this problem has to lift those limitations and the only way to do
428it is to make the EAPI of an ebuild available to the package managers in a way 466it is to make the EAPI of an ebuild available to the package managers in a way
429that doesn't require them to source the ebuild. Another important requirement is 467that doesn't require them to source the ebuild. Another important requirement is
430for the solution to be backward compatible, which has the pleasant side-effect 468for the solution to be backward compatible, which has the pleasant side-effect
431of making the solution applicable in the Gentoo tree right away. Opposed to 469of making the solution applicable in the Gentoo tree right away. Opposed to
432waiting an arbitrary amount of time, which is never long enough anyway, as the 470waiting an arbitrary amount of time, which is never long enough anyway, as the
433issues listed on the common portage problems page - <a class="footnote-reference" href="#portageproblems" id="id2">[2]</a> - show.</p> 471issues listed on the common portage problems page - <a class="footnote-reference" href="#portageproblems" id="id2">[2]</a> - show.</p>
434</div> 472</div>
435<div class="section" id="proposed-solution"> 473<div class="section" id="proposed-solution">
436<h1><a class="toc-backref" href="#id10">Proposed solution</a></h1> 474<h1><a class="toc-backref" href="#id11">Proposed solution</a></h1>
437<p>The proposed solution is to use EAPI-suffixed file extensions for ebuilds. This 475<p>The proposed solution is to use EAPI-suffixed file extensions for ebuilds. This
438allows package managers to trivially read the EAPI from the ebuild filename. It 476allows package managers to trivially read the EAPI from the ebuild filename. It
439is also backwards compatible, because currently ebuilds are recognised by the 477is 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 478<tt class="docutils literal"><span class="pre">.ebuild</span></tt> file extension and hence EAPI-suffixed ebuilds are simply ignored by
441the package managers.</p> 479the package managers.</p>
442</div> 480</div>
443<div class="section" id="specification"> 481<div class="section" id="specification">
444<h1><a class="toc-backref" href="#id11">Specification</a></h1> 482<h1><a class="toc-backref" href="#id12">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 483<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
446optional part, and <tt class="docutils literal"><span class="pre">&lt;EAPI&gt;</span></tt> is the EAPI of the ebuild.</p> 484optional 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. 485<p>The EAPI used by the ebuild is the EAPI included in the filename if it is set.
448Otherwise the EAPI set inside the ebuild is used, which defaults to 0 (this is 486Otherwise the EAPI set inside the ebuild is used, which defaults to 0 (this is
449the current behaviour).</p> 487the current behaviour).</p>
478allowing authors to provide backwards compatible ebuilds, it would introduce 516allowing authors to provide backwards compatible ebuilds, it would introduce
479problems too. The first is the requirement to have strict EAPI ordering, the 517problems too. The first is the requirement to have strict EAPI ordering, the
480second is ensuring that all the ebuilds for a single category/package-version 518second is ensuring that all the ebuilds for a single category/package-version
481are equivalent, i.e. installing any of them has exactly the same effect on a 519are equivalent, i.e. installing any of them has exactly the same effect on a
482given system.</p> 520given system.</p>
521<p>Also note that it is not a new restriction. It is already possible to illegally
522have multiple versions with different EAPIs as e.g. <tt class="docutils literal"><span class="pre">1.0</span> <span class="pre">==</span> <span class="pre">1.00</span> <span class="pre">==</span> <span class="pre">1.00-r0</span></tt>
523and hence you could have <tt class="docutils literal"><span class="pre">foo-1.0.ebuild</span></tt> with EAPI X and <tt class="docutils literal"><span class="pre">foo-1.00.ebuild</span></tt>
524with EAPI Y.</p>
483</div> 525</div>
484<div class="section" id="summary-of-ideas"> 526<div class="section" id="summary-of-ideas">
485<h1><a class="toc-backref" href="#id12">Summary of ideas</a></h1> 527<h1><a class="toc-backref" href="#id13">Summary of ideas</a></h1>
486<div class="section" id="eapi-suffixed-ebuilds-proposed-solution"> 528<div class="section" id="eapi-suffixed-ebuilds-proposed-solution">
487<h2><a class="toc-backref" href="#id13">EAPI-suffixed ebuilds (proposed solution)</a></h2> 529<h2><a class="toc-backref" href="#id14">EAPI-suffixed ebuilds (proposed solution)</a></h2>
488<dl class="docutils"> 530<dl class="docutils">
489<dt>Properties:</dt> 531<dt>Properties:</dt>
490<dd><ul class="first last simple"> 532<dd><ul class="first last simple">
491<li>Can be used right away: yes</li> 533<li>Can be used right away: yes</li>
492<li>Hurts performance: no</li> 534<li>Hurts performance: no</li>
494</dd> 536</dd>
495</dl> 537</dl>
496<p>Some say it is clear and simple, others that it is ugly and unintuitive.</p> 538<p>Some say it is clear and simple, others that it is ugly and unintuitive.</p>
497</div> 539</div>
498<div class="section" id="eapi-in-the-filename-with-one-time-extension-change"> 540<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> 541<h2><a class="toc-backref" href="#id15">EAPI in the filename with one-time extension change</a></h2>
500<p>One of the proposed filename formats: 542<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> 543<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"> 544<dl class="docutils">
503<dt>Properties:</dt> 545<dt>Properties:</dt>
504<dd><ul class="first last simple"> 546<dd><ul class="first last simple">
509</dl> 551</dl>
510<p>This is equivalent to the proposed solution.</p> 552<p>This is equivalent to the proposed solution.</p>
511<p>Some say it is better because the extension is static.</p> 553<p>Some say it is better because the extension is static.</p>
512</div> 554</div>
513<div class="section" id="easily-fetchable-eapi-inside-the-ebuild"> 555<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> 556<h2><a class="toc-backref" href="#id16">Easily fetchable EAPI inside the ebuild</a></h2>
515<dl class="docutils"> 557<dl class="docutils">
516<dt>Properties:</dt> 558<dt>Properties:</dt>
517<dd><ul class="first last simple"> 559<dd><ul class="first last simple">
518<li>Can be used right away: no</li> 560<li>Can be used right away: no</li>
519<li>Hurts performance: yes</li> 561<li>Hurts performance: yes</li>
524behaviour section for old package managers.</p> 566behaviour section for old package managers.</p>
525<p>Performance decrease comes from the fact that with version format changes in the 567<p>Performance decrease comes from the fact that with version format changes in the
526picture package managers need EAPI to parse the ebuild's version. That means that merely 568picture package managers need EAPI to parse the ebuild's version. That means that merely
527picking the best version of a package requires loading EAPI (from cache or the 569picking the best version of a package requires loading EAPI (from cache or the
528ebuild) for each available ebuild.</p> 570ebuild) for each available ebuild.</p>
571<p>Here is more or less how the package manager figures out the best available
572version for a package with N versions available.</p>
573<blockquote>
574<ul class="simple">
575<li>EAPI in the filename<ul>
576<li>Read the directory containing the package - readdir()</li>
577<li>For each ebuild, read its EAPI and using that parse its version - no I/O</li>
578<li>Sort the versions - no I/O</li>
579<li>Going down from the highest to the lowest version<ul>
580<li>Get the metadata from cache - 2 x stat() + read()</li>
581<li>break if the version is visible</li>
582</ul>
583</li>
584</ul>
585</li>
586<li>EAPI in the ebuild<ul>
587<li>Read the directory containing the package - readdir()</li>
588<li>For each ebuild load its metadata from cache to get its EAPI - N x (2 x stat() + read())</li>
589<li>Sort the versions - no I/O</li>
590<li>Going down from the highest to the lowest version<ul>
591<li>(metadata is already loaded) - no I/O</li>
592<li>break if the version is visible - no I/O</li>
593</ul>
594</li>
595</ul>
596</li>
597</ul>
598</blockquote>
599<p>The difference is in for how many versions the package manager needs to hit
600cache. With EAPI in the ebuild it needs to do that for all versions, with EAPI
601in the filename it depends on versions visibility.
602For example, package foo has versions 1, 2, 3, 4, 5 and 6. 6 is masked, 5 is
603~arch and 1,2,3 and 4 are arch. Say, the user accepts only arch for this
604package. With EAPI in the filename it will read metadata only for versions
6056, 5 and 4. With EAPI in the ebuild it needs to load metadata for all versions.</p>
606<p>It's hard to say what's the avarage case, but surely the worst case scenario
607(when only the lowest version is visible) is uncommon.</p>
529</div> 608</div>
530<div class="section" id="easily-fetchable-eapi-inside-the-ebuild-and-one-time-extension-change"> 609<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> 610<h2><a class="toc-backref" href="#id17">Easily fetchable EAPI inside the ebuild and one-time extension change</a></h2>
532<dl class="docutils"> 611<dl class="docutils">
533<dt>Properties:</dt> 612<dt>Properties:</dt>
534<dd><ul class="first last simple"> 613<dd><ul class="first last simple">
535<li>Can be used right away: yes</li> 614<li>Can be used right away: yes</li>
536<li>Hurts performance: yes</li> 615<li>Hurts performance: yes</li>
540<p>Performance decrease as described in the previous section.</p> 619<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, 620<p>Some say it is clear and simple, others that it is confusing and unintuitive,
542because of the arbitrary format restrictions in what is a bash script otherwise.</p> 621because of the arbitrary format restrictions in what is a bash script otherwise.</p>
543</div> 622</div>
544<div class="section" id="use-different-subdirectories-for-different-eapis-i-e-cat-pkg-eapix"> 623<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> 624<h2><a class="toc-backref" href="#id18">Use different subdirectories for different EAPIs, i.e. cat/pkg/eapiX/</a></h2>
546<dl class="docutils"> 625<dl class="docutils">
547<dt>Properties:</dt> 626<dt>Properties:</dt>
548<dd><ul class="first last simple"> 627<dd><ul class="first last simple">
549<li>Can be used right away: yes</li> 628<li>Can be used right away: yes</li>
550<li>Hurts performance: yes</li> 629<li>Hurts performance: yes</li>
555reads.</p> 634reads.</p>
556<p>Some say that it makes it much harder for maintainers to see what they have.</p> 635<p>Some say that it makes it much harder for maintainers to see what they have.</p>
557</div> 636</div>
558</div> 637</div>
559<div class="section" id="references"> 638<div class="section" id="references">
560<h1><a class="toc-backref" href="#id18">References</a></h1> 639<h1><a class="toc-backref" href="#id19">References</a></h1>
561<table class="docutils footnote" frame="void" id="glep54" rules="none"> 640<table class="docutils footnote" frame="void" id="glep54" rules="none">
562<colgroup><col class="label" /><col /></colgroup> 641<colgroup><col class="label" /><col /></colgroup>
563<tbody valign="top"> 642<tbody valign="top">
564<tr><td class="label"><a class="fn-backref" href="#id1">[1]</a></td><td>GLEP 54, scm package version suffix 643<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> 644(<a class="reference external" href="http://glep.gentoo.org/glep-0054.html">http://glep.gentoo.org/glep-0054.html</a>)</td></tr>
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> 651(<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> 652</tbody>
574</table> 653</table>
575</div> 654</div>
576<div class="section" id="copyright"> 655<div class="section" id="copyright">
577<h1><a class="toc-backref" href="#id19">Copyright</a></h1> 656<h1><a class="toc-backref" href="#id20">Copyright</a></h1>
578<p>This document has been placed in the public domain.</p> 657<p>This document has been placed in the public domain.</p>
579<!-- vim: set tw=80 fileencoding=utf-8 spell spelllang=en et : --> 658<!-- vim: set tw=80 fileencoding=utf-8 spell spelllang=en et : -->
580</div> 659</div>
581 660
582</div> 661</div>
583<div class="footer"> 662<div class="footer">
584<hr class="footer" /> 663<hr class="footer" />
585<a class="reference external" href="glep-0055.txt">View document source</a>. 664<a class="reference external" href="glep-0055.txt">View document source</a>.
586Generated on: 2009-05-17 15:29 UTC. 665Generated on: 2009-05-17 20:42 UTC.
587Generated 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. 666Generated 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 667
589</div> 668</div>
590</body> 669</body>
591</html> 670</html>

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

  ViewVC Help
Powered by ViewVC 1.1.20