| … | |
… | |
| 2 | <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> |
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"> |
3 | <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> |
| 4 | |
4 | |
| 5 | <head> |
5 | <head> |
| 6 | <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> |
6 | <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> |
| 7 | <meta name="generator" content="Docutils 0.5: http://docutils.sourceforge.net/" /> |
7 | <meta name="generator" content="Docutils 0.6: http://docutils.sourceforge.net/" /> |
| 8 | <title>GLEP 55 -- Use EAPI-suffixed ebuilds (.ebuild-EAPI)</title> |
8 | <title>GLEP 55 -- Use EAPI-suffixed ebuilds (.ebuild-EAPI)</title> |
| 9 | <style type="text/css"> |
9 | <link rel="stylesheet" href="tools/glep.css" type="text/css" /></head> |
| 10 | |
|
|
| 11 | /* |
|
|
| 12 | :Author: David Goodger |
|
|
| 13 | :Contact: goodger@users.sourceforge.net |
|
|
| 14 | :date: $Date: 2009/05/17 20:56:53 $ |
|
|
| 15 | :version: $Revision: 1.5 $ |
|
|
| 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"> |
10 | <body bgcolor="white"> |
| 254 | <table class="navigation" cellpadding="0" cellspacing="0" |
11 | <table class="navigation" cellpadding="0" cellspacing="0" |
| 255 | width="100%" border="0"> |
12 | width="100%" border="0"> |
| 256 | <tr><td class="navicon" width="150" height="35"> |
13 | <tr><td class="navicon" width="150" height="35"> |
| 257 | <a href="http://www.gentoo.org/" title="Gentoo Linux Home Page"> |
14 | <a href="http://www.gentoo.org/" title="Gentoo Linux Home Page"> |
| … | |
… | |
| 268 | <tbody valign="top"> |
25 | <tbody valign="top"> |
| 269 | <tr class="field"><th class="field-name">GLEP:</th><td class="field-body">55</td> |
26 | <tr class="field"><th class="field-name">GLEP:</th><td class="field-body">55</td> |
| 270 | </tr> |
27 | </tr> |
| 271 | <tr class="field"><th class="field-name">Title:</th><td class="field-body">Use EAPI-suffixed ebuilds (.ebuild-EAPI)</td> |
28 | <tr class="field"><th class="field-name">Title:</th><td class="field-body">Use EAPI-suffixed ebuilds (.ebuild-EAPI)</td> |
| 272 | </tr> |
29 | </tr> |
| 273 | <tr class="field"><th class="field-name">Version:</th><td class="field-body">1.4</td> |
30 | <tr class="field"><th class="field-name">Version:</th><td class="field-body">1.5</td> |
| 274 | </tr> |
31 | </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">2009/05/17 17:00:30</a></td> |
32 | <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 20:56:53</a></td> |
| 276 | </tr> |
33 | </tr> |
| 277 | <tr class="field"><th class="field-name">Author:</th><td class="field-body">Piotr Jaroszyński <peper at gentoo.org></td> |
34 | <tr class="field"><th class="field-name">Author:</th><td class="field-body">Piotr Jaroszyński <peper at gentoo.org></td> |
| 278 | </tr> |
35 | </tr> |
| 279 | <tr class="field"><th class="field-name">Status:</th><td class="field-body">Draft</td> |
36 | <tr class="field"><th class="field-name">Status:</th><td class="field-body">Draft</td> |
| 280 | </tr> |
37 | </tr> |
| … | |
… | |
| 382 | |
139 | |
| 383 | !!! All ebuilds that could satisfy "sys-apps/foo" have been masked. |
140 | !!! All ebuilds that could satisfy "sys-apps/foo" have been masked. |
| 384 | !!! One of the following masked packages is required to complete your request: |
141 | !!! One of the following masked packages is required to complete your request: |
| 385 | - sys-apps/foo-1 (masked by: corruption) |
142 | - sys-apps/foo-1 (masked by: corruption) |
| 386 | </pre> |
143 | </pre> |
| 387 | <p>Current portage looks for eclasses only in the <tt class="docutils literal"><span class="pre">eclass</span></tt> directory of a |
144 | <p>Current portage looks for eclasses only in the <tt class="docutils literal">eclass</tt> directory of a |
| 388 | repository. This results in a fatal error and ebuild being masked by corruption |
145 | repository. This results in a fatal error and ebuild being masked by corruption |
| 389 | - might be pretty confusing to users.</p> |
146 | - might be pretty confusing to users.</p> |
| 390 | </div> |
147 | </div> |
| 391 | <div class="section" id="new-global-scope-function"> |
148 | <div class="section" id="new-global-scope-function"> |
| 392 | <h2><a class="toc-backref" href="#id7">New global scope function</a></h2> |
149 | <h2><a class="toc-backref" href="#id7">New global scope function</a></h2> |
| … | |
… | |
| 423 | </pre> |
180 | </pre> |
| 424 | <p>Not the best error message, especially if there are lots of them.</p> |
181 | <p>Not the best error message, especially if there are lots of them.</p> |
| 425 | </div> |
182 | </div> |
| 426 | <div class="section" id="use-newer-bash-features"> |
183 | <div class="section" id="use-newer-bash-features"> |
| 427 | <h2><a class="toc-backref" href="#id9">Use newer bash features</a></h2> |
184 | <h2><a class="toc-backref" href="#id9">Use newer bash features</a></h2> |
| 428 | <p><tt class="docutils literal"><span class="pre">|&</span></tt> is a new type of redirection added in bash-4. It cannot be used even in |
185 | <p><tt class="docutils literal">|&</tt> is a new type of redirection added in bash-4. It cannot be used even in |
| 429 | local scope as bash still parses the whole ebuild.</p> |
186 | local 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> |
187 | <p><tt class="docutils literal"><span class="pre">sys-apps/foo-1.ebuild</span></tt>:</p> |
| 431 | <pre class="literal-block"> |
188 | <pre class="literal-block"> |
| 432 | EAPI="5" |
189 | EAPI="5" |
| 433 | |
190 | |
| … | |
… | |
| 473 | <div class="section" id="proposed-solution"> |
230 | <div class="section" id="proposed-solution"> |
| 474 | <h1><a class="toc-backref" href="#id11">Proposed solution</a></h1> |
231 | <h1><a class="toc-backref" href="#id11">Proposed solution</a></h1> |
| 475 | <p>The proposed solution is to use EAPI-suffixed file extensions for ebuilds. This |
232 | <p>The proposed solution is to use EAPI-suffixed file extensions for ebuilds. This |
| 476 | allows package managers to trivially read the EAPI from the ebuild filename. It |
233 | allows package managers to trivially read the EAPI from the ebuild filename. It |
| 477 | is also backwards compatible, because currently ebuilds are recognised by the |
234 | is also backwards compatible, because currently ebuilds are recognised by the |
| 478 | <tt class="docutils literal"><span class="pre">.ebuild</span></tt> file extension and hence EAPI-suffixed ebuilds are simply ignored by |
235 | <tt class="docutils literal">.ebuild</tt> file extension and hence EAPI-suffixed ebuilds are simply ignored by |
| 479 | the package managers.</p> |
236 | the package managers.</p> |
| 480 | </div> |
237 | </div> |
| 481 | <div class="section" id="specification"> |
238 | <div class="section" id="specification"> |
| 482 | <h1><a class="toc-backref" href="#id12">Specification</a></h1> |
239 | <h1><a class="toc-backref" href="#id12">Specification</a></h1> |
| 483 | <p>Ebuild filename extension syntax: <tt class="docutils literal"><span class="pre">ebuild[-<EAPI>]</span></tt>, where <tt class="docutils literal"><span class="pre">[]</span></tt> denotes an |
240 | <p>Ebuild filename extension syntax: <tt class="docutils literal"><span class="pre">ebuild[-<EAPI>]</span></tt>, where <tt class="docutils literal">[]</tt> denotes an |
| 484 | optional part, and <tt class="docutils literal"><span class="pre"><EAPI></span></tt> is the EAPI of the ebuild.</p> |
241 | optional part, and <tt class="docutils literal"><EAPI></tt> is the EAPI of the ebuild.</p> |
| 485 | <p>The EAPI used by the ebuild is the EAPI included in the filename if it is set. |
242 | <p>The EAPI used by the ebuild is the EAPI included in the filename if it is set. |
| 486 | Otherwise the EAPI set inside the ebuild is used, which defaults to 0 (this is |
243 | Otherwise the EAPI set inside the ebuild is used, which defaults to 0 (this is |
| 487 | the current behaviour).</p> |
244 | the current behaviour).</p> |
| 488 | <p>Ebuilds with unsupported EAPIs are masked.</p> |
245 | <p>Ebuilds with unsupported EAPIs are masked.</p> |
| 489 | <p>It should be considered an error to set the EAPI both in the filename and in the |
246 | <p>It should be considered an error to set the EAPI both in the filename and in the |
| … | |
… | |
| 517 | problems too. The first is the requirement to have strict EAPI ordering, the |
274 | problems too. The first is the requirement to have strict EAPI ordering, the |
| 518 | second is ensuring that all the ebuilds for a single category/package-version |
275 | second is ensuring that all the ebuilds for a single category/package-version |
| 519 | are equivalent, i.e. installing any of them has exactly the same effect on a |
276 | are equivalent, i.e. installing any of them has exactly the same effect on a |
| 520 | given system.</p> |
277 | given system.</p> |
| 521 | <p>Also note that it is not a new restriction. It is already possible to illegally |
278 | <p>Also note that it is not a new restriction. It is already possible to illegally |
| 522 | have 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> |
279 | 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> |
| 523 | 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> |
280 | 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> |
| 524 | with EAPI Y.</p> |
281 | with EAPI Y.</p> |
| 525 | </div> |
282 | </div> |
| 526 | <div class="section" id="summary-of-ideas"> |
283 | <div class="section" id="summary-of-ideas"> |
| 527 | <h1><a class="toc-backref" href="#id13">Summary of ideas</a></h1> |
284 | <h1><a class="toc-backref" href="#id13">Summary of ideas</a></h1> |
| … | |
… | |
| 660 | |
417 | |
| 661 | </div> |
418 | </div> |
| 662 | <div class="footer"> |
419 | <div class="footer"> |
| 663 | <hr class="footer" /> |
420 | <hr class="footer" /> |
| 664 | <a class="reference external" href="glep-0055.txt">View document source</a>. |
421 | <a class="reference external" href="glep-0055.txt">View document source</a>. |
| 665 | Generated on: 2009-05-17 20:42 UTC. |
422 | Generated on: 2010-04-07 22:12 UTC. |
| 666 | 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. |
423 | 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. |
| 667 | |
424 | |
| 668 | </div> |
425 | </div> |
| 669 | </body> |
426 | </body> |
| 670 | </html> |
427 | </html> |