|
11 | 11 |
|
12 | 12 | from west import log |
13 | 13 | from west.configuration import config |
| 14 | +from west.util import west_topdir |
| 15 | +from west.version import __version__ |
14 | 16 | from zcmake import DEFAULT_CMAKE_GENERATOR, run_cmake, run_build, CMakeCache |
15 | 17 | from build_helpers import is_zephyr_build, find_build_dir, load_domains, \ |
16 | 18 | FIND_BUILD_DIR_DESCRIPTION |
|
22 | 24 | SYSBUILD_PROJ_DIR = pathlib.Path(__file__).resolve().parent.parent.parent \ |
23 | 25 | / pathlib.Path('share/sysbuild') |
24 | 26 |
|
| 27 | +BUILD_INFO_LOG = 'build_info.yml' |
| 28 | + |
25 | 29 | BUILD_USAGE = '''\ |
26 | 30 | west build [-h] [-b BOARD[@REV]]] [-d BUILD_DIR] |
27 | 31 | [-S SNIPPET] [--shield SHIELD] |
@@ -227,9 +231,25 @@ def do_run(self, args, remainder): |
227 | 231 | self.run_cmake = True |
228 | 232 | else: |
229 | 233 | self.run_cmake = True |
| 234 | + |
230 | 235 | self.source_dir = self._find_source_dir() |
231 | 236 | self._sanity_check() |
232 | 237 |
|
| 238 | + build_info_path = self.build_dir |
| 239 | + build_info_file = os.path.join(build_info_path, BUILD_INFO_LOG) |
| 240 | + west_workspace = west_topdir(self.source_dir) |
| 241 | + if not os.path.exists(build_info_path): |
| 242 | + os.makedirs(build_info_path) |
| 243 | + if not os.path.exists(build_info_file): |
| 244 | + build_command = {'west': {'command': ' '.join(sys.argv[:]), |
| 245 | + 'topdir': str(west_workspace), |
| 246 | + 'version': str(__version__)}} |
| 247 | + try: |
| 248 | + with open(build_info_file, "w") as f: |
| 249 | + yaml.dump(build_command, f, default_flow_style=False) |
| 250 | + except Exception as e: |
| 251 | + log.wrn(f'Failed to create info file: {build_info_file},', e) |
| 252 | + |
233 | 253 | board, origin = self._find_board() |
234 | 254 | self._run_cmake(board, origin, self.args.cmake_opts) |
235 | 255 | if args.cmake_only: |
|
0 commit comments