+def setEnabledModules(project_info, enabled_modules):
+ modules = project_info.info("MODULES")
+ files = {}
+ for module, information in modules.items():
+ information["enabled"] = module in enabled_modules
+ if information["enabled"]:
+ for dependency in information["depends"]:
+ if not dependency in modules:
+ files[dependency] = files.get(dependency, 0) + 1
+ project_info.setInfo("MODULES", modules)
+ project_info.setInfo("FILES", files)
+
+def enabledModules(project_info):
+ enabled_modules = []
+ for name, module in project_info.info("MODULES").items():
+ if module["enabled"]:
+ enabled_modules.append(name)
+ return enabled_modules
+
+def presetList(directory):
+ """
+ Return the list of the preset found in the selected BeRTOS Version.
+ """
+ def getPresetInfo(preset_dir):
+ # Find and returns information about the preset
+ # Keys needed for BBoardPage:
+ # - "name": <name of the board/preset>
+ # - "description": <description of the preset>
+
+ # NOTE: this is only a test stub.
+ preset_info = pickle.loads(open(os.path.join(preset_dir, 'info'), "r").read())
+ return preset_info
+ abspath = os.path.join(directory, const.PREDEFINED_BOARDS_DIR)
+ preset_list = dict([
+ (os.path.join(abspath, preset_dir), getPresetInfo(os.path.join(abspath, preset_dir)))
+ for preset_dir in os.listdir(os.path.join(directory, const.PREDEFINED_BOARDS_DIR))
+ ])
+ return preset_list
+
+def mergeSources(srcdir, new_sources, old_sources):
+ # The current mergeSources function provide only a raw copy of the sources in the
+ # created project.
+ #
+ # TODO: implement the three way merge algorithm
+ #
+ shutil.rmtree(srcdir, True)
+ copytree.copytree(os.path.join(new_sources, "bertos"), srcdir, ignore_list=const.IGNORE_LIST)
+
+def projectFileGenerator(project_info):
+ directory = project_info.info("PROJECT_PATH")
+ project_data = {}
+ enabled_modules = []
+ for module, information in project_info.info("MODULES").items():
+ if information["enabled"]:
+ enabled_modules.append(module)
+ project_data["ENABLED_MODULES"] = enabled_modules
+ # 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["PROJECT_NAME"] = project_info.info("PROJECT_NAME", os.path.basename(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):
+ directory = project_info.info("PROJECT_PATH")
+ sources_dir = project_info.info("SOURCES_PATH")
+ old_sources_dir = project_info.info("OLD_SOURCES_PATH")
+ if not edit:
+ if os.path.isdir(directory):
+ shutil.rmtree(directory, True)
+ os.makedirs(directory)
+ # Write the project file