Split out blacklist_dynamic.bbclass

Signed-off-by: Christopher Larson <chris_larson@mentor.com>
This commit is contained in:
Christopher Larson
2015-07-21 12:45:42 -07:00
parent 624926be97
commit ba1954bc85
2 changed files with 47 additions and 29 deletions

View File

@@ -0,0 +1,41 @@
# Blacklist recipe names which include variable references, handling
# multilibs.
#
# Ex. PNBLACKLIST_DYNAMIC += "${MLPREFIX}gcc-cross-${TARGET_ARCH}"
PNBLACKLIST_DYNAMIC ?= ""
inherit blacklist
python pnblacklist_dynamic_setup () {
d = e.data
blacklisted = d.getVar('PNBLACKLIST_DYNAMIC', False)
if not blacklisted.strip():
return
multilibs = d.getVar('MULTILIBS', True) or ''
# this block has been copied from base.bbclass so keep it in sync
prefixes = []
for ext in multilibs.split():
eext = ext.split(':')
if len(eext) > 1 and eext[0] == 'multilib':
prefixes.append(eext[1])
to_blacklist = set()
for prefix in [''] + prefixes:
localdata = bb.data.createCopy(d)
if prefix:
localdata.setVar('MLPREFIX', prefix + '-')
override = ':virtclass-multilib-' + prefix
localdata.setVar('OVERRIDES', localdata.getVar('OVERRIDES', False) + override)
bb.data.update_data(localdata)
to_blacklist |= set(filter(None, localdata.expand(blacklisted).split()))
for blrecipe in to_blacklist:
d.setVarFlag('PNBLACKLIST', blrecipe, 'blacklisted by PNBLACKLIST_DYNAMIC')
}
pnblacklist_dynamic_setup[eventmask] = "bb.event.ConfigParsed"
addhandler pnblacklist_dynamic_setup

View File

@@ -45,7 +45,7 @@ PREFERRED_PROVIDER_libgcc = "libgcc-external"
PREFERRED_PROVIDER_linux-libc-headers = "linux-libc-headers-external"
# Ensure that we don't pull in any internal toolchain recipes
INHERIT += "blacklist"
INHERIT += "blacklist blacklist_dynamic"
PNBLACKLIST[uclibc] = "not building with an external toolchain"
PNBLACKLIST[uclibc-initial] = "not building with an external toolchain"
PNBLACKLIST[glibc] = "not building with an external toolchain"
@@ -58,12 +58,12 @@ PNBLACKLIST[libgcc] = "not building with an external toolchain"
PNBLACKLIST[linux-libc-headers] = "not building with an external toolchain"
PNBLACKLIST[linux-libc-headers-yocto] = "not building with an external toolchain"
PNBLACKLIST[external-sourcery-toolchain] = "using meta-sourcery, not poky's external toolchain"
EXTERNAL_PNBLACKLIST_MULTILIB += "\
gcc-cross-${TARGET_ARCH} \
gcc-cross-initial-${TARGET_ARCH} \
binutils-cross-${TARGET_ARCH} \
PNBLACKLIST_DYNAMIC += "\
${MLPREFIX}gcc-cross-${TARGET_ARCH} \
${MLPREFIX}gcc-cross-initial-${TARGET_ARCH} \
${MLPREFIX}binutils-cross-${TARGET_ARCH} \
"
EXTERNAL_PNBLACKLIST_MULTILIB[doc] = "List of recipes to blacklist whose names vary in more than just prefix between multilib variants."
# Determine the prefixes to check for based on the target architecture (before
# any classes alter TARGET_ARCH)
@@ -155,29 +155,6 @@ python toolchain_metadata_setup () {
pass
else:
d.appendVar('TUNE_CCARGS', ' -msgxx-glibc')
blacklisted = d.getVar('EXTERNAL_PNBLACKLIST_MULTILIB', False)
for var in d.expand(blacklisted).split():
d.setVarFlag('PNBLACKLIST', var, 'not building with an external toolchain')
multilibs = d.getVar('MULTILIBS', True)
if not multilibs:
return
# this block has been copied from base.bbclass so keep it in sync
prefixes = []
for ext in multilibs.split():
eext = ext.split(':')
if len(eext) > 1 and eext[0] == 'multilib':
prefixes.append(eext[1])
for prefix in prefixes:
localdata = bb.data.createCopy(d)
override = ':virtclass-multilib-' + prefix
localdata.setVar('OVERRIDES', localdata.getVar('OVERRIDES', False) + override)
bb.data.update_data(localdata)
for var in localdata.expand(blacklisted).split():
e.data.setVarFlag('PNBLACKLIST', prefix + '-' + var, 'not building with an external toolchain')
}
toolchain_metadata_setup[eventmask] = "bb.event.ConfigParsed"
addhandler toolchain_metadata_setup