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))
# 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
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)
+ makefileGenerator(self, filename)
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)
+ userMkGenerator(self, filename)
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)
+ mkGenerator(self, filename)
def _writeMainFile(self, filename):
main = open(os.path.join(const.DATA_DIR, "srctemplates/main.c"), "r").read()
version = bertosVersion(project_info.info("BERTOS_PATH"))
return version_file.replace('$version', version)
-def userMkGenerator(project_info, makefile):
+def userMkGenerator(project_info, destination):
+ makefile = open(os.path.join(const.DATA_DIR, "mktemplates/template.mk"), "r").read()
+ # Deadly performances loss was here :(
mk_data = {}
mk_data["$pname"] = os.path.basename(project_info.info("PROJECT_PATH"))
mk_data["$main"] = os.path.basename(project_info.info("PROJECT_PATH")) + "/main.c"
for key in mk_data:
while makefile.find(key) != -1:
makefile = makefile.replace(key, mk_data[key])
- return makefile
+ open(destination, "w").write(makefile)
-def mkGenerator(project_info, makefile):
+def mkGenerator(project_info, destination):
"""
Generates the mk file for the current project.
"""
+ makefile = open(os.path.join(const.DATA_DIR, "mktemplates/template_wiz.mk"), "r").read()
mk_data = {}
mk_data["$pname"] = project_info.info("PROJECT_NAME")
mk_data["$cpuclockfreq"] = project_info.info("SELECTED_FREQ")
for key in mk_data:
while makefile.find(key) != -1:
makefile = makefile.replace(key, mk_data[key])
- return makefile
+ open(destination, "w").write(makefile)
-def makefileGenerator(project_info, makefile):
+def makefileGenerator(project_info, destination):
"""
Generate the Makefile for the current project.
"""
+ makefile = open(os.path.join(const.DATA_DIR, "mktemplates/Makefile"), "r").read()
# TODO write a general function that works for both the mk file and the Makefile
while makefile.find("$pname") != -1:
makefile = makefile.replace("$pname", project_info.info("PROJECT_NAME"))
- return makefile
+ open(destination, "w").write(makefile)
def csrcGenerator(project_info):
modules = project_info.info("MODULES")
--- /dev/null
+#!/usr/bin/env python
+# encoding: utf-8
+#
+# This file is part of slimqc.
+#
+# Bertos is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+#
+# As a special exception, you may use this file as part of a free software
+# library without restriction. Specifically, if other files instantiate
+# templates or use macros or inline functions from this file, or you compile
+# this file and link it with other files to produce an executable, this
+# file does not by itself cause the resulting executable to be covered by
+# the GNU General Public License. This exception does not however
+# invalidate any other reasons why the executable file might be covered by
+# the GNU General Public License.
+#
+# Copyright 2010 Develer S.r.l. (http://www.develer.com/)
+#
+# $Id$
+#
+# Author: Lorenzo Berni <duplo@develer.com>
+#
+
+def updateProject(project_data):
+ """
+ Update incrementally the project_data loaded from a BeRTOS Wizard project
+ file.
+ """
+ wizard_version = project_data.get("WIZARD_VERSION", 0)
+ if wizard_version < 1:
+ # Ignore the BERTOS_PATH inside the project file for older project
+ project_data["SOURCES_PATH"] = project_dir
+ if wizard_version < 2:
+ # Use SOURCES_PATH instead of BERTOS_PATH for backward compatibility
+ project_data["BERTOS_PATH"] = project_data["SOURCES_PATH"]
+ return project_data
+