X-Git-Url: https://codewiz.org/gitweb?a=blobdiff_plain;f=wizard%2Fbertos_utils.py;h=808485b0cd1df4606374484faf46099279cfe3da;hb=4daefac32ad5a2198f911584f1e5abea001d6062;hp=48cbbbf0a4e3bc7c578614d0353ef4c114d36940;hpb=5f1b77ea18c6d68bd5372d424e1b2fec0790a434;p=bertos.git diff --git a/wizard/bertos_utils.py b/wizard/bertos_utils.py index 48cbbbf0..808485b0 100644 --- a/wizard/bertos_utils.py +++ b/wizard/bertos_utils.py @@ -47,6 +47,8 @@ import plugins import DefineException import BProject +from _wizard_version import WIZARD_VERSION + from LoadException import VersionException, ToolchainException def isBertosDir(directory): @@ -56,15 +58,23 @@ def bertosVersion(directory): return open(directory + "/VERSION").readline().strip() def loadBertosProject(project_file, info_dict): + project_dir = os.path.dirname(project_file) project_data = pickle.loads(open(project_file, "r").read()) project_info = BProject.BProject() project_info.setInfo("PROJECT_PATH", os.path.dirname(project_file)) + # Check for the Wizard version + wizard_version = project_data.get("WIZARD_VERSION", 0) + if not wizard_version: + project_data["SOURCES_PATH"] = project_dir if "SOURCES_PATH" in info_dict: project_data["SOURCES_PATH"] = info_dict["SOURCES_PATH"] if os.path.exists(project_data["SOURCES_PATH"]): project_info.setInfo("SOURCES_PATH", project_data["SOURCES_PATH"]) else: raise VersionException(project_info) + if not isBertosDir(os.path.dirname(project_file)): + version_file = open(os.path.join(const.DATA_DIR, "vtemplates/VERSION"), "r").read() + open(os.path.join(project_dir, "VERSION"), "w").write(version_file.replace("$version", "").strip()) loadSourceTree(project_info) cpu_name = project_data["CPU_NAME"] project_info.setInfo("CPU_NAME", cpu_name) @@ -135,11 +145,14 @@ def projectFileGenerator(project_info): if information["enabled"]: enabled_modules.append(module) project_data["ENABLED_MODULES"] = enabled_modules - project_data["SOURCES_PATH"] = project_info.info("SOURCES_PATH") + # Use the local BeRTOS version instead of the original one + # project_data["SOURCES_PATH"] = project_info.info("SOURCES_PATH") + project_data["SOURCES_PATH"] = directory project_data["TOOLCHAIN"] = project_info.info("TOOLCHAIN") project_data["CPU_NAME"] = project_info.info("CPU_NAME") project_data["SELECTED_FREQ"] = project_info.info("SELECTED_FREQ") project_data["OUTPUT"] = project_info.info("OUTPUT") + project_data["WIZARD_VERSION"] = WIZARD_VERSION return pickle.dumps(project_data) def createBertosProject(project_info, edit=False): @@ -223,7 +236,8 @@ def createBertosProject(project_info, edit=False): if not edit: # Destination user mk file (only on project creation) makefile = open(os.path.join(const.DATA_DIR, "mktemplates/template.mk"), "r").read() - makefile = mkGenerator(project_info, makefile) + # Deadly performances loss was here :( + makefile = userMkGenerator(project_info, makefile) open(prjdir + "/" + os.path.basename(prjdir) + ".mk", "w").write(makefile) # Destination wizard mk file makefile = open(os.path.join(const.DATA_DIR, "mktemplates/template_wiz.mk"), "r").read() @@ -250,6 +264,14 @@ def versionFileGenerator(project_info, version_file): version = bertosVersion(project_info.info("SOURCES_PATH")) return version_file.replace('$version', version) +def userMkGenerator(project_info, makefile): + mk_data = {} + mk_data["$pname"] = os.path.basename(project_info.info("PROJECT_PATH")) + for key in mk_data: + while makefile.find(key) != -1: + makefile = makefile.replace(key, mk_data[key]) + return makefile + def mkGenerator(project_info, makefile): """ Generates the mk file for the current project. @@ -437,7 +459,12 @@ def getToolchainName(toolchain_info): return name def loadSourceTree(project): - fileList = [f for f in os.walk(project.info("SOURCES_PATH"))] + # Index only the SOURCES_PATH/bertos content + bertos_sources_dir = os.path.join(project.info("SOURCES_PATH"), 'bertos') + if os.path.exists(bertos_sources_dir): + fileList = [f for f in os.walk(bertos_sources_dir)] + else: + fileList = [] project.setInfo("FILE_LIST", fileList) def findDefinitions(ftype, project):