X-Git-Url: https://codewiz.org/gitweb?a=blobdiff_plain;ds=sidebyside;f=wizard%2Fbertos_utils.py;h=3ba5cfcc15d3a021e9ac405822af35d995bba0cb;hb=b8a137380f022b894587295607cc4dc3f0e7fb00;hp=98fd23dde905930765964e160d0d00c35a17564b;hpb=85a0e5ef831385250d4855b1a19b1ae561f14f0c;p=bertos.git diff --git a/wizard/bertos_utils.py b/wizard/bertos_utils.py index 98fd23dd..3ba5cfcc 100644 --- a/wizard/bertos_utils.py +++ b/wizard/bertos_utils.py @@ -58,19 +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"] = os.path.dirname(project_file) + 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) @@ -232,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() @@ -259,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. @@ -454,13 +467,19 @@ def loadSourceTree(project): fileList = [] project.setInfo("FILE_LIST", fileList) +_cached_queries = {} + def findDefinitions(ftype, project): + definitions = _cached_queries.get(ftype, None) + if definitions is not None: + return definitions L = project.info("FILE_LIST") definitions = [] for element in L: for filename in element[2]: if fnmatch.fnmatch(filename, ftype): definitions.append((filename, element[0])) + _cached_queries[ftype] = definitions return definitions def loadCpuInfos(project):