From 4a19f44aa3ee90ca65710b2f3153bcaa8ec6c245 Mon Sep 17 00:00:00 2001 From: duplo Date: Fri, 17 Apr 2009 08:26:13 +0000 Subject: [PATCH] Add a stub for supported modules check git-svn-id: https://src.develer.com/svnoss/bertos/trunk@2528 38d2e660-2303-0410-9eaa-f027e97ec537 --- wizard/BModulePage.py | 13 ++++++++++++- wizard/bertos_utils.py | 26 +++++++++++++++++++++++++- 2 files changed, 37 insertions(+), 2 deletions(-) diff --git a/wizard/BModulePage.py b/wizard/BModulePage.py index 7c8472c3..f95b8e7a 100644 --- a/wizard/BModulePage.py +++ b/wizard/BModulePage.py @@ -4,7 +4,7 @@ # Copyright 2009 Develer S.r.l. (http://www.develer.com/) # All rights reserved. # -# $Id:$ +# $Id$ # # Author: Lorenzo Berni # @@ -15,6 +15,7 @@ from PyQt4.QtGui import * from BWizardPage import * import bertos_utils +from bertos_utils import SupportedException from DefineException import * from const import * @@ -321,6 +322,16 @@ class BModulePage(BWizardPage): Resolves the selection dependencies. """ modules = self.projectInfo("MODULES") + try: + supported = bertos_utils.isSupported(selectedModule, self.project()) + except SupportedException, e: + self.exceptionOccurred(self.tr("Error evaluating \"%1\" for module %2").arg(e.support_string).arg(selectedModule)) + supported = True + # Temporary feedback + if supported: + print "%s is supported" %selectedModule + else: + print "%s is not supported" %selectedModule modules[selectedModule]["enabled"] = True self.setProjectInfo("MODULES", modules) depends = self.projectInfo("MODULES")[selectedModule]["depends"] diff --git a/wizard/bertos_utils.py b/wizard/bertos_utils.py index 33942e8a..4fbc1b9c 100644 --- a/wizard/bertos_utils.py +++ b/wizard/bertos_utils.py @@ -172,7 +172,7 @@ def csrcGenerator(project_info): dependency_files |= set(dependencyCFiles) asm_files |= set(dependencySFiles) for file in module_files: - if not harvard or "harvard" not in information or information["harvard"] == "both": + if not harvard or information.get("harvard", "both") == "both": csrc.append(file) if harvard and "harvard" in information: pcsrc.append(file) @@ -307,6 +307,7 @@ def getTagSet(cpu_info): tag_set |= set([cpu["CPU_NAME"]]) tag_set |= set(cpu["CPU_TAGS"]) tag_set |= set([cpu["CORE_CPU"]]) + tag_set |= set([cpu["TOOLCHAIN"]]) return tag_set @@ -382,6 +383,24 @@ def loadModuleDefinition(first_comment): module_dict[module_name]["enabled"] = False return to_be_parsed, module_dict +def isSupported(module, project): + tag_dict = project.info("ALL_CPU_TAGS") + module = project.info("MODULES")[module] + if "supports" in module: + support_string = module["supports"] + for tag, value in tag_dict.items(): + while support_string.find(tag) != -1: + support_string = support_string.replace(tag, value) + supported = {} + try: + exec "supported = " + support_string in {}, supported + except: + raise SupportedException(support_string) + return supported["supported"] + else: + return True + + def loadDefineLists(comment_list): define_list = {} for comment in comment_list: @@ -593,3 +612,8 @@ class ParseError(Exception): Exception.__init__(self) self.line_number = line_number self.line = line + +class SupportedException(Exception): + def __init__(self, support_string): + Exception.__init__(self) + self.support_string = support_string \ No newline at end of file -- 2.25.1