|
8 | 8 | from contextlib import closing
|
9 | 9 | from zipfile import ZipFile, ZIP_DEFLATED
|
10 | 10 | from operator import add
|
| 11 | +import yaml |
11 | 12 |
|
12 | 13 | from tools.utils import mkdir
|
13 | 14 | from tools.toolchains import TOOLCHAIN_CLASSES
|
|
19 | 20 |
|
20 | 21 | from tools.config import Config
|
21 | 22 |
|
| 23 | + |
22 | 24 | class OldLibrariesException(Exception): pass
|
23 | 25 |
|
24 | 26 | class FailedBuildException(Exception) : pass
|
@@ -109,19 +111,33 @@ def progen_get_project_data(self):
|
109 | 111 | }
|
110 | 112 | return project_data
|
111 | 113 |
|
| 114 | + def progen_make_yaml(self, project_data, name): |
| 115 | + fname = os.path.join(project_data['common']['export_dir'][0], "projects.yaml") |
| 116 | + project_data['common']['export_dir'] = project_data['common']['export_dir'][0] |
| 117 | + new_data = {"projects":{name:project_data}} |
| 118 | + if os.path.isfile(fname): |
| 119 | + os.remove(fname) |
| 120 | + with open(fname, 'w+') as f: |
| 121 | + f.write(yaml.dump(new_data, default_flow_style=False)) |
| 122 | + |
| 123 | + return fname |
| 124 | + |
112 | 125 | def progen_gen_file(self, tool_name, project_data, progen_build=False):
|
113 | 126 | """" Generate project using ProGen Project API """
|
114 |
| - settings = ProjectSettings() |
115 |
| - project = Project(self.program_name, [project_data], settings) |
116 |
| - # TODO: Fix this, the inc_dirs are not valid (our scripts copy files), therefore progen |
117 |
| - # thinks it is not dict but a file, and adds them to workspace. |
118 |
| - project.project['common']['include_paths'] = self.resources.inc_dirs |
119 |
| - project.generate(tool_name, copied=not self.sources_relative) |
120 |
| - if progen_build: |
121 |
| - print("Project exported, building...") |
122 |
| - result = project.build(tool_name) |
123 |
| - if result == -1: |
124 |
| - raise FailedBuildException("Build Failed") |
| 127 | + #project_data['common']['include_paths'] = self.resources.inc_dirs |
| 128 | + yaml_file = self.progen_make_yaml(project_data, self.program_name) |
| 129 | + generator = Generator(yaml_file) |
| 130 | + |
| 131 | + for project in generator.generate(''): |
| 132 | + #print diff(p, project.project) |
| 133 | + project.project['common']['include_paths'] = self.resources.inc_dirs |
| 134 | + if project.generate(tool_name, copied=not self.sources_relative) == -1: |
| 135 | + return -1 |
| 136 | + if progen_build: |
| 137 | + print "Project exported, now building..." |
| 138 | + if project.build(tool_name) == -1: |
| 139 | + raise FailedBuildException("Build Failed") |
| 140 | + return 0 |
125 | 141 |
|
126 | 142 | def __scan_all(self, path):
|
127 | 143 | resources = []
|
|
0 commit comments