| 1 | <?xml version="1.0" encoding="utf-8" ?> |
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"> |
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 | This HTML is auto-generated. DO NOT EDIT THIS FILE! If you are writing a new |
|
|
| 6 | PEP, see http://www.python.org/peps/pep-0001.html for instructions and links |
|
|
| 7 | to templates. DO NOT USE THIS HTML FILE AS YOUR TEMPLATE! |
|
|
| 8 | --> |
|
|
| 9 | <head> |
5 | <head> |
| 10 | <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> |
6 | <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> |
| 11 | <meta name="generator" content="Docutils 0.4: http://docutils.sourceforge.net/" /> |
7 | <meta name="generator" content="Docutils 0.6: http://docutils.sourceforge.net/" /> |
| 12 | <title>GLEP 33 -- Eclass Restructure/Redesign</title> |
8 | <title>GLEP 33 -- Eclass Restructure/Redesign</title> |
| 13 | <style type="text/css"> |
9 | <link rel="stylesheet" href="tools/glep.css" type="text/css" /></head> |
| 14 | |
|
|
| 15 | /* |
|
|
| 16 | :Author: David Goodger |
|
|
| 17 | :Contact: goodger@users.sourceforge.net |
|
|
| 18 | :date: $Date: 2006/10/10 20:25:14 $ |
|
|
| 19 | :version: $Revision: 1.6 $ |
|
|
| 20 | :copyright: This stylesheet has been placed in the public domain. |
|
|
| 21 | |
|
|
| 22 | Default cascading style sheet for the PEP HTML output of Docutils. |
|
|
| 23 | */ |
|
|
| 24 | |
|
|
| 25 | .first { |
|
|
| 26 | margin-top: 0 } |
|
|
| 27 | |
|
|
| 28 | .last { |
|
|
| 29 | margin-bottom: 0 } |
|
|
| 30 | |
|
|
| 31 | .navigation { |
|
|
| 32 | width: 100% ; |
|
|
| 33 | background: #cc99ff ; |
|
|
| 34 | margin-top: 0px ; |
|
|
| 35 | margin-bottom: 0px } |
|
|
| 36 | |
|
|
| 37 | .navigation .navicon { |
|
|
| 38 | width: 150px ; |
|
|
| 39 | height: 35px } |
|
|
| 40 | |
|
|
| 41 | .navigation .textlinks { |
|
|
| 42 | padding-left: 1em ; |
|
|
| 43 | text-align: left } |
|
|
| 44 | |
|
|
| 45 | .navigation td, .navigation th { |
|
|
| 46 | padding-left: 0em ; |
|
|
| 47 | padding-right: 0em ; |
|
|
| 48 | vertical-align: middle } |
|
|
| 49 | |
|
|
| 50 | .rfc2822 { |
|
|
| 51 | margin-top: 0.5em ; |
|
|
| 52 | margin-left: 0.5em ; |
|
|
| 53 | margin-right: 0.5em ; |
|
|
| 54 | margin-bottom: 0em } |
|
|
| 55 | |
|
|
| 56 | .rfc2822 td { |
|
|
| 57 | text-align: left } |
|
|
| 58 | |
|
|
| 59 | .rfc2822 th.field-name { |
|
|
| 60 | text-align: right ; |
|
|
| 61 | font-family: sans-serif ; |
|
|
| 62 | padding-right: 0.5em ; |
|
|
| 63 | font-weight: bold ; |
|
|
| 64 | margin-bottom: 0em } |
|
|
| 65 | |
|
|
| 66 | a.toc-backref { |
|
|
| 67 | text-decoration: none ; |
|
|
| 68 | color: black } |
|
|
| 69 | |
|
|
| 70 | body { |
|
|
| 71 | margin: 0px ; |
|
|
| 72 | margin-bottom: 1em ; |
|
|
| 73 | padding: 0px } |
|
|
| 74 | |
|
|
| 75 | dd { |
|
|
| 76 | margin-bottom: 0.5em } |
|
|
| 77 | |
|
|
| 78 | div.section { |
|
|
| 79 | margin-left: 1em ; |
|
|
| 80 | margin-right: 1em ; |
|
|
| 81 | margin-bottom: 1.5em } |
|
|
| 82 | |
|
|
| 83 | div.section div.section { |
|
|
| 84 | margin-left: 0em ; |
|
|
| 85 | margin-right: 0em ; |
|
|
| 86 | margin-top: 1.5em } |
|
|
| 87 | |
|
|
| 88 | div.abstract { |
|
|
| 89 | margin: 2em 5em } |
|
|
| 90 | |
|
|
| 91 | div.abstract p.topic-title { |
|
|
| 92 | font-weight: bold ; |
|
|
| 93 | text-align: center } |
|
|
| 94 | |
|
|
| 95 | div.attention, div.caution, div.danger, div.error, div.hint, |
|
|
| 96 | div.important, div.note, div.tip, div.warning { |
|
|
| 97 | margin: 2em ; |
|
|
| 98 | border: medium outset ; |
|
|
| 99 | padding: 1em } |
|
|
| 100 | |
|
|
| 101 | div.attention p.admonition-title, div.caution p.admonition-title, |
|
|
| 102 | div.danger p.admonition-title, div.error p.admonition-title, |
|
|
| 103 | div.warning p.admonition-title { |
|
|
| 104 | color: red ; |
|
|
| 105 | font-weight: bold ; |
|
|
| 106 | font-family: sans-serif } |
|
|
| 107 | |
|
|
| 108 | div.hint p.admonition-title, div.important p.admonition-title, |
|
|
| 109 | div.note p.admonition-title, div.tip p.admonition-title { |
|
|
| 110 | font-weight: bold ; |
|
|
| 111 | font-family: sans-serif } |
|
|
| 112 | |
|
|
| 113 | div.figure { |
|
|
| 114 | margin-left: 2em } |
|
|
| 115 | |
|
|
| 116 | div.footer, div.header { |
|
|
| 117 | font-size: smaller } |
|
|
| 118 | |
|
|
| 119 | div.footer { |
|
|
| 120 | margin-left: 1em ; |
|
|
| 121 | margin-right: 1em } |
|
|
| 122 | |
|
|
| 123 | div.system-messages { |
|
|
| 124 | margin: 5em } |
|
|
| 125 | |
|
|
| 126 | div.system-messages h1 { |
|
|
| 127 | color: red } |
|
|
| 128 | |
|
|
| 129 | div.system-message { |
|
|
| 130 | border: medium outset ; |
|
|
| 131 | padding: 1em } |
|
|
| 132 | |
|
|
| 133 | div.system-message p.system-message-title { |
|
|
| 134 | color: red ; |
|
|
| 135 | font-weight: bold } |
|
|
| 136 | |
|
|
| 137 | div.topic { |
|
|
| 138 | margin: 2em } |
|
|
| 139 | |
|
|
| 140 | h1 { |
|
|
| 141 | font-family: sans-serif ; |
|
|
| 142 | font-size: large } |
|
|
| 143 | |
|
|
| 144 | h2 { |
|
|
| 145 | font-family: sans-serif ; |
|
|
| 146 | font-size: medium } |
|
|
| 147 | |
|
|
| 148 | h3 { |
|
|
| 149 | font-family: sans-serif ; |
|
|
| 150 | font-size: small } |
|
|
| 151 | |
|
|
| 152 | h4 { |
|
|
| 153 | font-family: sans-serif ; |
|
|
| 154 | font-style: italic ; |
|
|
| 155 | font-size: small } |
|
|
| 156 | |
|
|
| 157 | h5 { |
|
|
| 158 | font-family: sans-serif; |
|
|
| 159 | font-size: x-small } |
|
|
| 160 | |
|
|
| 161 | h6 { |
|
|
| 162 | font-family: sans-serif; |
|
|
| 163 | font-style: italic ; |
|
|
| 164 | font-size: x-small } |
|
|
| 165 | |
|
|
| 166 | .section hr { |
|
|
| 167 | width: 75% } |
|
|
| 168 | |
|
|
| 169 | ol.simple, ul.simple { |
|
|
| 170 | margin-bottom: 1em } |
|
|
| 171 | |
|
|
| 172 | ol.arabic { |
|
|
| 173 | list-style: decimal } |
|
|
| 174 | |
|
|
| 175 | ol.loweralpha { |
|
|
| 176 | list-style: lower-alpha } |
|
|
| 177 | |
|
|
| 178 | ol.upperalpha { |
|
|
| 179 | list-style: upper-alpha } |
|
|
| 180 | |
|
|
| 181 | ol.lowerroman { |
|
|
| 182 | list-style: lower-roman } |
|
|
| 183 | |
|
|
| 184 | ol.upperroman { |
|
|
| 185 | list-style: upper-roman } |
|
|
| 186 | |
|
|
| 187 | p.caption { |
|
|
| 188 | font-style: italic } |
|
|
| 189 | |
|
|
| 190 | p.credits { |
|
|
| 191 | font-style: italic ; |
|
|
| 192 | font-size: smaller } |
|
|
| 193 | |
|
|
| 194 | p.label { |
|
|
| 195 | white-space: nowrap } |
|
|
| 196 | |
|
|
| 197 | p.topic-title { |
|
|
| 198 | font-family: sans-serif ; |
|
|
| 199 | font-weight: bold } |
|
|
| 200 | |
|
|
| 201 | pre.line-block { |
|
|
| 202 | font-family: serif ; |
|
|
| 203 | font-size: 100% } |
|
|
| 204 | |
|
|
| 205 | pre.literal-block, pre.doctest-block { |
|
|
| 206 | margin-left: 2em ; |
|
|
| 207 | margin-right: 2em ; |
|
|
| 208 | background-color: #eeeeee } |
|
|
| 209 | |
|
|
| 210 | span.classifier { |
|
|
| 211 | font-family: sans-serif ; |
|
|
| 212 | font-style: oblique } |
|
|
| 213 | |
|
|
| 214 | span.classifier-delimiter { |
|
|
| 215 | font-family: sans-serif ; |
|
|
| 216 | font-weight: bold } |
|
|
| 217 | |
|
|
| 218 | span.interpreted { |
|
|
| 219 | font-family: sans-serif } |
|
|
| 220 | |
|
|
| 221 | span.option-argument { |
|
|
| 222 | font-style: italic } |
|
|
| 223 | |
|
|
| 224 | span.pre { |
|
|
| 225 | white-space: pre } |
|
|
| 226 | |
|
|
| 227 | span.problematic { |
|
|
| 228 | color: red } |
|
|
| 229 | |
|
|
| 230 | table { |
|
|
| 231 | margin-top: 0.5em ; |
|
|
| 232 | margin-bottom: 0.5em } |
|
|
| 233 | |
|
|
| 234 | td, th { |
|
|
| 235 | padding-left: 0.5em ; |
|
|
| 236 | padding-right: 0.5em ; |
|
|
| 237 | vertical-align: top } |
|
|
| 238 | |
|
|
| 239 | td.num { |
|
|
| 240 | text-align: right } |
|
|
| 241 | |
|
|
| 242 | th.field-name { |
|
|
| 243 | font-weight: bold ; |
|
|
| 244 | text-align: left ; |
|
|
| 245 | white-space: nowrap } |
|
|
| 246 | |
|
|
| 247 | h1 tt, h2 tt, h3 tt, h4 tt, h5 tt, h6 tt { |
|
|
| 248 | font-size: 100% } |
|
|
| 249 | |
|
|
| 250 | tt { |
|
|
| 251 | background-color: #eeeeee } |
|
|
| 252 | |
|
|
| 253 | ul.auto-toc { |
|
|
| 254 | list-style-type: none } |
|
|
| 255 | |
|
|
| 256 | </style> |
|
|
| 257 | </head> |
|
|
| 258 | <body bgcolor="white"> |
10 | <body bgcolor="white"> |
| 259 | <table class="navigation" cellpadding="0" cellspacing="0" |
11 | <table class="navigation" cellpadding="0" cellspacing="0" |
| 260 | width="100%" border="0"> |
12 | width="100%" border="0"> |
| 261 | <tr><td class="navicon" width="150" height="35"> |
13 | <tr><td class="navicon" width="150" height="35"> |
| 262 | <a href="http://www.gentoo.org/" title="Gentoo Linux Home Page"> |
14 | <a href="http://www.gentoo.org/" title="Gentoo Linux Home Page"> |
| 263 | <img src="http://www.gentoo.org/images/gentoo-new.gif" alt="[Gentoo]" |
15 | <img src="http://www.gentoo.org/images/gentoo-new.gif" alt="[Gentoo]" |
| 264 | border="0" width="150" height="35" /></a></td> |
16 | border="0" width="150" height="35" /></a></td> |
| 265 | <td class="textlinks" align="left"> |
17 | <td class="textlinks" align="left"> |
| 266 | [<b><a href="http://www.gentoo.org/">Gentoo Linux Home</a></b>] |
18 | [<b><a href="http://www.gentoo.org/">Gentoo Linux Home</a></b>] |
| 267 | [<b><a href="http://www.gentoo.org/peps">GLEP Index</a></b>] |
19 | [<b><a href="http://www.gentoo.org/proj/en/glep">GLEP Index</a></b>] |
| 268 | [<b><a href="http://www.gentoo.org/proj/en/glep/glep-0033.txt">GLEP Source</a></b>] |
20 | [<b><a href="http://www.gentoo.org/proj/en/glep/glep-0033.txt">GLEP Source</a></b>] |
| 269 | </td></tr></table> |
21 | </td></tr></table> |
| 270 | <table class="rfc2822 docutils field-list" frame="void" rules="none"> |
22 | <table class="rfc2822 docutils field-list" frame="void" rules="none"> |
| 271 | <col class="field-name" /> |
23 | <col class="field-name" /> |
| 272 | <col class="field-body" /> |
24 | <col class="field-body" /> |
| 273 | <tbody valign="top"> |
25 | <tbody valign="top"> |
| 274 | <tr class="field"><th class="field-name">GLEP:</th><td class="field-body">33</td> |
26 | <tr class="field"><th class="field-name">GLEP:</th><td class="field-body">33</td> |
| 275 | </tr> |
27 | </tr> |
| 276 | <tr class="field"><th class="field-name">Title:</th><td class="field-body">Eclass Restructure/Redesign</td> |
28 | <tr class="field"><th class="field-name">Title:</th><td class="field-body">Eclass Restructure/Redesign</td> |
| 277 | </tr> |
29 | </tr> |
| 278 | <tr class="field"><th class="field-name">Version:</th><td class="field-body">1.6</td> |
30 | <tr class="field"><th class="field-name">Version:</th><td class="field-body">1.8</td> |
| 279 | </tr> |
31 | </tr> |
| 280 | <tr class="field"><th class="field-name">Last-Modified:</th><td class="field-body"><a class="reference" href="http://www.gentoo.org/cgi-bin/viewcvs.cgi/xml/htdocs/proj/en/glep/glep-0033.txt?cvsroot=gentoo">2006/09/05 20:54: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-0033.txt?cvsroot=gentoo">2010/04/07 22:04:02</a></td> |
| 281 | </tr> |
33 | </tr> |
| 282 | <tr class="field"><th class="field-name">Author:</th><td class="field-body">Brian Harring <ferringb at gentoo.org>, John Mylchreest <johnm at gentoo.org></td> |
34 | <tr class="field"><th class="field-name">Author:</th><td class="field-body">Brian Harring <ferringb at gentoo.org>, John Mylchreest <johnm at gentoo.org></td> |
| 283 | </tr> |
35 | </tr> |
| 284 | <tr class="field"><th class="field-name">Status:</th><td class="field-body">Moribund</td> |
36 | <tr class="field"><th class="field-name">Status:</th><td class="field-body">Moribund</td> |
| 285 | </tr> |
37 | </tr> |
| 286 | <tr class="field"><th class="field-name">Type:</th><td class="field-body">Standards Track</td> |
38 | <tr class="field"><th class="field-name">Type:</th><td class="field-body">Standards Track</td> |
| 287 | </tr> |
39 | </tr> |
| 288 | <tr class="field"><th class="field-name">Content-Type:</th><td class="field-body"><a class="reference" href="glep-0002.html">text/x-rst</a></td> |
40 | <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> |
| 289 | </tr> |
41 | </tr> |
| 290 | <tr class="field"><th class="field-name">Created:</th><td class="field-body">29-Jan-2005</td> |
42 | <tr class="field"><th class="field-name">Created:</th><td class="field-body">29-Jan-2005</td> |
| 291 | </tr> |
43 | </tr> |
| 292 | <tr class="field"><th class="field-name">Post-History:</th><td class="field-body">29-Jan-2005 6-Mar-2005 15-Sep-2005 5-Sep-2006</td> |
44 | <tr class="field"><th class="field-name">Post-History:</th><td class="field-body">29-Jan-2005 6-Mar-2005 15-Sep-2005 5-Sep-2006</td> |
| 293 | </tr> |
45 | </tr> |
| 294 | </tbody> |
46 | </tbody> |
| 295 | </table> |
47 | </table> |
| 296 | <hr /> |
48 | <hr /> |
| 297 | <div class="contents topic"> |
49 | <div class="contents topic" id="contents"> |
| 298 | <p class="topic-title first"><a id="contents" name="contents">Contents</a></p> |
50 | <p class="topic-title first">Contents</p> |
| 299 | <ul class="simple"> |
51 | <ul class="simple"> |
| 300 | <li><a class="reference" href="#status" id="id2" name="id2">Status</a></li> |
52 | <li><a class="reference internal" href="#status" id="id2">Status</a></li> |
| 301 | <li><a class="reference" href="#abstract" id="id3" name="id3">Abstract</a></li> |
53 | <li><a class="reference internal" href="#abstract" id="id3">Abstract</a></li> |
| 302 | <li><a class="reference" href="#terminology" id="id4" name="id4">Terminology</a></li> |
54 | <li><a class="reference internal" href="#terminology" id="id4">Terminology</a></li> |
| 303 | <li><a class="reference" href="#motivation-and-rationale" id="id5" name="id5">Motivation and Rationale</a></li> |
55 | <li><a class="reference internal" href="#motivation-and-rationale" id="id5">Motivation and Rationale</a></li> |
| 304 | <li><a class="reference" href="#specification" id="id6" name="id6">Specification</a><ul> |
56 | <li><a class="reference internal" href="#specification" id="id6">Specification</a><ul> |
| 305 | <li><a class="reference" href="#ebuild-libraries-elibs-for-short" id="id7" name="id7">Ebuild Libraries (elibs for short)</a></li> |
57 | <li><a class="reference internal" href="#ebuild-libraries-elibs-for-short" id="id7">Ebuild Libraries (elibs for short)</a></li> |
| 306 | <li><a class="reference" href="#the-reduced-role-of-eclasses-and-a-clarification-of-existing-eclass-requirements" id="id8" name="id8">The reduced role of Eclasses, and a clarification of existing Eclass requirements</a></li> |
58 | <li><a class="reference internal" href="#the-reduced-role-of-eclasses-and-a-clarification-of-existing-eclass-requirements" id="id8">The reduced role of Eclasses, and a clarification of existing Eclass requirements</a></li> |
| 307 | <li><a class="reference" href="#the-end-of-backwards-compatibility" id="id9" name="id9">The end of backwards compatibility...</a></li> |
59 | <li><a class="reference internal" href="#the-end-of-backwards-compatibility" id="id9">The end of backwards compatibility...</a></li> |
| 308 | <li><a class="reference" href="#tree-restructuring" id="id10" name="id10">Tree restructuring</a></li> |
60 | <li><a class="reference internal" href="#tree-restructuring" id="id10">Tree restructuring</a></li> |
| 309 | <li><a class="reference" href="#the-start-of-a-different-phase-of-backwards-compatibility" id="id11" name="id11">The start of a different phase of backwards compatibility</a></li> |
61 | <li><a class="reference internal" href="#the-start-of-a-different-phase-of-backwards-compatibility" id="id11">The start of a different phase of backwards compatibility</a></li> |
| 310 | <li><a class="reference" href="#migrating-to-the-new-setup" id="id12" name="id12">Migrating to the new setup</a></li> |
62 | <li><a class="reference internal" href="#migrating-to-the-new-setup" id="id12">Migrating to the new setup</a></li> |
| 311 | </ul> |
63 | </ul> |
| 312 | </li> |
64 | </li> |
| 313 | <li><a class="reference" href="#backwards-compatibility" id="id13" name="id13">Backwards Compatibility</a></li> |
65 | <li><a class="reference internal" href="#backwards-compatibility" id="id13">Backwards Compatibility</a></li> |
| 314 | <li><a class="reference" href="#copyright" id="id14" name="id14">Copyright</a></li> |
66 | <li><a class="reference internal" href="#copyright" id="id14">Copyright</a></li> |
| 315 | </ul> |
67 | </ul> |
| 316 | </div> |
68 | </div> |
| 317 | <div class="section"> |
69 | <div class="section" id="status"> |
| 318 | <h1><a class="toc-backref" href="#id2" id="status" name="status">Status</a></h1> |
70 | <h1><a class="toc-backref" href="#id2">Status</a></h1> |
| 319 | <p>Approved by the Gentoo Council on 15 September 2005. As of Sept. 2006 |
71 | <p>Approved by the Gentoo Council on 15 September 2005. As of Sept. 2006 |
| 320 | this GLEP is on hold, pending future revisions.</p> |
72 | this GLEP is on hold, pending future revisions.</p> |
| 321 | </div> |
73 | </div> |
| 322 | <div class="section"> |
74 | <div class="section" id="abstract"> |
| 323 | <h1><a class="toc-backref" href="#id3" id="abstract" name="abstract">Abstract</a></h1> |
75 | <h1><a class="toc-backref" href="#id3">Abstract</a></h1> |
| 324 | <p>For any design, the transition from theoretical to applied exposes inadequacies |
76 | <p>For any design, the transition from theoretical to applied exposes inadequacies |
| 325 | in the original design. This document is intended to document, and propose a |
77 | in the original design. This document is intended to document, and propose a |
| 326 | revision of the current eclass setup to address current eclass inadequacies.</p> |
78 | revision of the current eclass setup to address current eclass inadequacies.</p> |
| 327 | <p>This document proposes several things- the creation of ebuild libraries, 'elibs', |
79 | <p>This document proposes several things- the creation of ebuild libraries, 'elibs', |
| 328 | a narrowing of the focus of eclasses, a move of eclasses w/in the tree, the |
80 | a narrowing of the focus of eclasses, a move of eclasses w/in the tree, the |
| 329 | addition of changelogs, and a way to allow for simple eclass gpg signing. |
81 | addition of changelogs, and a way to allow for simple eclass gpg signing. |
| 330 | In general, a large scale restructuring of what eclasses are and how they're |
82 | In general, a large scale restructuring of what eclasses are and how they're |
| 331 | implemented. Essentially version two of the eclass setup.</p> |
83 | implemented. Essentially version two of the eclass setup.</p> |
| 332 | </div> |
84 | </div> |
| 333 | <div class="section"> |
85 | <div class="section" id="terminology"> |
| 334 | <h1><a class="toc-backref" href="#id4" id="terminology" name="terminology">Terminology</a></h1> |
86 | <h1><a class="toc-backref" href="#id4">Terminology</a></h1> |
| 335 | <p>From this point on, the proposed eclass setup will be called 'new eclasses', the |
87 | <p>From this point on, the proposed eclass setup will be called 'new eclasses', the |
| 336 | existing crop (as of this writing) will be referenced as 'old eclasses'. The |
88 | existing crop (as of this writing) will be referenced as 'old eclasses'. The |
| 337 | distinction is elaborated on within this document.</p> |
89 | distinction is elaborated on within this document.</p> |
| 338 | </div> |
90 | </div> |
| 339 | <div class="section"> |
91 | <div class="section" id="motivation-and-rationale"> |
| 340 | <h1><a class="toc-backref" href="#id5" id="motivation-and-rationale" name="motivation-and-rationale">Motivation and Rationale</a></h1> |
92 | <h1><a class="toc-backref" href="#id5">Motivation and Rationale</a></h1> |
| 341 | <p>Eclasses within the tree currently are a bit of a mess- they're forced to |
93 | <p>Eclasses within the tree currently are a bit of a mess- they're forced to |
| 342 | maintain backwards compatibility w/ all previous functionality. In effect, |
94 | maintain backwards compatibility w/ all previous functionality. In effect, |
| 343 | their api is constant, and can only be added to- never changing the existing |
95 | their api is constant, and can only be added to- never changing the existing |
| 344 | functionality. This obviously is quite limiting, and leads to cruft accruing in |
96 | functionality. This obviously is quite limiting, and leads to cruft accruing in |
| 345 | eclasses as a eclasses design is refined. This needs to be dealt with prior to |
97 | eclasses as a eclasses design is refined. This needs to be dealt with prior to |
| … | |
… | |
| 371 | template data, and are the basis for other ebuilds- elibs, however are <em>just</em> |
123 | template data, and are the basis for other ebuilds- elibs, however are <em>just</em> |
| 372 | common bash functionality.</p> |
124 | common bash functionality.</p> |
| 373 | <p>Consider the majority of the portage bin/* scripts- these all are candidates for |
125 | <p>Consider the majority of the portage bin/* scripts- these all are candidates for |
| 374 | being added to the tree as elibs, as is the bulk of eutils.</p> |
126 | being added to the tree as elibs, as is the bulk of eutils.</p> |
| 375 | </div> |
127 | </div> |
| 376 | <div class="section"> |
128 | <div class="section" id="specification"> |
| 377 | <h1><a class="toc-backref" href="#id6" id="specification" name="specification">Specification</a></h1> |
129 | <h1><a class="toc-backref" href="#id6">Specification</a></h1> |
| 378 | <p>The various parts of this proposal are broken down into a set of changes and |
130 | <p>The various parts of this proposal are broken down into a set of changes and |
| 379 | elaborations on why a proposed change is preferable. It's advisable to the |
131 | elaborations on why a proposed change is preferable. It's advisable to the |
| 380 | reader that this be read serially, rather then jumping around.</p> |
132 | reader that this be read serially, rather then jumping around.</p> |
| 381 | <div class="section"> |
133 | <div class="section" id="ebuild-libraries-elibs-for-short"> |
| 382 | <h2><a class="toc-backref" href="#id7" id="ebuild-libraries-elibs-for-short" name="ebuild-libraries-elibs-for-short">Ebuild Libraries (elibs for short)</a></h2> |
134 | <h2><a class="toc-backref" href="#id7">Ebuild Libraries (elibs for short)</a></h2> |
| 383 | <p>As briefly touched upon in Motivation and Rationale, the original eclass design |
135 | <p>As briefly touched upon in Motivation and Rationale, the original eclass design |
| 384 | allowed for the eclass to modify the metadata of an ebuild, metadata being the |
136 | allowed for the eclass to modify the metadata of an ebuild, metadata being the |
| 385 | DEPENDS, RDEPENDS, SRC_URI, IUSE, etc, vars that are required to be constant, |
137 | DEPENDS, RDEPENDS, SRC_URI, IUSE, etc, vars that are required to be constant, |
| 386 | and used by portage for dep resolution, fetching, etc. Using the earlier |
138 | and used by portage for dep resolution, fetching, etc. Using the earlier |
| 387 | example, if you're after a single function from an eclass (say epatch from |
139 | example, if you're after a single function from an eclass (say epatch from |
| … | |
… | |
| 446 | <p>As to why their are so many restrictions, the answer is simple- the definition of |
198 | <p>As to why their are so many restrictions, the answer is simple- the definition of |
| 447 | what elibs are, what they are capable of, and how to use them is nailed down as much as |
199 | what elibs are, what they are capable of, and how to use them is nailed down as much as |
| 448 | possible to avoid <em>any</em> ambiguity related to them. The intention is to make it clear, |
200 | possible to avoid <em>any</em> ambiguity related to them. The intention is to make it clear, |
| 449 | such that no misconceptions occur, resulting in bugs.</p> |
201 | such that no misconceptions occur, resulting in bugs.</p> |
| 450 | </div> |
202 | </div> |
| 451 | <div class="section"> |
203 | <div class="section" id="the-reduced-role-of-eclasses-and-a-clarification-of-existing-eclass-requirements"> |
| 452 | <h2><a class="toc-backref" href="#id8" id="the-reduced-role-of-eclasses-and-a-clarification-of-existing-eclass-requirements" name="the-reduced-role-of-eclasses-and-a-clarification-of-existing-eclass-requirements">The reduced role of Eclasses, and a clarification of existing Eclass requirements</a></h2> |
204 | <h2><a class="toc-backref" href="#id8">The reduced role of Eclasses, and a clarification of existing Eclass requirements</a></h2> |
| 453 | <p>Since elibs are now intended on holding common bash functionality, the focus of |
205 | <p>Since elibs are now intended on holding common bash functionality, the focus of |
| 454 | eclasses should be in defining an appropriate template for ebuilds. For example, |
206 | eclasses should be in defining an appropriate template for ebuilds. For example, |
| 455 | defining common DEPENDS, RDEPENDS, src_compile functions, src_unpack, etc. |
207 | defining common DEPENDS, RDEPENDS, src_compile functions, src_unpack, etc. |
| 456 | Additionally, eclasses should pull in any elibs they need for functionality.</p> |
208 | Additionally, eclasses should pull in any elibs they need for functionality.</p> |
| 457 | <p>Eclass functionality that isn't directly related to the metadata, or src_* and |
209 | <p>Eclass functionality that isn't directly related to the metadata, or src_* and |
| … | |
… | |
| 485 | indefinitely- compatibility must be maintained against the current tree, but |
237 | indefinitely- compatibility must be maintained against the current tree, but |
| 486 | just that. As such new eclasses (the true distinction of new vs old is |
238 | just that. As such new eclasses (the true distinction of new vs old is |
| 487 | elaborated in the next section) can be removed from the tree once they're no |
239 | elaborated in the next section) can be removed from the tree once they're no |
| 488 | longer in use.</p> |
240 | longer in use.</p> |
| 489 | </div> |
241 | </div> |
| 490 | <div class="section"> |
242 | <div class="section" id="the-end-of-backwards-compatibility"> |
| 491 | <h2><a class="toc-backref" href="#id9" id="the-end-of-backwards-compatibility" name="the-end-of-backwards-compatibility">The end of backwards compatibility...</a></h2> |
243 | <h2><a class="toc-backref" href="#id9">The end of backwards compatibility...</a></h2> |
| 492 | <p>With current eclasses, once the eclass is in use, its api can no longer be |
244 | <p>With current eclasses, once the eclass is in use, its api can no longer be |
| 493 | changed, nor can the eclass ever be removed from the tree. This is why we still |
245 | changed, nor can the eclass ever be removed from the tree. This is why we still |
| 494 | have <em>ancient</em> eclasses that are completely unused sitting in the tree, for |
246 | have <em>ancient</em> eclasses that are completely unused sitting in the tree, for |
| 495 | example inherit.eclass. The reason for this, not surprisingly, is a portage |
247 | example inherit.eclass. The reason for this, not surprisingly, is a portage |
| 496 | deficiency: on unmerging an installed ebuild, portage used the eclass from the |
248 | deficiency: on unmerging an installed ebuild, portage used the eclass from the |
| … | |
… | |
| 528 | subdirectory of the eclass dir in the tree, all current portage versions would |
280 | subdirectory of the eclass dir in the tree, all current portage versions would |
| 529 | still be able to access them.</p> |
281 | still be able to access them.</p> |
| 530 | <p>In other words, these new eclasses would in effect, be old eclasses since older |
282 | <p>In other words, these new eclasses would in effect, be old eclasses since older |
| 531 | portage versions could still access them.</p> |
283 | portage versions could still access them.</p> |
| 532 | </div> |
284 | </div> |
| 533 | <div class="section"> |
285 | <div class="section" id="tree-restructuring"> |
| 534 | <h2><a class="toc-backref" href="#id10" id="tree-restructuring" name="tree-restructuring">Tree restructuring</a></h2> |
286 | <h2><a class="toc-backref" href="#id10">Tree restructuring</a></h2> |
| 535 | <p>There are only two way to block the existing (as of this writing) inherit |
287 | <p>There are only two way to block the existing (as of this writing) inherit |
| 536 | functionality from accessing the new eclasses- either change the extension of |
288 | functionality from accessing the new eclasses- either change the extension of |
| 537 | eclasses to something other then 'eclass', or to have them stored in a separate |
289 | eclasses to something other then 'eclass', or to have them stored in a separate |
| 538 | subdirectory of the tree then eclass.</p> |
290 | subdirectory of the tree then eclass.</p> |
| 539 | <p>The latter is preferable, and the proposed solution. Reasons are- the current |
291 | <p>The latter is preferable, and the proposed solution. Reasons are- the current |
| … | |
… | |
| 578 | these checks would only be capable of doing basic sanity checks, such as syntax checks. |
330 | these checks would only be capable of doing basic sanity checks, such as syntax checks. |
| 579 | There is no way to prevent people from doing dumb things (exempting perhaps repeated |
331 | There is no way to prevent people from doing dumb things (exempting perhaps repeated |
| 580 | applications of a cattle prod)- these are strictly automatic checks, akin to repoman's |
332 | applications of a cattle prod)- these are strictly automatic checks, akin to repoman's |
| 581 | dependency checks.</p> |
333 | dependency checks.</p> |
| 582 | </div> |
334 | </div> |
| 583 | <div class="section"> |
335 | <div class="section" id="the-start-of-a-different-phase-of-backwards-compatibility"> |
| 584 | <h2><a class="toc-backref" href="#id11" id="the-start-of-a-different-phase-of-backwards-compatibility" name="the-start-of-a-different-phase-of-backwards-compatibility">The start of a different phase of backwards compatibility</a></h2> |
336 | <h2><a class="toc-backref" href="#id11">The start of a different phase of backwards compatibility</a></h2> |
| 585 | <p>As clarified above, new eclasses will exist in a separate directory that will be |
337 | <p>As clarified above, new eclasses will exist in a separate directory that will be |
| 586 | intentionally inaccessible to the inherit function. As such, users of older |
338 | intentionally inaccessible to the inherit function. As such, users of older |
| 587 | portage versions <em>will</em> have to upgrade to merge any ebuild that uses elibs/new |
339 | portage versions <em>will</em> have to upgrade to merge any ebuild that uses elibs/new |
| 588 | eclasses. A depend on the next major portage version would transparently handle |
340 | eclasses. A depend on the next major portage version would transparently handle |
| 589 | this for rsync users.</p> |
341 | this for rsync users.</p> |
| … | |
… | |
| 637 | lost functionality. The intention is to clean up the existing mess, and allow us |
389 | lost functionality. The intention is to clean up the existing mess, and allow us |
| 638 | to move forward. The saying "you've got to break a few eggs to make an omelet" |
390 | to move forward. The saying "you've got to break a few eggs to make an omelet" |
| 639 | is akin, exempting the fact we're providing a way to make the eggs whole again |
391 | is akin, exempting the fact we're providing a way to make the eggs whole again |
| 640 | (the king's men would've loved such an option).</p> |
392 | (the king's men would've loved such an option).</p> |
| 641 | </div> |
393 | </div> |
| 642 | <div class="section"> |
394 | <div class="section" id="migrating-to-the-new-setup"> |
| 643 | <h2><a class="toc-backref" href="#id12" id="migrating-to-the-new-setup" name="migrating-to-the-new-setup">Migrating to the new setup</a></h2> |
395 | <h2><a class="toc-backref" href="#id12">Migrating to the new setup</a></h2> |
| 644 | <p>As has been done in the past whenever a change in the tree results in ebuilds |
396 | <p>As has been done in the past whenever a change in the tree results in ebuilds |
| 645 | requiring a specific version of portage, as ebuilds migrate to the new eclasses, |
397 | requiring a specific version of portage, as ebuilds migrate to the new eclasses, |
| 646 | they should depend on a version of portage that supports it. From the users |
398 | they should depend on a version of portage that supports it. From the users |
| 647 | viewpoint, this transparently handles the migration.</p> |
399 | viewpoint, this transparently handles the migration.</p> |
| 648 | <p>This isn't so transparent for devs or a particular infrastructure server however. |
400 | <p>This isn't so transparent for devs or a particular infrastructure server however. |
| … | |
… | |
| 666 | <p>Essentially, you have a chance to nail the design perfectly/cleanly, and have a |
418 | <p>Essentially, you have a chance to nail the design perfectly/cleanly, and have a |
| 667 | window in which to redesign it. It's humbly suggested eclass devs take |
419 | window in which to redesign it. It's humbly suggested eclass devs take |
| 668 | advantage of it. :)</p> |
420 | advantage of it. :)</p> |
| 669 | </div> |
421 | </div> |
| 670 | </div> |
422 | </div> |
| 671 | <div class="section"> |
423 | <div class="section" id="backwards-compatibility"> |
| 672 | <h1><a class="toc-backref" href="#id13" id="backwards-compatibility" name="backwards-compatibility">Backwards Compatibility</a></h1> |
424 | <h1><a class="toc-backref" href="#id13">Backwards Compatibility</a></h1> |
| 673 | <p>All backwards compatibility issues are addressed in line, but a recap is offered- |
425 | <p>All backwards compatibility issues are addressed in line, but a recap is offered- |
| 674 | it's suggested that if the a particular compatibility issue is |
426 | it's suggested that if the a particular compatibility issue is |
| 675 | questioned/worried over, the reader read the relevant section. There should be |
427 | questioned/worried over, the reader read the relevant section. There should be |
| 676 | a more in depth discussion of the issue, along with a more extensive explanation |
428 | a more in depth discussion of the issue, along with a more extensive explanation |
| 677 | of the potential solutions, and reasons for the chosen solution.</p> |
429 | of the potential solutions, and reasons for the chosen solution.</p> |
| … | |
… | |
| 698 | case. Note, this case is rare also- as clarified above, it's mentioned |
450 | case. Note, this case is rare also- as clarified above, it's mentioned |
| 699 | strictly to be complete, it's not much of a real world scenario as elaborated |
451 | strictly to be complete, it's not much of a real world scenario as elaborated |
| 700 | above. |
452 | above. |
| 701 | </pre> |
453 | </pre> |
| 702 | </div> |
454 | </div> |
| 703 | <div class="section"> |
455 | <div class="section" id="copyright"> |
| 704 | <h1><a class="toc-backref" href="#id14" id="copyright" name="copyright">Copyright</a></h1> |
456 | <h1><a class="toc-backref" href="#id14">Copyright</a></h1> |
| 705 | <p>This document has been placed in the public domain.</p> |
457 | <p>This document has been placed in the public domain.</p> |
| 706 | </div> |
458 | </div> |
| 707 | |
459 | |
| 708 | </div> |
460 | </div> |
| 709 | <div class="footer"> |
461 | <div class="footer"> |
| 710 | <hr class="footer" /> |
462 | <hr class="footer" /> |
| 711 | <a class="reference" href="glep-0033.txt">View document source</a>. |
463 | <a class="reference external" href="glep-0033.txt">View document source</a>. |
| 712 | Generated on: 2006-10-10 20:23 UTC. |
464 | Generated on: 2010-04-07 22:04 UTC. |
| 713 | Generated by <a class="reference" href="http://docutils.sourceforge.net/">Docutils</a> from <a class="reference" href="http://docutils.sourceforge.net/rst.html">reStructuredText</a> source. |
465 | 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. |
| 714 | |
466 | |
| 715 | </div> |
467 | </div> |
| 716 | </body> |
468 | </body> |
| 717 | </html> |
469 | </html> |
| 718 | |
|
|