mirror of
https://github.com/AsahiLinux/u-boot
synced 2025-02-17 22:49:02 +00:00
buildman: Write out the build command used
It is sometimes useful to see the exact 'make' command used by buildman for a commit. Add an output file for this. Signed-off-by: Simon Glass <sjg@chromium.org>
This commit is contained in:
parent
5a93c15743
commit
cd37d5bccf
3 changed files with 34 additions and 0 deletions
|
@ -273,14 +273,19 @@ class BuilderThread(threading.Thread):
|
|||
|
||||
# If we need to reconfigure, do that now
|
||||
cfg_file = os.path.join(out_dir, '.config')
|
||||
cmd_list = []
|
||||
if do_config or adjust_cfg:
|
||||
config_out = ''
|
||||
if self.mrproper:
|
||||
result = self.Make(commit, brd, 'mrproper', cwd,
|
||||
'mrproper', *args, env=env)
|
||||
config_out += result.combined
|
||||
cmd_list.append([self.builder.gnu_make, 'mrproper',
|
||||
*args])
|
||||
result = self.Make(commit, brd, 'config', cwd,
|
||||
*(args + config_args), env=env)
|
||||
cmd_list.append([self.builder.gnu_make] + args +
|
||||
config_args)
|
||||
config_out += result.combined
|
||||
do_config = False # No need to configure next time
|
||||
if adjust_cfg:
|
||||
|
@ -290,6 +295,7 @@ class BuilderThread(threading.Thread):
|
|||
args.append('cfg')
|
||||
result = self.Make(commit, brd, 'build', cwd, *args,
|
||||
env=env)
|
||||
cmd_list.append([self.builder.gnu_make] + args)
|
||||
if (result.return_code == 2 and
|
||||
('Some images are invalid' in result.stderr)):
|
||||
# This is handled later by the check for output in
|
||||
|
@ -303,6 +309,7 @@ class BuilderThread(threading.Thread):
|
|||
result.stderr = result.stderr.replace(src_dir + '/', '')
|
||||
if self.builder.verbose_build:
|
||||
result.stdout = config_out + result.stdout
|
||||
result.cmd_list = cmd_list
|
||||
else:
|
||||
result.return_code = 1
|
||||
result.stderr = 'No tool chain for %s\n' % brd.arch
|
||||
|
@ -378,6 +385,12 @@ class BuilderThread(threading.Thread):
|
|||
with open(os.path.join(build_dir, 'out-env'), 'wb') as fd:
|
||||
for var in sorted(env.keys()):
|
||||
fd.write(b'%s="%s"' % (var, env[var]))
|
||||
|
||||
with open(os.path.join(build_dir, 'out-cmd'), 'w',
|
||||
encoding='utf-8') as fd:
|
||||
for cmd in result.cmd_list:
|
||||
print(' '.join(cmd), file=fd)
|
||||
|
||||
lines = []
|
||||
for fname in BASE_ELF_FILENAMES:
|
||||
cmd = ['%snm' % self.toolchain.cross, '--size-sort', fname]
|
||||
|
|
|
@ -1300,6 +1300,14 @@ You should use 'buildman -nv <criteria>' instead of greoing the boards.cfg file,
|
|||
since it may be dropped altogether in future.
|
||||
|
||||
|
||||
Checking the command
|
||||
--------------------
|
||||
|
||||
Buildman writes out the toolchain information to a `toolchain` file within the
|
||||
output directory. It also writes the commands used to build U-Boot in an
|
||||
`out-cmd` file. You can check these if you suspect something strange is
|
||||
happening.
|
||||
|
||||
TODO
|
||||
----
|
||||
|
||||
|
|
|
@ -723,3 +723,16 @@ Some images are invalid'''
|
|||
control.get_allow_missing(False, False, 2, True))
|
||||
self.assertEqual(False,
|
||||
control.get_allow_missing(False, True, 2, True))
|
||||
|
||||
def testCmdFile(self):
|
||||
"""Test that the -cmd-out file is produced"""
|
||||
self._RunControl('-o', self._output_dir)
|
||||
board0_dir = os.path.join(self._output_dir, 'current', 'board0')
|
||||
self.assertTrue(os.path.exists(os.path.join(board0_dir, 'done')))
|
||||
cmd_fname = os.path.join(board0_dir, 'out-cmd')
|
||||
self.assertTrue(os.path.exists(cmd_fname))
|
||||
data = tools.read_file(cmd_fname)
|
||||
lines = data.splitlines()
|
||||
self.assertEqual(2, len(lines))
|
||||
self.assertRegex(lines[0], b'make O=/.*board0_defconfig')
|
||||
self.assertRegex(lines[0], b'make O=/.*-s.*')
|
||||
|
|
Loading…
Add table
Reference in a new issue