| 1 | GLEP: 55 |
1 | GLEP: 55 |
| 2 | Title: Use EAPI-suffixed ebuilds (.ebuild-EAPI) |
2 | Title: Use EAPI-suffixed ebuilds (.ebuild-EAPI) |
| 3 | Version: $Revision: 1.3 $ |
3 | Version: $Revision: 1.4 $ |
| 4 | Last-Modified: $Date: 2009/05/17 15:50:27 $ |
4 | Last-Modified: $Date: 2009/05/17 17:00:30 $ |
| 5 | Author: Piotr Jaroszyński <peper@gentoo.org> |
5 | Author: Piotr Jaroszyński <peper@gentoo.org> |
| 6 | Status: Draft |
6 | Status: Draft |
| 7 | Type: Standards Track |
7 | Type: Standards Track |
| 8 | Content-Type: text/x-rst |
8 | Content-Type: text/x-rst |
| 9 | Created: 17-Dec-2007 |
9 | Created: 17-Dec-2007 |
| … | |
… | |
| 36 | * Add new global scope functions in any sane way. |
36 | * Add new global scope functions in any sane way. |
| 37 | |
37 | |
| 38 | * Extend versioning rules in an EAPI - for example, addition of the scm |
38 | * Extend versioning rules in an EAPI - for example, addition of the scm |
| 39 | suffix - GLEP54 [#GLEP54]_ or allowing more sensible version formats like |
39 | suffix - GLEP54 [#GLEP54]_ or allowing more sensible version formats like |
| 40 | ``1-rc1``, ``1-alpha`` etc. to match upstream more closely. |
40 | ``1-rc1``, ``1-alpha`` etc. to match upstream more closely. |
|
|
41 | |
|
|
42 | * Use newer bash features. |
| 41 | |
43 | |
| 42 | |
44 | |
| 43 | Current behaviour |
45 | Current behaviour |
| 44 | ================= |
46 | ================= |
| 45 | |
47 | |
| … | |
… | |
| 120 | |
122 | |
| 121 | emerge: there are no ebuilds to satisfy "sys-apps/foo" |
123 | emerge: there are no ebuilds to satisfy "sys-apps/foo" |
| 122 | |
124 | |
| 123 | Not the best error message, especially if there are lots of them. |
125 | Not the best error message, especially if there are lots of them. |
| 124 | |
126 | |
|
|
127 | Use newer bash features |
|
|
128 | ----------------------- |
|
|
129 | |
|
|
130 | ``|&`` is a new type of redirection added in bash-4. It cannot be used even in |
|
|
131 | local scope as bash still parses the whole ebuild. |
|
|
132 | |
|
|
133 | ``sys-apps/foo-1.ebuild``:: |
|
|
134 | |
|
|
135 | EAPI="5" |
|
|
136 | |
|
|
137 | foo() { |
|
|
138 | echo "foo" |& cat |
|
|
139 | } |
|
|
140 | |
|
|
141 | Result:: |
|
|
142 | |
|
|
143 | /var/lib/gentoo/repositories/peper/sys-apps/foo/foo-1.ebuild: line 8: syntax error near unexpected token `&' |
|
|
144 | /var/lib/gentoo/repositories/peper/sys-apps/foo/foo-1.ebuild: line 8: ` echo "foo" |& cat' |
|
|
145 | * |
|
|
146 | * ERROR: sys-apps/foo-1 failed. |
|
|
147 | * Call stack: |
|
|
148 | * ebuild.sh, line 1879: Called _source_ebuild |
|
|
149 | * ebuild.sh, line 1818: Called die |
|
|
150 | * The specific snippet of code: |
|
|
151 | * source "${EBUILD}" || die "error sourcing ebuild" |
|
|
152 | * The die message: |
|
|
153 | * error sourcing ebuild |
|
|
154 | * |
|
|
155 | * If you need support, post the topmost build error, and the call stack if relevant. |
|
|
156 | * This ebuild is from an overlay: '/var/lib/gentoo/repositories/peper/' |
|
|
157 | * ... done! |
|
|
158 | |
|
|
159 | !!! All ebuilds that could satisfy "sys-apps/foo" have been masked. |
|
|
160 | !!! One of the following masked packages is required to complete your request: |
|
|
161 | - sys-apps/foo-1 (masked by: corruption) |
|
|
162 | |
|
|
163 | Again, not the best error. |
|
|
164 | |
| 125 | Abstract solution |
165 | Abstract solution |
| 126 | ================= |
166 | ================= |
| 127 | |
167 | |
| 128 | A solution to this problem has to lift those limitations and the only way to do |
168 | A solution to this problem has to lift those limitations and the only way to do |
| 129 | it is to make the EAPI of an ebuild available to the package managers in a way |
169 | it is to make the EAPI of an ebuild available to the package managers in a way |