From 2d39e5699fd16e7bb3b90792a291711de1c70fea Mon Sep 17 00:00:00 2001 From: sergei Trofimov Date: Mon, 30 Apr 2018 16:29:44 +0100 Subject: [PATCH] fw/target: make TargetInfo more POD-like Split out the loading of the TargetInfo from a target into a separate function, leaving TargetInfo as a simple container. --- wa/framework/target/info.py | 64 ++++++++++++++++------------------ wa/framework/target/manager.py | 4 +-- 2 files changed, 32 insertions(+), 36 deletions(-) diff --git a/wa/framework/target/info.py b/wa/framework/target/info.py index 3c719c02..39e0a220 100644 --- a/wa/framework/target/info.py +++ b/wa/framework/target/info.py @@ -42,6 +42,25 @@ def kernel_config_from_pod(pod): return config +def get_target_info(target): + info = TargetInfo() + info.target = target.__class__.__name__ + info.cpuinfo = target.cpuinfo + info.os = target.os + info.os_version = target.os_version + info.abi = target.abi + info.is_rooted = target.is_rooted + info.kernel_version = target.kernel_version + info.kernel_config = target.config + + if isinstance(target, AndroidTarget): + info.screen_resolution = target.screen_resolution + info.prop = target.getprop() + info.android_id = target.android_id + + return info + + class TargetInfo(object): @staticmethod @@ -56,8 +75,7 @@ class TargetInfo(object): instance.is_rooted = pod['is_rooted'] instance.kernel_version = kernel_version_from_pod(pod) instance.kernel_config = kernel_config_from_pod(pod) - - if pod["target"] == "AndroidTarget": + if instance.os == 'android': instance.screen_resolution = pod['screen_resolution'] instance.prop = AndroidProperties('') instance.prop._properties = pod['prop'] @@ -65,36 +83,15 @@ class TargetInfo(object): return instance - def __init__(self, target=None): - if target: - self.target = target.__class__.__name__ - self.cpuinfo = target.cpuinfo - self.os = target.os - self.os_version = target.os_version - self.abi = target.abi - self.is_rooted = target.is_rooted - self.kernel_version = target.kernel_version - self.kernel_config = target.config - - if isinstance(target, AndroidTarget): - self.screen_resolution = target.screen_resolution - self.prop = target.getprop() - self.android_id = target.android_id - - else: - self.target = None - self.cpuinfo = None - self.os = None - self.os_version = None - self.abi = None - self.is_rooted = None - self.kernel_version = None - self.kernel_config = None - - if isinstance(target, AndroidTarget): - self.screen_resolution = None - self.prop = None - self.android_id = None + def __init__(self): + self.target = None + self.cpuinfo = None + self.os = None + self.os_version = None + self.abi = None + self.is_rooted = None + self.kernel_version = None + self.kernel_config = None def to_pod(self): pod = {} @@ -108,8 +105,7 @@ class TargetInfo(object): pod['kernel_release'] = self.kernel_version.release pod['kernel_version'] = self.kernel_version.version pod['kernel_config'] = dict(self.kernel_config.iteritems()) - - if self.target == "AndroidTarget": + if self.os == 'android': pod['screen_resolution'] = self.screen_resolution pod['prop'] = self.prop._properties pod['android_id'] = self.android_id diff --git a/wa/framework/target/manager.py b/wa/framework/target/manager.py index 7229d233..fa231f7c 100644 --- a/wa/framework/target/manager.py +++ b/wa/framework/target/manager.py @@ -6,7 +6,7 @@ from wa.framework.plugin import Parameter from wa.framework.target.descriptor import (get_target_description, instantiate_target, instantiate_assistant) -from wa.framework.target.info import TargetInfo +from wa.framework.target.info import get_target_info from wa.framework.target.runtime_parameter_manager import RuntimeParameterManager from devlib import Gem5SimulationPlatform @@ -72,7 +72,7 @@ class TargetManager(object): @memoized def get_target_info(self): - return TargetInfo(self.target) + return get_target_info(self.target) def merge_runtime_parameters(self, parameters): return self.rpm.merge_runtime_parameters(parameters)