1
0
mirror of https://git.yoctoproject.org/poky synced 2026-04-20 11:28:58 +00:00

recipetool: create: set up priority system for recipe handlers

Sometimes we want to force one handler to run before another; if the two
handlers are in different plugins that's difficult without some kind of
priority number, so add one and sort by it.

(From OE-Core rev: 0219d4fb9cefcee635387b46fc1d215f82753d92)

Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
Paul Eggleton
2015-12-22 17:03:01 +13:00
committed by Richard Purdie
parent 38803e38d6
commit 6a7661b800

View File

@@ -251,10 +251,22 @@ def create_recipe(args):
lines_after.append('')
# Find all plugins that want to register handlers
handlers = []
logger.debug('Loading recipe handlers')
raw_handlers = []
for plugin in plugins:
if hasattr(plugin, 'register_recipe_handlers'):
plugin.register_recipe_handlers(handlers)
plugin.register_recipe_handlers(raw_handlers)
# Sort handlers by priority
handlers = []
for i, handler in enumerate(raw_handlers):
if isinstance(handler, tuple):
handlers.append((handler[0], handler[1], i))
else:
handlers.append((handler, 0, i))
handlers.sort(key=lambda item: (item[1], -item[2]), reverse=True)
for handler, priority, _ in handlers:
logger.debug('Handler: %s (priority %d)' % (handler.__class__.__name__, priority))
handlers = [item[0] for item in handlers]
# Apply the handlers
classes = []