summaryrefslogtreecommitdiffstats
path: root/meta/classes/multilib_global.bbclass
diff options
context:
space:
mode:
Diffstat (limited to 'meta/classes/multilib_global.bbclass')
-rw-r--r--meta/classes/multilib_global.bbclass53
1 files changed, 28 insertions, 25 deletions
diff --git a/meta/classes/multilib_global.bbclass b/meta/classes/multilib_global.bbclass
index 6095d278dd..d9372d9ed1 100644
--- a/meta/classes/multilib_global.bbclass
+++ b/meta/classes/multilib_global.bbclass
@@ -155,6 +155,12 @@ def preferred_ml_updates(d):
155 extramp.append(translate_provide(pref, p)) 155 extramp.append(translate_provide(pref, p))
156 d.setVar("BB_MULTI_PROVIDER_ALLOWED", " ".join(mp + extramp)) 156 d.setVar("BB_MULTI_PROVIDER_ALLOWED", " ".join(mp + extramp))
157 157
158 virtprovs = d.getVar("BB_RECIPE_VIRTUAL_PROVIDERS").split()
159 for p in virtprovs.copy():
160 for pref in prefixes:
161 virtprovs.append(translate_provide(pref, p))
162 d.setVar("BB_RECIPE_VIRTUAL_PROVIDERS", " ".join(virtprovs))
163
158 abisafe = (d.getVar("SIGGEN_EXCLUDERECIPES_ABISAFE") or "").split() 164 abisafe = (d.getVar("SIGGEN_EXCLUDERECIPES_ABISAFE") or "").split()
159 extras = [] 165 extras = []
160 for p in prefixes: 166 for p in prefixes:
@@ -171,24 +177,26 @@ def preferred_ml_updates(d):
171 d.appendVar("SIGGEN_EXCLUDE_SAFE_RECIPE_DEPS", " " + " ".join(extras)) 177 d.appendVar("SIGGEN_EXCLUDE_SAFE_RECIPE_DEPS", " " + " ".join(extras))
172 178
173python multilib_virtclass_handler_vendor () { 179python multilib_virtclass_handler_vendor () {
174 if isinstance(e, bb.event.ConfigParsed): 180 for v in d.getVar("MULTILIB_VARIANTS").split():
175 for v in e.data.getVar("MULTILIB_VARIANTS").split(): 181 if d.getVar("TARGET_VENDOR:virtclass-multilib-" + v, False) is None:
176 if e.data.getVar("TARGET_VENDOR:virtclass-multilib-" + v, False) is None: 182 d.setVar("TARGET_VENDOR:virtclass-multilib-" + v, d.getVar("TARGET_VENDOR", False) + "ml" + v)
177 e.data.setVar("TARGET_VENDOR:virtclass-multilib-" + v, e.data.getVar("TARGET_VENDOR", False) + "ml" + v) 183 preferred_ml_updates(d)
178 preferred_ml_updates(e.data)
179} 184}
180addhandler multilib_virtclass_handler_vendor 185addhandler multilib_virtclass_handler_vendor
181multilib_virtclass_handler_vendor[eventmask] = "bb.event.ConfigParsed" 186multilib_virtclass_handler_vendor[eventmask] = "bb.event.ConfigParsed"
182 187
183python multilib_virtclass_handler_global () { 188python multilib_virtclass_handler_global () {
184 variant = e.data.getVar("BBEXTENDVARIANT") 189 variant = d.getVar("BBEXTENDVARIANT")
185 if variant: 190 if variant:
186 return 191 return
187 192
193 if bb.data.inherits_class('native', d):
194 return
195
188 non_ml_recipes = d.getVar('NON_MULTILIB_RECIPES').split() 196 non_ml_recipes = d.getVar('NON_MULTILIB_RECIPES').split()
189 197
190 if bb.data.inherits_class('kernel', e.data) or \ 198 if bb.data.inherits_class('kernel', d) or \
191 bb.data.inherits_class('module-base', e.data) or \ 199 bb.data.inherits_class('module-base', d) or \
192 d.getVar('BPN') in non_ml_recipes: 200 d.getVar('BPN') in non_ml_recipes:
193 201
194 # We need to avoid expanding KERNEL_VERSION which we can do by deleting it 202 # We need to avoid expanding KERNEL_VERSION which we can do by deleting it
@@ -197,33 +205,28 @@ python multilib_virtclass_handler_global () {
197 localdata.delVar("KERNEL_VERSION") 205 localdata.delVar("KERNEL_VERSION")
198 localdata.delVar("KERNEL_VERSION_PKG_NAME") 206 localdata.delVar("KERNEL_VERSION_PKG_NAME")
199 207
200 variants = (e.data.getVar("MULTILIB_VARIANTS") or "").split() 208 variants = (d.getVar("MULTILIB_VARIANTS") or "").split()
201
202 import oe.classextend
203 clsextends = []
204 for variant in variants:
205 clsextends.append(oe.classextend.ClassExtender(variant, localdata))
206 209
207 # Process PROVIDES 210 # Process PROVIDES
208 origprovs = provs = localdata.getVar("PROVIDES") or "" 211 origprovs = provs = localdata.getVar("PROVIDES") or ""
209 for clsextend in clsextends: 212 for variant in variants:
210 provs = provs + " " + clsextend.map_variable("PROVIDES", setvar=False) 213 provs = provs + " " + oe.classextend.suffix_filter_deps(localdata.getVar("PROVIDES") or "", variant, variants)
211 e.data.setVar("PROVIDES", provs) 214 d.setVar("PROVIDES", provs)
212 215
213 # Process RPROVIDES 216 # Process RPROVIDES
214 origrprovs = rprovs = localdata.getVar("RPROVIDES") or "" 217 origrprovs = rprovs = localdata.getVar("RPROVIDES") or ""
215 for clsextend in clsextends: 218 for variant in variants:
216 rprovs = rprovs + " " + clsextend.map_variable("RPROVIDES", setvar=False) 219 rprovs = rprovs + " " + oe.classextend.suffix_filter_deps(localdata.getVar("RPROVIDES") or "", variant, variants)
217 if rprovs.strip(): 220 if rprovs.strip():
218 e.data.setVar("RPROVIDES", rprovs) 221 d.setVar("RPROVIDES", rprovs)
219 222
220 # Process RPROVIDES:${PN}... 223 # Process RPROVIDES:${PN}...
221 for pkg in (e.data.getVar("PACKAGES") or "").split(): 224 for pkg in (d.getVar("PACKAGES") or "").split():
222 origrprovs = rprovs = localdata.getVar("RPROVIDES:%s" % pkg) or "" 225 origrprovs = rprovs = localdata.getVar("RPROVIDES:%s" % pkg) or ""
223 for clsextend in clsextends: 226 for variant in variants:
224 rprovs = rprovs + " " + clsextend.map_variable("RPROVIDES:%s" % pkg, setvar=False) 227 rprovs = rprovs + " " + oe.classextend.suffix_filter_deps(localdata.getVar("RPROVIDES:%s" % pkg) or "", variant, variants)
225 rprovs = rprovs + " " + clsextend.extname + "-" + pkg 228 rprovs = rprovs + " " + variant + "-" + pkg
226 e.data.setVar("RPROVIDES:%s" % pkg, rprovs) 229 d.setVar("RPROVIDES:%s" % pkg, rprovs)
227} 230}
228 231
229addhandler multilib_virtclass_handler_global 232addhandler multilib_virtclass_handler_global