multilib_global.bbclass 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. python multilib_virtclass_handler_global () {
  2. if not e.data:
  3. return
  4. if isinstance(e, bb.event.RecipePreFinalise):
  5. for v in e.data.getVar("MULTILIB_VARIANTS", True).split():
  6. if e.data.getVar("TARGET_VENDOR_virtclass-multilib-" + v, False) is None:
  7. e.data.setVar("TARGET_VENDOR_virtclass-multilib-" + v, e.data.getVar("TARGET_VENDOR", False) + "ml" + v)
  8. variant = e.data.getVar("BBEXTENDVARIANT", True)
  9. if isinstance(e, bb.event.RecipeParsed) and not variant:
  10. if bb.data.inherits_class('kernel', e.data) or \
  11. bb.data.inherits_class('module-base', e.data) or \
  12. (bb.data.inherits_class('allarch', e.data) and\
  13. not bb.data.inherits_class('packagegroup', e.data)):
  14. variants = (e.data.getVar("MULTILIB_VARIANTS", True) or "").split()
  15. import oe.classextend
  16. clsextends = []
  17. for variant in variants:
  18. clsextends.append(oe.classextend.ClassExtender(variant, e.data))
  19. # Process PROVIDES
  20. origprovs = provs = e.data.getVar("PROVIDES", True) or ""
  21. for clsextend in clsextends:
  22. provs = provs + " " + clsextend.map_variable("PROVIDES", setvar=False)
  23. e.data.setVar("PROVIDES", provs)
  24. # Process RPROVIDES
  25. origrprovs = rprovs = e.data.getVar("RPROVIDES", True) or ""
  26. for clsextend in clsextends:
  27. rprovs = rprovs + " " + clsextend.map_variable("RPROVIDES", setvar=False)
  28. e.data.setVar("RPROVIDES", rprovs)
  29. # Process RPROVIDES_${PN}...
  30. for pkg in (e.data.getVar("PACKAGES", True) or "").split():
  31. origrprovs = rprovs = e.data.getVar("RPROVIDES_%s" % pkg, True) or ""
  32. for clsextend in clsextends:
  33. rprovs = rprovs + " " + clsextend.map_variable("RPROVIDES_%s" % pkg, setvar=False)
  34. rprovs = rprovs + " " + clsextend.extname + "-" + pkg
  35. e.data.setVar("RPROVIDES_%s" % pkg, rprovs)
  36. }
  37. addhandler multilib_virtclass_handler_global
  38. multilib_virtclass_handler_global[eventmask] = "bb.event.RecipePreFinalise bb.event.RecipeParsed"