| 
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