Update preset.
[bertos.git] / wizard / BProject.py
index c2f6613a5f5fe0557ae8837f2bace3dc1f7e3e04..0a1adea95d4a7640f2c5555be6b15547c17694d4 100644 (file)
@@ -28,7 +28,6 @@
 #
 # Copyright 2008 Develer S.r.l. (http://www.develer.com/)
 #
-# $Id$
 #
 # Author: Lorenzo Berni <duplo@develer.com>
 #
@@ -95,6 +94,9 @@ class BProject(object):
             self.infos["PROJECT_SRC_PATH"] = os.path.join(self.infos["PROJECT_PATH"], self.infos["PROJECT_NAME"])
         self.infos["PROJECT_HW_PATH"] = os.path.join(self.infos["PROJECT_PATH"], project_data.get("PROJECT_HW_PATH", self.infos["PROJECT_PATH"]))
 
+        self.infos["PROJECT_SRC_PATH_FROM_MAKEFILE"] = project_data.get("PROJECT_SRC_PATH_FROM_MAKEFILE")
+        self.infos["PROJECT_HW_PATH_FROM_MAKEFILE"] = project_data.get("PROJECT_HW_PATH_FROM_MAKEFILE")
+
         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
@@ -148,7 +150,7 @@ class BProject(object):
         toolchain = toolchain
         if forced_toolchain:
             toolchain = forced_toolchain
-        if os.path.exists(toolchain["path"]):
+        if os.path.exists(toolchain["path"]) or bertos_utils.findInPath(toolchain["path"]):
             self.infos["TOOLCHAIN"] = toolchain
         else:
             raise ToolchainException(self)
@@ -209,14 +211,14 @@ class BProject(object):
         _tree["info"] = self._loadPresetInfo(os.path.join(path, const.PREDEFINED_BOARD_SPEC_FILE))
         _tree["info"]["filename"] = os.path.basename(path)
         _tree["info"]["path"] = path
-        _tree["children"] = []
+        _tree["children"] = {}
         entries = set(os.listdir(path))
         for entry in entries:
             _path = os.path.join(path, entry)
             if os.path.isdir(_path):
                 sub_entries = set(os.listdir(_path))
                 if const.PREDEFINED_BOARD_SPEC_FILE in sub_entries:
-                    _tree["children"].append(self._loadProjectPresetTree(_path))
+                    _tree["children"][_path] = self._loadProjectPresetTree(_path)
         # Add into the info dict the dir type (dir/project)
         if _tree["children"]:
             _tree["info"]["type"] = "dir"
@@ -245,7 +247,7 @@ class BProject(object):
                 try:
                     to_be_parsed, module_dict = loadModuleDefinition(comment_list[0])
                 except ParseError, err:
-                    raise DefineException.ModuleDefineException(path, err.line_number, err.line)
+                    raise DefineException.ModuleDefineException(os.path.join(path, filename), err.line_number, err.line)
                 for module, information in module_dict.items():
                     if "depends" not in information:
                         information["depends"] = ()
@@ -283,7 +285,7 @@ class BProject(object):
                         list_dict = loadDefineLists(comment_list[1:])
                         list_info_dict.update(list_dict)
                     except ParseError, err:
-                        raise DefineException.EnumDefineException(path, err.line_number, err.line)
+                        raise DefineException.EnumDefineException(os.path.join(path, filename), err.line_number, err.line)
         for tag in self.infos["CPU_INFOS"]["CPU_TAGS"]:
             for filename, path in self.findDefinitions("*_" + tag + ".h"):
                 comment_list = getCommentList(open(path + "/" + filename, "r").read())
@@ -368,10 +370,6 @@ class BProject(object):
         # 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")
-
         # Create project files for selected plugins
         self._createProjectFiles()
 
@@ -388,8 +386,11 @@ class BProject(object):
             self._mergeSources(self.bertos_maindir, self.srcdir, self.old_srcdir)
             # Copy all the hw files
             self._writeHwFiles(self.bertos_srcdir, self.hwdir)
-            # Destination wizard mk file
-            self._writeWizardMkFile()
+
+        # Destination wizard mk file (it seems that this file need to be
+        # rewritten also if the project is a preset)...
+        self._writeWizardMkFile()
+
         # Set properly the autoenabled parameters
         self._setupAutoenabledParameters()
         # Copy all the configuration files