Gentoo Archives: gentoo-portage-dev

From: Sergei Trofimovich <slyfox@g.o>
To: gentoo-portage-dev@l.g.o
Cc: Zac Medico <zmedico@g.o>, Sergei Trofimovich <slyfox@g.o>
Subject: [gentoo-portage-dev] [PATCH] bin/eapi.sh: default to EAPI=0 when EAPI is unset
Date: Sat, 17 Jan 2015 12:07:46
Message-Id: 1421496447-20561-1-git-send-email-slyfox@gentoo.org
1 Observed as a breakage on binutils ebuilds:
2
3 > ERROR: sys-devel/binutils-2.24-r3::gentoo failed (depend phase):
4 > use() calls are not allowed in global scope
5 > Call stack:
6 > ebuild.sh, line 584: Called source 'binutils-2.24-r3.ebuild,
7 > ebuild.sh, line 7: Called inherit 'toolchain-binutils'
8 > ebuild.sh, line 280: Called __qa_source '/gentoo-32k/gentoo-x86/eclass/toolchain-binutils.e
9 > ebuild.sh, line 80: Called source '/gentoo-32k/gentoo-x86/eclass/toolchain-binutils.eclass
10 > toolchain-binutils.eclass, line 106: Called use 'multislot'
11 > ebuild.sh, line 47: Called die
12 > The specific snippet of code:
13 > # These functions die because calls to them during the "depend" phase
14
15 Zac confirms it's a safe thing to use ${EAPI-0} here:
16 > ebuild.sh unsets the EAPI just before it sources the ebuild,
17 > and then it does this after it sources the ebuild:
18 >
19 > [ "${EAPI+set}" = set ] || EAPI=0
20 >
21 > So, for any code that is called while the ebuild is being sourced, using
22 > ${EAPI-0} would be correct.
23
24 For consistency and defense against future copy/paste errors
25 converted all uses of ${EAPI} for ${EAPI-0} in 'bin/eapi.sh'.
26
27 Signed-off-by: Sergei Trofimovich <slyfox@g.o>
28 ---
29 bin/eapi.sh | 90 ++++++++++++++++++++++++++++++-------------------------------
30 1 file changed, 45 insertions(+), 45 deletions(-)
31
32 diff --git a/bin/eapi.sh b/bin/eapi.sh
33 index 7e7b54b..f1c677e 100644
34 --- a/bin/eapi.sh
35 +++ b/bin/eapi.sh
36 @@ -5,189 +5,189 @@
37 # PHASES
38
39 ___eapi_has_pkg_pretend() {
40 - [[ ! ${1-${EAPI}} =~ ^(0|1|2|3)$ ]]
41 + [[ ! ${1-${EAPI-0}} =~ ^(0|1|2|3)$ ]]
42 }
43
44 ___eapi_has_src_prepare() {
45 - [[ ! ${1-${EAPI}} =~ ^(0|1)$ ]]
46 + [[ ! ${1-${EAPI-0}} =~ ^(0|1)$ ]]
47 }
48
49 ___eapi_has_src_configure() {
50 - [[ ! ${1-${EAPI}} =~ ^(0|1)$ ]]
51 + [[ ! ${1-${EAPI-0}} =~ ^(0|1)$ ]]
52 }
53
54 ___eapi_default_src_test_disables_parallel_jobs() {
55 - [[ ${1-${EAPI}} =~ ^(0|1|2|3|4|4-python|4-slot-abi)$ ]]
56 + [[ ${1-${EAPI-0}} =~ ^(0|1|2|3|4|4-python|4-slot-abi)$ ]]
57 }
58
59 ___eapi_has_S_WORKDIR_fallback() {
60 - [[ ${1-${EAPI}} =~ ^(0|1|2|3)$ ]]
61 + [[ ${1-${EAPI-0}} =~ ^(0|1|2|3)$ ]]
62 }
63
64 # VARIABLES
65
66 ___eapi_has_prefix_variables() {
67 - [[ ! ${1-${EAPI}} =~ ^(0|1|2)$ || " ${FEATURES} " == *" force-prefix "* ]]
68 + [[ ! ${1-${EAPI-0}} =~ ^(0|1|2)$ || " ${FEATURES} " == *" force-prefix "* ]]
69 }
70
71 ___eapi_has_HDEPEND() {
72 - [[ ${1-${EAPI}} =~ ^(5-hdepend)$ ]]
73 + [[ ${1-${EAPI-0}} =~ ^(5-hdepend)$ ]]
74 }
75
76 ___eapi_has_RDEPEND_DEPEND_fallback() {
77 - [[ ${1-${EAPI}} =~ ^(0|1|2|3)$ ]]
78 + [[ ${1-${EAPI-0}} =~ ^(0|1|2|3)$ ]]
79 }
80
81 # HELPERS PRESENCE
82
83 ___eapi_has_dohard() {
84 - [[ ${1-${EAPI}} =~ ^(0|1|2|3)$ ]]
85 + [[ ${1-${EAPI-0}} =~ ^(0|1|2|3)$ ]]
86 }
87
88 ___eapi_has_dosed() {
89 - [[ ${1-${EAPI}} =~ ^(0|1|2|3)$ ]]
90 + [[ ${1-${EAPI-0}} =~ ^(0|1|2|3)$ ]]
91 }
92
93 ___eapi_has_einstall() {
94 - [[ ${1-${EAPI}} =~ ^(0|1|2|3|4|4-python|4-slot-abi|5|5-hdepend|5-progress)$ ]]
95 + [[ ${1-${EAPI-0}} =~ ^(0|1|2|3|4|4-python|4-slot-abi|5|5-hdepend|5-progress)$ ]]
96 }
97
98 ___eapi_has_dohtml_deprecated() {
99 - [[ ! ${1-${EAPI}} =~ ^(0|1|2|3|4|4-python|4-slot-abi|5|5-hdepend|5-progress)$ ]]
100 + [[ ! ${1-${EAPI-0}} =~ ^(0|1|2|3|4|4-python|4-slot-abi|5|5-hdepend|5-progress)$ ]]
101 }
102
103 ___eapi_has_docompress() {
104 - [[ ! ${1-${EAPI}} =~ ^(0|1|2|3)$ ]]
105 + [[ ! ${1-${EAPI-0}} =~ ^(0|1|2|3)$ ]]
106 }
107
108 ___eapi_has_nonfatal() {
109 - [[ ! ${1-${EAPI}} =~ ^(0|1|2|3)$ ]]
110 + [[ ! ${1-${EAPI-0}} =~ ^(0|1|2|3)$ ]]
111 }
112
113 ___eapi_has_doheader() {
114 - [[ ! ${1-${EAPI}} =~ ^(0|1|2|3|4|4-python|4-slot-abi)$ ]]
115 + [[ ! ${1-${EAPI-0}} =~ ^(0|1|2|3|4|4-python|4-slot-abi)$ ]]
116 }
117
118 ___eapi_has_usex() {
119 - [[ ! ${1-${EAPI}} =~ ^(0|1|2|3|4|4-python|4-slot-abi)$ ]]
120 + [[ ! ${1-${EAPI-0}} =~ ^(0|1|2|3|4|4-python|4-slot-abi)$ ]]
121 }
122
123 ___eapi_has_get_libdir() {
124 - [[ ! ${1-${EAPI}} =~ ^(0|1|2|3|4|4-python|4-slot-abi|5|5-hdepend|5-progress)$ ]]
125 + [[ ! ${1-${EAPI-0}} =~ ^(0|1|2|3|4|4-python|4-slot-abi|5|5-hdepend|5-progress)$ ]]
126 }
127
128 ___eapi_has_einstalldocs() {
129 - [[ ! ${1-${EAPI}} =~ ^(0|1|2|3|4|4-python|4-slot-abi|5|5-hdepend|5-progress)$ ]]
130 + [[ ! ${1-${EAPI-0}} =~ ^(0|1|2|3|4|4-python|4-slot-abi|5|5-hdepend|5-progress)$ ]]
131 }
132
133 ___eapi_has_eapply() {
134 - [[ ! ${1-${EAPI}} =~ ^(0|1|2|3|4|4-python|4-slot-abi|5|5-hdepend|5-progress)$ ]]
135 + [[ ! ${1-${EAPI-0}} =~ ^(0|1|2|3|4|4-python|4-slot-abi|5|5-hdepend|5-progress)$ ]]
136 }
137
138 ___eapi_has_eapply_user() {
139 - [[ ! ${1-${EAPI}} =~ ^(0|1|2|3|4|4-python|4-slot-abi|5|5-hdepend|5-progress)$ ]]
140 + [[ ! ${1-${EAPI-0}} =~ ^(0|1|2|3|4|4-python|4-slot-abi|5|5-hdepend|5-progress)$ ]]
141 }
142
143 ___eapi_has_in_iuse() {
144 - [[ ! ${1-${EAPI}} =~ ^(0|1|2|3|4|4-python|4-slot-abi|5|5-hdepend|5-progress)$ ]]
145 + [[ ! ${1-${EAPI-0}} =~ ^(0|1|2|3|4|4-python|4-slot-abi|5|5-hdepend|5-progress)$ ]]
146 }
147
148 ___eapi_has_master_repositories() {
149 - [[ ${1-${EAPI}} =~ ^(5-progress)$ ]]
150 + [[ ${1-${EAPI-0}} =~ ^(5-progress)$ ]]
151 }
152
153 ___eapi_has_repository_path() {
154 - [[ ${1-${EAPI}} =~ ^(5-progress)$ ]]
155 + [[ ${1-${EAPI-0}} =~ ^(5-progress)$ ]]
156 }
157
158 ___eapi_has_available_eclasses() {
159 - [[ ${1-${EAPI}} =~ ^(5-progress)$ ]]
160 + [[ ${1-${EAPI-0}} =~ ^(5-progress)$ ]]
161 }
162
163 ___eapi_has_eclass_path() {
164 - [[ ${1-${EAPI}} =~ ^(5-progress)$ ]]
165 + [[ ${1-${EAPI-0}} =~ ^(5-progress)$ ]]
166 }
167
168 ___eapi_has_license_path() {
169 - [[ ${1-${EAPI}} =~ ^(5-progress)$ ]]
170 + [[ ${1-${EAPI-0}} =~ ^(5-progress)$ ]]
171 }
172
173 ___eapi_has_package_manager_build_user() {
174 - [[ ${1-${EAPI}} =~ ^(5-progress)$ ]]
175 + [[ ${1-${EAPI-0}} =~ ^(5-progress)$ ]]
176 }
177
178 ___eapi_has_package_manager_build_group() {
179 - [[ ${1-${EAPI}} =~ ^(5-progress)$ ]]
180 + [[ ${1-${EAPI-0}} =~ ^(5-progress)$ ]]
181 }
182
183 # HELPERS BEHAVIOR
184
185 ___eapi_best_version_and_has_version_support_--host-root() {
186 - [[ ! ${1-${EAPI}} =~ ^(0|1|2|3|4|4-python|4-slot-abi)$ ]]
187 + [[ ! ${1-${EAPI-0}} =~ ^(0|1|2|3|4|4-python|4-slot-abi)$ ]]
188 }
189
190 ___eapi_unpack_supports_xz() {
191 - [[ ! ${1-${EAPI}} =~ ^(0|1|2)$ ]]
192 + [[ ! ${1-${EAPI-0}} =~ ^(0|1|2)$ ]]
193 }
194
195 ___eapi_unpack_supports_txz() {
196 - [[ ! ${1-${EAPI}} =~ ^(0|1|2|3|4|4-python|4-slot-abi|5|5-hdepend|5-progress)$ ]]
197 + [[ ! ${1-${EAPI-0}} =~ ^(0|1|2|3|4|4-python|4-slot-abi|5|5-hdepend|5-progress)$ ]]
198 }
199
200 ___eapi_econf_passes_--disable-dependency-tracking() {
201 - [[ ! ${1-${EAPI}} =~ ^(0|1|2|3)$ ]]
202 + [[ ! ${1-${EAPI-0}} =~ ^(0|1|2|3)$ ]]
203 }
204
205 ___eapi_econf_passes_--disable-silent-rules() {
206 - [[ ! ${1-${EAPI}} =~ ^(0|1|2|3|4|4-python|4-slot-abi)$ ]]
207 + [[ ! ${1-${EAPI-0}} =~ ^(0|1|2|3|4|4-python|4-slot-abi)$ ]]
208 }
209
210 ___eapi_econf_passes_--docdir_and_--htmldir() {
211 - [[ ! ${1-${EAPI}} =~ ^(0|1|2|3|4|4-python|4-slot-abi|5|5-hdepend|5-progress)$ ]]
212 + [[ ! ${1-${EAPI-0}} =~ ^(0|1|2|3|4|4-python|4-slot-abi|5|5-hdepend|5-progress)$ ]]
213 }
214
215 ___eapi_use_enable_and_use_with_support_empty_third_argument() {
216 - [[ ! ${1-${EAPI}} =~ ^(0|1|2|3)$ ]]
217 + [[ ! ${1-${EAPI-0}} =~ ^(0|1|2|3)$ ]]
218 }
219
220 ___eapi_dodoc_supports_-r() {
221 - [[ ! ${1-${EAPI}} =~ ^(0|1|2|3)$ ]]
222 + [[ ! ${1-${EAPI-0}} =~ ^(0|1|2|3)$ ]]
223 }
224
225 ___eapi_doins_and_newins_preserve_symlinks() {
226 - [[ ! ${1-${EAPI}} =~ ^(0|1|2|3)$ ]]
227 + [[ ! ${1-${EAPI-0}} =~ ^(0|1|2|3)$ ]]
228 }
229
230 ___eapi_newins_supports_reading_from_standard_input() {
231 - [[ ! ${1-${EAPI}} =~ ^(0|1|2|3|4|4-python|4-slot-abi)$ ]]
232 + [[ ! ${1-${EAPI-0}} =~ ^(0|1|2|3|4|4-python|4-slot-abi)$ ]]
233 }
234
235 ___eapi_helpers_can_die() {
236 - [[ ! ${1-${EAPI}} =~ ^(0|1|2|3)$ ]]
237 + [[ ! ${1-${EAPI-0}} =~ ^(0|1|2|3)$ ]]
238 }
239
240 ___eapi_disallows_helpers_in_global_scope() {
241 - [[ ! ${1-${EAPI}} =~ ^(0|1|2|3|4|4-slot-abi|5|5-hdepend)$ ]]
242 + [[ ! ${1-${EAPI-0}} =~ ^(0|1|2|3|4|4-slot-abi|5|5-hdepend)$ ]]
243 }
244
245 ___eapi_unpack_is_case_sensitive() {
246 - [[ ${1-${EAPI}} =~ ^(0|1|2|3|4|4-python|4-slot-abi|5|5-hdepend)$ ]]
247 + [[ ${1-${EAPI-0}} =~ ^(0|1|2|3|4|4-python|4-slot-abi|5|5-hdepend)$ ]]
248 }
249
250 ___eapi_unpack_supports_absolute_paths() {
251 - [[ ${1-${EAPI}} =~ ^(0|1|2|3|4|4-python|4-slot-abi|5|5-hdepend)$ ]]
252 + [[ ${1-${EAPI-0}} =~ ^(0|1|2|3|4|4-python|4-slot-abi|5|5-hdepend)$ ]]
253 }
254
255 ___eapi_die_can_respect_nonfatal() {
256 - [[ ! ${1-${EAPI}} =~ ^(0|1|2|3|4|4-python|4-slot-abi|5|5-hdepend|5-progress)$ ]]
257 + [[ ! ${1-${EAPI-0}} =~ ^(0|1|2|3|4|4-python|4-slot-abi|5|5-hdepend|5-progress)$ ]]
258 }
259
260 # OTHERS
261
262 ___eapi_enables_failglob_in_global_scope() {
263 - [[ ! ${1-${EAPI}} =~ ^(0|1|2|3|4|4-python|4-slot-abi|5|5-hdepend|5-progress)$ ]]
264 + [[ ! ${1-${EAPI-0}} =~ ^(0|1|2|3|4|4-python|4-slot-abi|5|5-hdepend|5-progress)$ ]]
265 }
266
267 ___eapi_enables_globstar() {
268 - [[ ${1-${EAPI}} =~ ^(4-python|5-progress)$ ]]
269 + [[ ${1-${EAPI-0}} =~ ^(4-python|5-progress)$ ]]
270 }
271 --
272 2.2.1

Replies