/[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.8 - (hide annotations) (download) (as text)
Wed May 9 20:01:06 2012 UTC (2 years, 4 months ago) by ulm
Branch: MAIN
CVS Tags: HEAD
Changes since 1.7: +3 -3 lines
File MIME type: text/html
Commit glep-0055.html again to update Version: and Last-Modified: fields.

1 peper 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.2
5 peper 1.1 <head>
6     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
7 ulm 1.7 <meta name="generator" content="Docutils 0.8.1: http://docutils.sourceforge.net/" />
8 peper 1.1 <title>GLEP 55 -- Use EAPI-suffixed ebuilds (.ebuild-EAPI)</title>
9 robbat2 1.6 <link rel="stylesheet" href="tools/glep.css" type="text/css" /></head>
10 peper 1.1 <body bgcolor="white">
11     <table class="navigation" cellpadding="0" cellspacing="0"
12     width="100%" border="0">
13     <tr><td class="navicon" width="150" height="35">
14     <a href="http://www.gentoo.org/" title="Gentoo Linux Home Page">
15     <img src="http://www.gentoo.org/images/gentoo-new.gif" alt="[Gentoo]"
16     border="0" width="150" height="35" /></a></td>
17     <td class="textlinks" align="left">
18     [<b><a href="http://www.gentoo.org/">Gentoo Linux Home</a></b>]
19 antarus 1.2 [<b><a href="http://www.gentoo.org/proj/en/glep">GLEP Index</a></b>]
20 peper 1.1 [<b><a href="http://www.gentoo.org/proj/en/glep/glep-0055.txt">GLEP Source</a></b>]
21     </td></tr></table>
22     <table class="rfc2822 docutils field-list" frame="void" rules="none">
23     <col class="field-name" />
24     <col class="field-body" />
25     <tbody valign="top">
26     <tr class="field"><th class="field-name">GLEP:</th><td class="field-body">55</td>
27     </tr>
28     <tr class="field"><th class="field-name">Title:</th><td class="field-body">Use EAPI-suffixed ebuilds (.ebuild-EAPI)</td>
29     </tr>
30 ulm 1.8 <tr class="field"><th class="field-name">Version:</th><td class="field-body">1.6</td>
31 peper 1.1 </tr>
32 ulm 1.8 <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">2012/05/09 19:37:01</a></td>
33 peper 1.1 </tr>
34     <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>
35     </tr>
36 ulm 1.7 <tr class="field"><th class="field-name">Status:</th><td class="field-body">Rejected</td>
37 peper 1.1 </tr>
38     <tr class="field"><th class="field-name">Type:</th><td class="field-body">Standards Track</td>
39     </tr>
40 peper 1.3 <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>
41 peper 1.1 </tr>
42     <tr class="field"><th class="field-name">Created:</th><td class="field-body">17-Dec-2007</td>
43     </tr>
44 peper 1.3 <tr class="field"><th class="field-name">Post-History:</th><td class="field-body">17-Dec-2007, 22-Dec-2007, 17-May-2009</td>
45 peper 1.1 </tr>
46     </tbody>
47     </table>
48     <hr />
49 peper 1.3 <div class="contents topic" id="contents">
50     <p class="topic-title first">Contents</p>
51 peper 1.1 <ul class="simple">
52 ulm 1.7 <li><a class="reference internal" href="#status" id="id3">Status</a></li>
53     <li><a class="reference internal" href="#abstract" id="id4">Abstract</a></li>
54     <li><a class="reference internal" href="#problem" id="id5">Problem</a></li>
55     <li><a class="reference internal" href="#current-behaviour" id="id6">Current behaviour</a><ul>
56     <li><a class="reference internal" href="#incompatible-change-of-inherit-e-g-make-it-look-in-the-package-dir-too" id="id7">Incompatible change of inherit (e.g. make it look in the package dir too)</a></li>
57     <li><a class="reference internal" href="#new-global-scope-function" id="id8">New global scope function</a></li>
58     <li><a class="reference internal" href="#new-version-format" id="id9">New version format</a></li>
59     <li><a class="reference internal" href="#use-newer-bash-features" id="id10">Use newer bash features</a></li>
60 peper 1.3 </ul>
61     </li>
62 ulm 1.7 <li><a class="reference internal" href="#abstract-solution" id="id11">Abstract solution</a></li>
63     <li><a class="reference internal" href="#proposed-solution" id="id12">Proposed solution</a></li>
64     <li><a class="reference internal" href="#specification" id="id13">Specification</a></li>
65     <li><a class="reference internal" href="#summary-of-ideas" id="id14">Summary of ideas</a><ul>
66     <li><a class="reference internal" href="#eapi-suffixed-ebuilds-proposed-solution" id="id15">EAPI-suffixed ebuilds (proposed solution)</a></li>
67     <li><a class="reference internal" href="#eapi-in-the-filename-with-one-time-extension-change" id="id16">EAPI in the filename with one-time extension change</a></li>
68     <li><a class="reference internal" href="#easily-fetchable-eapi-inside-the-ebuild" id="id17">Easily fetchable EAPI inside the ebuild</a></li>
69     <li><a class="reference internal" href="#easily-fetchable-eapi-inside-the-ebuild-and-one-time-extension-change" id="id18">Easily fetchable EAPI inside the ebuild and one-time extension change</a></li>
70     <li><a class="reference internal" href="#use-different-subdirectories-for-different-eapis-i-e-cat-pkg-eapix" id="id19">Use different subdirectories for different EAPIs, i.e. cat/pkg/eapiX/</a></li>
71 peper 1.3 </ul>
72     </li>
73 ulm 1.7 <li><a class="reference internal" href="#references" id="id20">References</a></li>
74     <li><a class="reference internal" href="#copyright" id="id21">Copyright</a></li>
75 peper 1.1 </ul>
76     </div>
77     <blockquote>
78     <p>&quot;A little learning is a dangerous thing; drink deep, or taste not the Pierian
79     spring: there shallow draughts intoxicate the brain, and drinking largely
80     sobers us again.&quot;</p>
81     <p class="attribution">&mdash;Alexander Pope, An Essay on Criticism</p>
82     </blockquote>
83 ulm 1.7 <div class="section" id="status">
84     <h1><a class="toc-backref" href="#id3">Status</a></h1>
85     <p>This GLEP was voted down by the Council in its meeting on 2010-08-23.
86     The Council rejected it again in its meeting on 2012-05-08, in favour
87     of parsing the EAPI from the bash assignment statement in ebuilds.</p>
88     </div>
89 peper 1.3 <div class="section" id="abstract">
90 ulm 1.7 <h1><a class="toc-backref" href="#id4">Abstract</a></h1>
91 peper 1.1 <p>This GLEP proposes usage of EAPI-suffixed file extensions for ebuilds (for
92     example, foo-1.2.3.ebuild-1).</p>
93     </div>
94 peper 1.3 <div class="section" id="problem">
95 ulm 1.7 <h1><a class="toc-backref" href="#id5">Problem</a></h1>
96 peper 1.1 <p>The current way of specifying the EAPI in ebuilds is flawed. In order to get the
97     EAPI the package manager needs to source the ebuild, which itself needs the EAPI
98     in the first place. Otherwise it imposes a serious limitation, namely every ebuild,
99     using any of the future EAPIs, will have to be source'able by old package
100 antarus 1.2 managers and hence there is no way to do any of the following:</p>
101 peper 1.1 <blockquote>
102     <ul class="simple">
103 antarus 1.2 <li>Change the behaviour of inherit in any way (for example, to extend or change
104 peper 1.1 eclass functionality).</li>
105     <li>Add new global scope functions in any sane way.</li>
106     <li>Extend versioning rules in an EAPI - for example, addition of the scm
107 peper 1.3 suffix - GLEP54 <a class="footnote-reference" href="#glep54" id="id1">[1]</a> or allowing more sensible version formats like
108     <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>
109 peper 1.4 <li>Use newer bash features.</li>
110 peper 1.1 </ul>
111     </blockquote>
112     </div>
113 peper 1.3 <div class="section" id="current-behaviour">
114 ulm 1.7 <h1><a class="toc-backref" href="#id6">Current behaviour</a></h1>
115 peper 1.3 <p>Following subsections show what happens if you introduce any of the mentioned
116     changes in an ebuild and try to install it with portage 2.1.6.13.</p>
117     <div class="section" id="incompatible-change-of-inherit-e-g-make-it-look-in-the-package-dir-too">
118 ulm 1.7 <h2><a class="toc-backref" href="#id7">Incompatible change of inherit (e.g. make it look in the package dir too)</a></h2>
119 peper 1.3 <p><tt class="docutils literal"><span class="pre">sys-apps/foo-1.ebuild</span></tt>:</p>
120     <pre class="literal-block">
121     EAPI=&quot;5&quot;
122     inherit &quot;foo&quot;
123    
124     DESCRIPTION=&quot;&quot;
125     HOMEPAGE=&quot;&quot;
126     SRC_URI=&quot;&quot;
127     ...
128     </pre>
129     <p>Result:</p>
130     <pre class="literal-block">
131     *
132     * ERROR: sys-apps/foo-1 failed.
133     * Call stack:
134     * ebuild.sh, line 1879: Called _source_ebuild
135     * ebuild.sh, line 1818: Called source '/var/lib/gentoo/repositories/peper/sys-apps/foo/foo-1.ebuild'
136     * foo-1.ebuild, line 6: Called inherit 'foo'
137     * ebuild.sh, line 1218: Called die
138     * The specific snippet of code:
139     * [ ! -e &quot;$location&quot; ] &amp;&amp; die &quot;${1}.eclass could not be found by inherit()&quot;
140     * The die message:
141     * foo.eclass could not be found by inherit()
142     *
143     * If you need support, post the topmost build error, and the call stack if relevant.
144     * This ebuild is from an overlay: '/var/lib/gentoo/repositories/peper/'
145     *
146    
147     !!! All ebuilds that could satisfy &quot;sys-apps/foo&quot; have been masked.
148     !!! One of the following masked packages is required to complete your request:
149     - sys-apps/foo-1 (masked by: corruption)
150     </pre>
151 robbat2 1.6 <p>Current portage looks for eclasses only in the <tt class="docutils literal">eclass</tt> directory of a
152 peper 1.3 repository. This results in a fatal error and ebuild being masked by corruption
153     - might be pretty confusing to users.</p>
154     </div>
155     <div class="section" id="new-global-scope-function">
156 ulm 1.7 <h2><a class="toc-backref" href="#id8">New global scope function</a></h2>
157 peper 1.3 <p><tt class="docutils literal"><span class="pre">sys-apps/foo-1.ebuild</span></tt>:</p>
158     <pre class="literal-block">
159     EAPI=&quot;5&quot;
160     new_global_scope_function &quot;foo&quot;
161    
162     DESCRIPTION=&quot;&quot;
163     HOMEPAGE=&quot;&quot;
164     SRC_URI=&quot;&quot;
165     ...
166     </pre>
167     <p>Result:</p>
168     <pre class="literal-block">
169     /var/lib/gentoo/repositories/peper/sys-apps/foo/foo-1.ebuild: line 7: new_global_scope_function: command not found
170    
171     !!! All ebuilds that could satisfy &quot;sys-apps/foo&quot; have been masked.
172     !!! One of the following masked packages is required to complete your request:
173     - sys-apps/foo-1 (masked by: EAPI 5)
174    
175     The current version of portage supports EAPI '2'. You must upgrade to a
176     newer version of portage before EAPI masked packages can be installed.
177     </pre>
178     <p>Not that bad as user is advised to upgrade portage.</p>
179     </div>
180     <div class="section" id="new-version-format">
181 ulm 1.7 <h2><a class="toc-backref" href="#id9">New version format</a></h2>
182 peper 1.3 <p><tt class="docutils literal"><span class="pre">sys-apps/foo-2-rc1.ebuild</span></tt>:</p>
183     <pre class="literal-block">
184     Invalid ebuild name: /var/lib/gentoo/repositories/peper/sys-apps/foo/foo-2-rc1.ebuild
185    
186     emerge: there are no ebuilds to satisfy &quot;sys-apps/foo&quot;
187     </pre>
188     <p>Not the best error message, especially if there are lots of them.</p>
189     </div>
190 peper 1.4 <div class="section" id="use-newer-bash-features">
191 ulm 1.7 <h2><a class="toc-backref" href="#id10">Use newer bash features</a></h2>
192 robbat2 1.6 <p><tt class="docutils literal">|&amp;</tt> is a new type of redirection added in bash-4. It cannot be used even in
193 peper 1.4 local scope as bash still parses the whole ebuild.</p>
194     <p><tt class="docutils literal"><span class="pre">sys-apps/foo-1.ebuild</span></tt>:</p>
195     <pre class="literal-block">
196     EAPI=&quot;5&quot;
197    
198     foo() {
199     echo &quot;foo&quot; |&amp; cat
200     }
201     </pre>
202     <p>Result:</p>
203     <pre class="literal-block">
204     /var/lib/gentoo/repositories/peper/sys-apps/foo/foo-1.ebuild: line 8: syntax error near unexpected token `&amp;'
205     /var/lib/gentoo/repositories/peper/sys-apps/foo/foo-1.ebuild: line 8: ` echo &quot;foo&quot; |&amp; cat'
206     *
207     * ERROR: sys-apps/foo-1 failed.
208     * Call stack:
209     * ebuild.sh, line 1879: Called _source_ebuild
210     * ebuild.sh, line 1818: Called die
211     * The specific snippet of code:
212     * source &quot;${EBUILD}&quot; || die &quot;error sourcing ebuild&quot;
213     * The die message:
214     * error sourcing ebuild
215     *
216     * If you need support, post the topmost build error, and the call stack if relevant.
217     * This ebuild is from an overlay: '/var/lib/gentoo/repositories/peper/'
218     * ... done!
219    
220     !!! All ebuilds that could satisfy &quot;sys-apps/foo&quot; have been masked.
221     !!! One of the following masked packages is required to complete your request:
222     - sys-apps/foo-1 (masked by: corruption)
223     </pre>
224     <p>Again, not the best error.</p>
225     </div>
226 peper 1.3 </div>
227     <div class="section" id="abstract-solution">
228 ulm 1.7 <h1><a class="toc-backref" href="#id11">Abstract solution</a></h1>
229 peper 1.1 <p>A solution to this problem has to lift those limitations and the only way to do
230     it is to make the EAPI of an ebuild available to the package managers in a way
231     that doesn't require them to source the ebuild. Another important requirement is
232     for the solution to be backward compatible, which has the pleasant side-effect
233     of making the solution applicable in the Gentoo tree right away. Opposed to
234     waiting an arbitrary amount of time, which is never long enough anyway, as the
235 peper 1.3 issues listed on the common portage problems page - <a class="footnote-reference" href="#portageproblems" id="id2">[2]</a> - show.</p>
236 peper 1.1 </div>
237 peper 1.3 <div class="section" id="proposed-solution">
238 ulm 1.7 <h1><a class="toc-backref" href="#id12">Proposed solution</a></h1>
239 peper 1.1 <p>The proposed solution is to use EAPI-suffixed file extensions for ebuilds. This
240     allows package managers to trivially read the EAPI from the ebuild filename. It
241 antarus 1.2 is also backwards compatible, because currently ebuilds are recognised by the
242 robbat2 1.6 <tt class="docutils literal">.ebuild</tt> file extension and hence EAPI-suffixed ebuilds are simply ignored by
243 peper 1.1 the package managers.</p>
244     </div>
245 peper 1.3 <div class="section" id="specification">
246 ulm 1.7 <h1><a class="toc-backref" href="#id13">Specification</a></h1>
247 robbat2 1.6 <p>Ebuild filename extension syntax: <tt class="docutils literal"><span class="pre">ebuild[-&lt;EAPI&gt;]</span></tt>, where <tt class="docutils literal">[]</tt> denotes an
248     optional part, and <tt class="docutils literal">&lt;EAPI&gt;</tt> is the EAPI of the ebuild.</p>
249 peper 1.3 <p>The EAPI used by the ebuild is the EAPI included in the filename if it is set.
250     Otherwise the EAPI set inside the ebuild is used, which defaults to 0 (this is
251     the current behaviour).</p>
252 peper 1.1 <p>Ebuilds with unsupported EAPIs are masked.</p>
253 peper 1.3 <p>It should be considered an error to set the EAPI both in the filename and in the
254     ebuild.</p>
255 peper 1.1 <p>Examples:</p>
256     <blockquote>
257     <ul>
258     <li><dl class="first docutils">
259     <dt><tt class="docutils literal"><span class="pre">pkg-1.ebuild</span></tt>, no EAPI set inside the ebuild</dt>
260 peper 1.3 <dd><p class="first last">EAPI defaults to 0.</p>
261 peper 1.1 </dd>
262     </dl>
263     </li>
264     <li><dl class="first docutils">
265     <dt><tt class="docutils literal"><span class="pre">pkg-2.ebuild-1</span></tt>, no EAPI set inside the ebuild</dt>
266 peper 1.3 <dd><p class="first last">EAPI 1 is used.</p>
267 peper 1.1 </dd>
268     </dl>
269     </li>
270     <li><dl class="first docutils">
271 peper 1.3 <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>
272     <dd><p class="first last">EAPI set in both places - error.</p>
273 peper 1.1 </dd>
274     </dl>
275     </li>
276     </ul>
277     </blockquote>
278     <p>Note that it is still not permitted to have more than one ebuild with equal
279     category, package name, and version. Although it would have the advantage of
280 antarus 1.2 allowing authors to provide backwards compatible ebuilds, it would introduce
281     problems too. The first is the requirement to have strict EAPI ordering, the
282     second is ensuring that all the ebuilds for a single category/package-version
283     are equivalent, i.e. installing any of them has exactly the same effect on a
284     given system.</p>
285 peper 1.5 <p>Also note that it is not a new restriction. It is already possible to illegally
286 robbat2 1.6 have multiple versions with different EAPIs as e.g. <tt class="docutils literal">1.0 == 1.00 == <span class="pre">1.00-r0</span></tt>
287 peper 1.5 and 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>
288     with EAPI Y.</p>
289 peper 1.1 </div>
290 peper 1.3 <div class="section" id="summary-of-ideas">
291 ulm 1.7 <h1><a class="toc-backref" href="#id14">Summary of ideas</a></h1>
292 peper 1.3 <div class="section" id="eapi-suffixed-ebuilds-proposed-solution">
293 ulm 1.7 <h2><a class="toc-backref" href="#id15">EAPI-suffixed ebuilds (proposed solution)</a></h2>
294 peper 1.3 <dl class="docutils">
295     <dt>Properties:</dt>
296     <dd><ul class="first last simple">
297     <li>Can be used right away: yes</li>
298     <li>Hurts performance: no</li>
299     </ul>
300     </dd>
301     </dl>
302     <p>Some say it is clear and simple, others that it is ugly and unintuitive.</p>
303     </div>
304     <div class="section" id="eapi-in-the-filename-with-one-time-extension-change">
305 ulm 1.7 <h2><a class="toc-backref" href="#id16">EAPI in the filename with one-time extension change</a></h2>
306 peper 1.3 <p>One of the proposed filename formats:
307     <tt class="docutils literal"><span class="pre">&lt;PKG&gt;-&lt;VER&gt;.eapi-&lt;EAPI&gt;.eb</span></tt></p>
308     <dl class="docutils">
309     <dt>Properties:</dt>
310 peper 1.1 <dd><ul class="first last simple">
311 peper 1.3 <li>Can be used right away: yes</li>
312     <li>Hurts performance: no</li>
313 peper 1.1 </ul>
314     </dd>
315     </dl>
316 peper 1.3 <p>This is equivalent to the proposed solution.</p>
317     <p>Some say it is better because the extension is static.</p>
318     </div>
319     <div class="section" id="easily-fetchable-eapi-inside-the-ebuild">
320 ulm 1.7 <h2><a class="toc-backref" href="#id17">Easily fetchable EAPI inside the ebuild</a></h2>
321 peper 1.3 <dl class="docutils">
322     <dt>Properties:</dt>
323 peper 1.1 <dd><ul class="first last simple">
324 peper 1.3 <li>Can be used right away: no</li>
325     <li>Hurts performance: yes</li>
326 peper 1.1 </ul>
327     </dd>
328     </dl>
329 peper 1.3 <p>Cannot be used right away as it would trigger the errors shown in Current
330     behaviour section for old package managers.</p>
331     <p>Performance decrease comes from the fact that with version format changes in the
332     picture package managers need EAPI to parse the ebuild's version. That means that merely
333     picking the best version of a package requires loading EAPI (from cache or the
334     ebuild) for each available ebuild.</p>
335 peper 1.5 <p>Here is more or less how the package manager figures out the best available
336     version for a package with N versions available.</p>
337     <blockquote>
338     <ul class="simple">
339     <li>EAPI in the filename<ul>
340     <li>Read the directory containing the package - readdir()</li>
341     <li>For each ebuild, read its EAPI and using that parse its version - no I/O</li>
342     <li>Sort the versions - no I/O</li>
343     <li>Going down from the highest to the lowest version<ul>
344     <li>Get the metadata from cache - 2 x stat() + read()</li>
345     <li>break if the version is visible</li>
346     </ul>
347     </li>
348     </ul>
349     </li>
350     <li>EAPI in the ebuild<ul>
351     <li>Read the directory containing the package - readdir()</li>
352     <li>For each ebuild load its metadata from cache to get its EAPI - N x (2 x stat() + read())</li>
353     <li>Sort the versions - no I/O</li>
354     <li>Going down from the highest to the lowest version<ul>
355     <li>(metadata is already loaded) - no I/O</li>
356     <li>break if the version is visible - no I/O</li>
357     </ul>
358     </li>
359     </ul>
360     </li>
361     </ul>
362     </blockquote>
363     <p>The difference is in for how many versions the package manager needs to hit
364     cache. With EAPI in the ebuild it needs to do that for all versions, with EAPI
365     in the filename it depends on versions visibility.
366     For example, package foo has versions 1, 2, 3, 4, 5 and 6. 6 is masked, 5 is
367     ~arch and 1,2,3 and 4 are arch. Say, the user accepts only arch for this
368     package. With EAPI in the filename it will read metadata only for versions
369     6, 5 and 4. With EAPI in the ebuild it needs to load metadata for all versions.</p>
370     <p>It's hard to say what's the avarage case, but surely the worst case scenario
371     (when only the lowest version is visible) is uncommon.</p>
372 peper 1.3 </div>
373     <div class="section" id="easily-fetchable-eapi-inside-the-ebuild-and-one-time-extension-change">
374 ulm 1.7 <h2><a class="toc-backref" href="#id18">Easily fetchable EAPI inside the ebuild and one-time extension change</a></h2>
375 peper 1.3 <dl class="docutils">
376     <dt>Properties:</dt>
377 peper 1.1 <dd><ul class="first last simple">
378 peper 1.3 <li>Can be used right away: yes</li>
379     <li>Hurts performance: yes</li>
380 peper 1.1 </ul>
381     </dd>
382     </dl>
383 peper 1.3 <p>Performance decrease as described in the previous section.</p>
384     <p>Some say it is clear and simple, others that it is confusing and unintuitive,
385     because of the arbitrary format restrictions in what is a bash script otherwise.</p>
386     </div>
387     <div class="section" id="use-different-subdirectories-for-different-eapis-i-e-cat-pkg-eapix">
388 ulm 1.7 <h2><a class="toc-backref" href="#id19">Use different subdirectories for different EAPIs, i.e. cat/pkg/eapiX/</a></h2>
389 peper 1.3 <dl class="docutils">
390     <dt>Properties:</dt>
391     <dd><ul class="first last simple">
392     <li>Can be used right away: yes</li>
393     <li>Hurts performance: yes</li>
394 peper 1.1 </ul>
395 peper 1.3 </dd>
396     </dl>
397     <p>Performance decrease comes from the fact that it adds several more directory
398     reads.</p>
399     <p>Some say that it makes it much harder for maintainers to see what they have.</p>
400     </div>
401 peper 1.1 </div>
402 peper 1.3 <div class="section" id="references">
403 ulm 1.7 <h1><a class="toc-backref" href="#id20">References</a></h1>
404 peper 1.1 <table class="docutils footnote" frame="void" id="glep54" rules="none">
405     <colgroup><col class="label" /><col /></colgroup>
406     <tbody valign="top">
407 peper 1.3 <tr><td class="label"><a class="fn-backref" href="#id1">[1]</a></td><td>GLEP 54, scm package version suffix
408     (<a class="reference external" href="http://glep.gentoo.org/glep-0054.html">http://glep.gentoo.org/glep-0054.html</a>)</td></tr>
409 peper 1.1 </tbody>
410     </table>
411     <table class="docutils footnote" frame="void" id="portageproblems" rules="none">
412     <colgroup><col class="label" /><col /></colgroup>
413     <tbody valign="top">
414 peper 1.3 <tr><td class="label"><a class="fn-backref" href="#id2">[2]</a></td><td>Common portage problems
415     (<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>
416 peper 1.1 </tbody>
417     </table>
418     </div>
419 peper 1.3 <div class="section" id="copyright">
420 ulm 1.7 <h1><a class="toc-backref" href="#id21">Copyright</a></h1>
421 peper 1.1 <p>This document has been placed in the public domain.</p>
422     <!-- vim: set tw=80 fileencoding=utf-8 spell spelllang=en et : -->
423     </div>
424    
425     </div>
426     <div class="footer">
427     <hr class="footer" />
428 peper 1.3 <a class="reference external" href="glep-0055.txt">View document source</a>.
429 ulm 1.8 Generated on: 2012-05-09 20:00 UTC.
430 peper 1.3 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.
431 peper 1.1
432     </div>
433     </body>
434     </html>

  ViewVC Help
Powered by ViewVC 1.1.20