packagegroup.py 982 B

12345678910111213141516171819202122232425262728293031323334
  1. #
  2. # SPDX-License-Identifier: GPL-2.0-only
  3. #
  4. import itertools
  5. def is_optional(feature, d):
  6. return bool(d.getVarFlag("FEATURE_PACKAGES_%s" % feature, "optional"))
  7. def packages(features, d):
  8. for feature in features:
  9. packages = d.getVar("FEATURE_PACKAGES_%s" % feature)
  10. for pkg in (packages or "").split():
  11. yield pkg
  12. def required_packages(features, d):
  13. req = [feature for feature in features if not is_optional(feature, d)]
  14. return packages(req, d)
  15. def optional_packages(features, d):
  16. opt = [feature for feature in features if is_optional(feature, d)]
  17. return packages(opt, d)
  18. def active_packages(features, d):
  19. return itertools.chain(required_packages(features, d),
  20. optional_packages(features, d))
  21. def active_recipes(features, d):
  22. import oe.packagedata
  23. for pkg in active_packages(features, d):
  24. recipe = oe.packagedata.recipename(pkg, d)
  25. if recipe:
  26. yield recipe