X-Git-Url: https://codewiz.org/gitweb?a=blobdiff_plain;f=wizard%2Fbertos_utils.py;h=4c6c3317c5469620ab4c263c52663438923ef874;hb=751e05a8c44d88d8676527b2dcc377ba28735e0d;hp=84a88257f284b0f9ed40aa0dbde5f7a29f236685;hpb=df9d729fb8f0f2d34197215920576381b895c7f7;p=bertos.git diff --git a/wizard/bertos_utils.py b/wizard/bertos_utils.py index 84a88257..4c6c3317 100644 --- a/wizard/bertos_utils.py +++ b/wizard/bertos_utils.py @@ -45,7 +45,6 @@ import pickle import const import plugins import DefineException -import BProject from _wizard_version import WIZARD_VERSION @@ -76,6 +75,36 @@ def enabledModules(project_info): enabled_modules.append(name) return enabled_modules +def presetList(directory): + """ + Return the list of the preset found in the selected BeRTOS Version. + """ + abspath = os.path.join(directory, const.PREDEFINED_BOARDS_DIR) + preset_list = dict([ + (os.path.join(abspath, preset_dir), presetInfo(os.path.join(abspath, preset_dir))) + for preset_dir in os.listdir(os.path.join(directory, const.PREDEFINED_BOARDS_DIR)) + ]) + return preset_list + +def presetInfo(preset_dir): + """ + Return the preset-relevant info contined into the project_file. + """ + preset_info = pickle.loads(open(os.path.join(preset_dir, "project.bertos"), "r").read()) + try: + description = open(os.path.join(preset_dir, "description"), "r").read() + except IOError: + # No description file found. + description = "" + relevant_info = { + "CPU_NAME": preset_info.get("CPU_NAME"), + "SELECTED_FREQ": preset_info.get("SELECTED_FREQ"), + "WIZARD_VERSION": preset_info.get("WIZARD_VERSION", None), + "PRESET_NAME": preset_info.get("PROJECT_NAME"), + "PRESET_DESCRIPTION": description.decode("utf-8"), + } + return relevant_info + def mergeSources(srcdir, new_sources, old_sources): # The current mergeSources function provide only a raw copy of the sources in the # created project. @@ -409,12 +438,6 @@ def getToolchainName(toolchain_info): name = "GCC " + toolchain_info["version"] + " - " + toolchain_info["target"].strip() return name -def loadCpuInfos(project_info): - cpuInfos = [] - for definition in project_info.findDefinitions(const.CPU_DEFINITION): - cpuInfos.append(getInfos(definition)) - return cpuInfos - def getTagSet(cpu_info): tag_set = set([]) for cpu in cpu_info: @@ -578,59 +601,6 @@ def getDefinitionBlocks(text): block.append(([comment], define, start)) return block -def loadModuleData(project_info, edit=False): - module_info_dict = {} - list_info_dict = {} - configuration_info_dict = {} - file_dict = {} - for filename, path in project_info.findDefinitions("*.h") + project_info.findDefinitions("*.c") + project_info.findDefinitions("*.s") + project_info.findDefinitions("*.S"): - comment_list = getCommentList(open(path + "/" + filename, "r").read()) - if len(comment_list) > 0: - module_info = {} - configuration_info = {} - try: - to_be_parsed, module_dict = loadModuleDefinition(comment_list[0]) - except ParseError, err: - raise DefineException.ModuleDefineException(path, err.line_number, err.line) - for module, information in module_dict.items(): - if "depends" not in information: - information["depends"] = () - information["depends"] += (filename.split(".")[0],) - information["category"] = os.path.basename(path) - if "configuration" in information and len(information["configuration"]): - configuration = module_dict[module]["configuration"] - try: - configuration_info[configuration] = loadConfigurationInfos(project_info.info("SOURCES_PATH") + "/" + configuration) - except ParseError, err: - raise DefineException.ConfigurationDefineException(project_info.info("SOURCES_PATH") + "/" + configuration, err.line_number, err.line) - if edit: - try: - path = project_info.info("PROJECT_NAME") - directory = project_info.info("PROJECT_PATH") - user_configuration = loadConfigurationInfos(directory + "/" + configuration.replace("bertos", path)) - configuration_info[configuration] = updateConfigurationValues(configuration_info[configuration], user_configuration) - except ParseError, err: - raise DefineException.ConfigurationDefineException(directory + "/" + configuration.replace("bertos", path)) - module_info_dict.update(module_dict) - configuration_info_dict.update(configuration_info) - if to_be_parsed: - try: - list_dict = loadDefineLists(comment_list[1:]) - list_info_dict.update(list_dict) - except ParseError, err: - raise DefineException.EnumDefineException(path, err.line_number, err.line) - for filename, path in project_info.findDefinitions("*_" + project_info.info("CPU_INFOS")["TOOLCHAIN"] + ".h"): - comment_list = getCommentList(open(path + "/" + filename, "r").read()) - list_info_dict.update(loadDefineLists(comment_list)) - for tag in project_info.info("CPU_INFOS")["CPU_TAGS"]: - for filename, path in project_info.findDefinitions("*_" + tag + ".h"): - comment_list = getCommentList(open(path + "/" + filename, "r").read()) - list_info_dict.update(loadDefineLists(comment_list)) - project_info.setInfo("MODULES", module_info_dict) - project_info.setInfo("LISTS", list_info_dict) - project_info.setInfo("CONFIGURATIONS", configuration_info_dict) - project_info.setInfo("FILES", file_dict) - def formatParamNameValue(text): """ Take the given string and return a tuple with the name of the parameter in the first position