From 7f1aae6e4c95d74fd20108ee8a16d35d514e4174 Mon Sep 17 00:00:00 2001 From: Marc Bonnici Date: Tue, 23 Jun 2020 14:47:23 +0100 Subject: [PATCH] fw/TargetManager: Fix Target Manger parameters not being used The target manager parameters have not been previously been used as they have been missing the required plumbing. Allow configuration of the TargetManager via the `device_config` section. --- doc/build_plugin_docs.py | 1 + wa/commands/show.py | 1 + wa/framework/configuration/plugin_cache.py | 3 ++- wa/framework/target/descriptor.py | 15 ++++++++++++--- 4 files changed, 16 insertions(+), 4 deletions(-) diff --git a/doc/build_plugin_docs.py b/doc/build_plugin_docs.py index 9b740dad..6c640bac 100755 --- a/doc/build_plugin_docs.py +++ b/doc/build_plugin_docs.py @@ -105,6 +105,7 @@ def generate_target_documentation(outdir): text += get_params_rst(td.platform_params) text += get_params_rst(td.target_params) text += get_params_rst(td.assistant_params) + text += get_params_rst(td.tm_params) wfh.write(text) diff --git a/wa/commands/show.py b/wa/commands/show.py index 45531a4c..89dde832 100644 --- a/wa/commands/show.py +++ b/wa/commands/show.py @@ -109,6 +109,7 @@ def get_rst_from_target(target): text += get_params_rst(target.platform_params) text += get_params_rst(target.target_params) text += get_params_rst(target.assistant_params) + text += get_params_rst(target.tm_params) text += '.. Note: For available runtime parameters please see the documentation' return text + '\n' diff --git a/wa/framework/configuration/plugin_cache.py b/wa/framework/configuration/plugin_cache.py index 188d226a..b81ba6e1 100644 --- a/wa/framework/configuration/plugin_cache.py +++ b/wa/framework/configuration/plugin_cache.py @@ -175,7 +175,8 @@ class PluginCache(object): def _get_target_params(self, name): td = self.targets[name] - return get_config_point_map(chain(td.target_params, td.platform_params, td.conn_params, td.assistant_params)) + return get_config_point_map(chain(td.target_params, td.platform_params, + td.conn_params, td.assistant_params, td.tm_params)) # pylint: disable=too-many-nested-blocks, too-many-branches def _merge_using_priority_specificity(self, specific_name, diff --git a/wa/framework/target/descriptor.py b/wa/framework/target/descriptor.py index 8fb138b3..ff9f829c 100644 --- a/wa/framework/target/descriptor.py +++ b/wa/framework/target/descriptor.py @@ -14,6 +14,7 @@ # import inspect +from itertools import chain from devlib import (LinuxTarget, AndroidTarget, LocalLinuxTarget, ChromeOsTarget, Platform, Juno, TC2, Gem5SimulationPlatform, @@ -57,6 +58,7 @@ def instantiate_target(tdesc, params, connect=None, extra_platform_params=None): platform_params = get_config_point_map(tdesc.platform_params) conn_params = get_config_point_map(tdesc.conn_params) assistant_params = get_config_point_map(tdesc.assistant_params) + tm_params = get_config_point_map(tdesc.tm_params) tp, pp, cp = {}, {}, {} @@ -75,7 +77,7 @@ def instantiate_target(tdesc, params, connect=None, extra_platform_params=None): elif name in conn_params: if not conn_params[name].deprecated: cp[name] = value - elif name in assistant_params: + elif name in chain(assistant_params, tm_params): pass else: msg = 'Unexpected parameter for {}: {}' @@ -111,7 +113,7 @@ class TargetDescription(object): def __init__(self, name, source, description=None, target=None, platform=None, conn=None, assistant=None, target_params=None, platform_params=None, - conn_params=None, assistant_params=None): + conn_params=None, assistant_params=None, tm_params=None): self.name = name self.source = source self.description = description @@ -123,10 +125,12 @@ class TargetDescription(object): self._set('platform_params', platform_params) self._set('conn_params', conn_params) self._set('assistant_params', assistant_params) + self._set('tm_params', tm_params) def get_default_config(self): param_attrs = ['target_params', 'platform_params', - 'conn_params', 'assistant_params'] + 'conn_params', 'assistant_params', + 'tm_params'] config = {} for pattr in param_attrs: for p in getattr(self, pattr): @@ -610,6 +614,10 @@ class DefaultTargetDescriptor(TargetDescriptor): def get_descriptions(self): # pylint: disable=attribute-defined-outside-init,too-many-locals + # pylint: disable=wrong-import-position,cyclic-import + # Import here to prevent circular import + from wa.framework.target.manager import TargetManager + result = [] for target_name, target_tuple in TARGETS.items(): (target, conn, unsupported_platforms), target_params = self._get_item(target_tuple) @@ -631,6 +639,7 @@ class DefaultTargetDescriptor(TargetDescriptor): td.target_params = target_params td.platform_params = platform_params td.assistant_params = assistant.parameters + td.tm_params = TargetManager.parameters if plat_conn: td.conn = plat_conn