summaryrefslogtreecommitdiffstats
path: root/meta
diff options
context:
space:
mode:
authorRobert Yang <liezhi.yang@windriver.com>2017-04-12 02:26:31 -0700
committerRichard Purdie <richard.purdie@linuxfoundation.org>2017-04-13 10:54:09 +0100
commit9dc4707035e50381d70e5b63f0371534b4faa81c (patch)
tree76a0cddd59f777418a0e198ed9f4973d5011c6b9 /meta
parent94467d5087ca3b13e7baac670af107550701b333 (diff)
downloadpoky-9dc4707035e50381d70e5b63f0371534b4faa81c.tar.gz
blacklist.bbclass: fix for multilib
* Fixed: The netmap has been blacklisted in meta-networking/recipes-kernel/netmap/netmap_git.bb, but lib32-netmap still can be built (suppose it doesn't depend on another broken recipe netmap-modules, it is a little complicated, will talk below): $ bitbake lib32-netmap This is because of the old code masks on bb.event.ConfigParsed which can only handle global blacklist, netmap sets blacklist in the recipe, so it can't be handled, and lib32-netmap can be built. which was incorrect: blacklist_multilib_eventhandler[eventmask] = "bb.event.ConfigParsed" Move multilib code into multilib.bbclass can fix the problem easily: $ bitbake lib32-netmap ERROR: Nothing PROVIDES 'lib32-netmap' ERROR: lib32-netmap was skipped: Recipe is blacklisted: BROKEN: <foo> * Not fixed Another problem is netmap-modules has also been blacklisted in the recipe, and the recipe inherits module.bbclass, so multilib.bbclass doesn't handle it as the code shows: # There should only be one kernel in multilib configs # We also skip multilib setup for module packages. provides = (e.data.getVar("PROVIDES") or "").split() if "virtual/kernel" in provides or bb.data.inherits_class('module-base', e.data): raise bb.parse.SkipPackage("We shouldn't have multilib variants for the kernel") And netmap-modules provides lib32-netmap-modules which is handled in multilib_global.bbclass, so bitbake lib32-netmap-modules can't show the blacklist message: $ bitbake netmap-modules ERROR: Nothing PROVIDES 'netmap-modules' ERROR: netmap-modules was skipped: Recipe is blacklisted: BROKEN: <foo> ERROR: netmap-modules was skipped: We shouldn't have multilib variants for the kernel $ bitbake lib32-netmap-modules ERROR: Nothing PROVIDES 'lib32-netmap-modules'. Close matches: netmap-modules netmap-modules lib32-fbset-modes Note the different messages between netmap-modules and lib32-netmap-modules. This is because multilib.bbclass doesn't handle the "module" recipe so there is no PN called lib32-netmap-modules, therefore blacklist.bbclass can't handle it. Note, there are two "netmap-modules" which needs to be fixed later. (From OE-Core rev: c8749ed1edcbb544f6656ee5da80f2cf647c405a) Signed-off-by: Robert Yang <liezhi.yang@windriver.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'meta')
-rw-r--r--meta/classes/blacklist.bbclass25
-rw-r--r--meta/classes/multilib.bbclass6
2 files changed, 6 insertions, 25 deletions
diff --git a/meta/classes/blacklist.bbclass b/meta/classes/blacklist.bbclass
index 3413a5b0aa..e58564c34e 100644
--- a/meta/classes/blacklist.bbclass
+++ b/meta/classes/blacklist.bbclass
@@ -12,31 +12,6 @@
12# PNBLACKLIST[pn] = "message" 12# PNBLACKLIST[pn] = "message"
13# 13#
14 14
15# Cope with PNBLACKLIST flags for multilib case
16addhandler blacklist_multilib_eventhandler
17blacklist_multilib_eventhandler[eventmask] = "bb.event.ConfigParsed"
18python blacklist_multilib_eventhandler() {
19 multilibs = e.data.getVar('MULTILIBS')
20 if not multilibs:
21 return
22
23 # this block has been copied from base.bbclass so keep it in sync
24 prefixes = []
25 for ext in multilibs.split():
26 eext = ext.split(':')
27 if len(eext) > 1 and eext[0] == 'multilib':
28 prefixes.append(eext[1])
29
30 blacklists = e.data.getVarFlags('PNBLACKLIST') or {}
31 for pkg, reason in blacklists.items():
32 if pkg.endswith(("-native", "-crosssdk")) or pkg.startswith(("nativesdk-", "virtual/nativesdk-")) or 'cross-canadian' in pkg:
33 continue
34 for p in prefixes:
35 newpkg = p + "-" + pkg
36 if not e.data.getVarFlag('PNBLACKLIST', newpkg):
37 e.data.setVarFlag('PNBLACKLIST', newpkg, reason)
38}
39
40python () { 15python () {
41 blacklist = d.getVarFlag('PNBLACKLIST', d.getVar('PN')) 16 blacklist = d.getVarFlag('PNBLACKLIST', d.getVar('PN'))
42 17
diff --git a/meta/classes/multilib.bbclass b/meta/classes/multilib.bbclass
index 401e0c2cc0..ab04597f93 100644
--- a/meta/classes/multilib.bbclass
+++ b/meta/classes/multilib.bbclass
@@ -53,6 +53,12 @@ python multilib_virtclass_handler () {
53 53
54 override = ":virtclass-multilib-" + variant 54 override = ":virtclass-multilib-" + variant
55 55
56 blacklist = e.data.getVarFlag('PNBLACKLIST', e.data.getVar('PN'))
57 if blacklist:
58 pn_new = variant + "-" + e.data.getVar('PN')
59 if not e.data.getVarFlag('PNBLACKLIST', pn_new):
60 e.data.setVarFlag('PNBLACKLIST', pn_new, blacklist)
61
56 e.data.setVar("MLPREFIX", variant + "-") 62 e.data.setVar("MLPREFIX", variant + "-")
57 e.data.setVar("PN", variant + "-" + e.data.getVar("PN", False)) 63 e.data.setVar("PN", variant + "-" + e.data.getVar("PN", False))
58 e.data.setVar("OVERRIDES", e.data.getVar("OVERRIDES", False) + override) 64 e.data.setVar("OVERRIDES", e.data.getVar("OVERRIDES", False) + override)