blacklist_dynamic.bbclass 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. # Blacklist recipe names which include variable references, handling
  2. # multilibs.
  3. #
  4. # Ex.
  5. # PNBLACKLIST_DYNAMIC += "${MLPREFIX}gcc-cross-${TARGET_ARCH}"
  6. # PNBLACKLIST_DYNAMIC += "gcc-source-${@'${GCCVERSION}'.replace('%', '')}"
  7. PNBLACKLIST_DYNAMIC ?= ""
  8. inherit blacklist
  9. python pnblacklist_dynamic_setup () {
  10. d = e.data
  11. blacklisted = d.getVar('PNBLACKLIST_DYNAMIC', False)
  12. if not blacklisted.strip():
  13. return
  14. multilibs = d.getVar('MULTILIBS', True) or ''
  15. # this block has been copied from base.bbclass so keep it in sync
  16. prefixes = []
  17. for ext in multilibs.split():
  18. eext = ext.split(':')
  19. if len(eext) > 1 and eext[0] == 'multilib':
  20. prefixes.append(eext[1])
  21. to_blacklist = set()
  22. for prefix in [''] + prefixes:
  23. localdata = bb.data.createCopy(d)
  24. if prefix:
  25. localdata.setVar('MLPREFIX', prefix + '-')
  26. override = ':virtclass-multilib-' + prefix
  27. localdata.setVar('OVERRIDES', localdata.getVar('OVERRIDES', False) + override)
  28. bb.data.update_data(localdata)
  29. to_blacklist |= set(filter(None, localdata.getVar('PNBLACKLIST_DYNAMIC').split()))
  30. for blrecipe in to_blacklist:
  31. d.setVarFlag('PNBLACKLIST', blrecipe, 'blacklisted by PNBLACKLIST_DYNAMIC')
  32. }
  33. pnblacklist_dynamic_setup[eventmask] = "bb.event.ConfigParsed"
  34. addhandler pnblacklist_dynamic_setup