getCommentList, sub,
# Project creation functions
- projectFileGenerator, versionFileGenerator, makefileGenerator,
- userMkGenerator, mkGenerator, loadPlugin, mergeSources,
+ projectFileGenerator, versionFileGenerator, loadPlugin,
+ mergeSources,
# Custom exceptions
ParseError, SupportedException
)
+import bertos_utils
+
+from compatibility import updateProject
class BProject(object):
"""
def loadBertosProject(self, project_file, info_dict):
project_dir = os.path.dirname(project_file)
project_data = pickle.loads(open(project_file, "r").read())
+ updateProject(project_data)
# If PROJECT_NAME is not defined it use the directory name as PROJECT_NAME
# NOTE: this can throw an Exception if the user has changed the directory containing the project
self.infos["PROJECT_NAME"] = project_data.get("PROJECT_NAME", os.path.basename(project_dir))
self.infos["PROJECT_PATH"] = os.path.dirname(project_file)
- project_src_path = project_data.get("PROJECT_SRC_PATH", None)
- project_src_path = os.path.join(project_dir, project_data.get("PROJECT_SRC_PATH", None))
+ project_src_path = os.path.join(project_dir, project_data.get("PROJECT_SRC_PATH", project_data["PROJECT_NAME"]))
if project_src_path:
self.infos["PROJECT_SRC_PATH"] = project_src_path
# In projects created with older versions of the Wizard this metadata doesn't exist
self.infos["PROJECT_SRC_PATH"] = os.path.join(self.infos["PROJECT_PATH"], self.infos["PROJECT_NAME"])
- wizard_version = project_data.get("WIZARD_VERSION", 0)
- if wizard_version == 0:
- # Ignore the BERTOS_PATH inside the project file for older project
- project_data["BERTOS_PATH"] = project_dir
- elif wizard_version == 1:
- # Use SOURCES_PATH instead of BERTOS_PATH for backward compatibility
- project_data["BERTOS_PATH"] = project_data["SOURCES_PATH"]
linked_sources_path = project_data["BERTOS_PATH"]
sources_abspath = os.path.abspath(os.path.join(project_dir, linked_sources_path))
project_data["BERTOS_PATH"] = sources_abspath
# VERSION file
self._writeVersionFile(os.path.join(self.maindir, "VERSION"))
# Destination makefile
- self._writeMakefile(os.path.join(self.maindir, "Makefile"))
+ self._writeMakefile()
# Copy the sources
self._copySources(self.sources_dir, self.srcdir)
# Set properly the autoenabled parameters
# Copy all the configuration files
self._writeCfgFiles(self.sources_dir, self.cfgdir)
# Destination wizard mk file
- self._writeWizardMkFile(os.path.join(self.prjdir, os.path.basename(self.prjdir) + "_wiz.mk"))
+ self._writeWizardMkFile()
def _newCustomBertosProject(self):
# Create/write/copy the common things
# Copy all the hw files
self._writeHwFiles(self.sources_dir, self.hwdir)
# Destination user mk file
- self._writeUserMkFile(os.path.join(self.prjdir, os.path.basename(self.prjdir) + ".mk"))
+ self._writeUserMkFile()
# Destination main.c file
self._writeMainFile(self.prjdir + "/main.c")
# Create project files for selected plugins
# Create/write/copy the common things
self._newBertosProject()
- # Copy all the files and dirs except cfg/hw/*_wiz.mk
+ # Copy all the files and dirs except cfg/hw/*.mk
self._writeCustomSrcFiles()
+ # Copyt the new *_user.mk file
+ self._writeUserMkFileFromPreset()
+
if self.infos["EMPTY_MAIN"]:
# Create and empty main.c file only if the user check the box
self._writeMainFile(self.prjdir + "/main.c")
# VERSION file
self._writeVersionFile(os.path.join(self.maindir, "VERSION"))
# Destination makefile
- self._writeMakefile(os.path.join(self.maindir, "Makefile"))
+ self._writeMakefile()
# Merge sources
self._mergeSources(self.sources_dir, self.srcdir, self.old_srcdir)
# Copy all the hw files
self._writeHwFiles(self.sources_dir, self.hwdir)
# Destination wizard mk file
- self._writeWizardMkFile(os.path.join(self.prjdir, os.path.basename(self.prjdir) + "_wiz.mk"))
+ self._writeWizardMkFile()
# Set properly the autoenabled parameters
self._setupAutoenabledParameters()
# Copy all the configuration files
f.write(projectFileGenerator(self))
f.close()
- def _writeMakefile(self, filename):
- makefile = open(os.path.join(const.DATA_DIR, "mktemplates/Makefile"), "r").read()
- makefile = makefileGenerator(self, makefile)
- open(filename, "w").write(makefile)
+ def _writeMakefile(self):
+ bertos_utils.makefileGenerator(self)
+
+ def _writeUserMkFile(self):
+ bertos_utils.userMkGenerator(self)
- def _writeUserMkFile(self, filename):
- makefile = open(os.path.join(const.DATA_DIR, "mktemplates/template.mk"), "r").read()
- # Deadly performances loss was here :(
- makefile = userMkGenerator(self, makefile)
- open(filename, "w").write(makefile)
+ def _writeUserMkFileFromPreset(self):
+ bertos_utils.userMkGeneratorFromPreset(self)
- def _writeWizardMkFile(self, filename):
- makefile = open(os.path.join(const.DATA_DIR, "mktemplates/template_wiz.mk"), "r").read()
- makefile = mkGenerator(self, makefile)
- open(filename, "w").write(makefile)
+ def _writeWizardMkFile(self):
+ bertos_utils.mkGenerator(self)
def _writeMainFile(self, filename):
main = open(os.path.join(const.DATA_DIR, "srctemplates/main.c"), "r").read()
# Files to be ignored (all project files, cfg dir, wizard mk file, all global ignored dirs)
project_related_stuff = (
"cfg",
- self.infos["PRESET_NAME"] + "_wiz.mk",
+ self.infos["PRESET_NAME"] + ".mk",
+ self.infos["PRESET_NAME"] + "_user.mk",
"project.bertos",
self.infos["PRESET_NAME"] + ".project",
self.infos["PRESET_NAME"] + ".workspace",