mirror of
git://git.yoctoproject.org/poky.git
synced 2025-07-19 21:09:03 +02:00

In order to have a shared sysroot usable within the eSDK after recipe specific sysroots were implemented, we need to run bitbake build-sysroots as a separate call. However, unlike the first call, --quiet wasn't being specified and that somewhat undermined the earlier effort to clean up the eSDK installation output. Make this second call quiet as well so that the output is tidier. (From OE-Core rev: 56b73788edaa0796e53f1a30e9ebdb2ae85b1646) Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
75 lines
2.3 KiB
Python
75 lines
2.3 KiB
Python
#!/usr/bin/env python
|
|
|
|
# Prepare the build system within the extensible SDK
|
|
|
|
import sys
|
|
import os
|
|
import subprocess
|
|
import signal
|
|
|
|
def reenable_sigint():
|
|
signal.signal(signal.SIGINT, signal.SIG_DFL)
|
|
|
|
def run_command_interruptible(cmd):
|
|
"""
|
|
Run a command with output displayed on the console, but ensure any Ctrl+C is
|
|
processed only by the child process.
|
|
"""
|
|
signal.signal(signal.SIGINT, signal.SIG_IGN)
|
|
try:
|
|
ret = subprocess.call(cmd, shell=True, preexec_fn=reenable_sigint)
|
|
finally:
|
|
signal.signal(signal.SIGINT, signal.SIG_DFL)
|
|
return ret
|
|
|
|
def get_last_consolelog():
|
|
'''Return the most recent console log file'''
|
|
logdir = os.path.join(os.path.dirname(os.path.realpath(__file__)), 'tmp', 'log', 'cooker')
|
|
if os.path.exists(logdir):
|
|
mcdir = os.listdir(logdir)
|
|
if mcdir:
|
|
logdir = os.path.join(logdir, mcdir[0])
|
|
logfiles = [os.path.join(logdir, fn) for fn in os.listdir(logdir)]
|
|
logfiles.sort(key=os.path.getmtime)
|
|
if logfiles:
|
|
return os.path.join(logdir, logfiles[-1])
|
|
return None
|
|
|
|
def main():
|
|
if len(sys.argv) < 2:
|
|
print('Please specify output log file')
|
|
return 1
|
|
logfile = sys.argv[1]
|
|
if len(sys.argv) < 3:
|
|
sdk_targets = []
|
|
else:
|
|
sdk_targets = ' '.join(sys.argv[2:]).split()
|
|
if not sdk_targets:
|
|
# Just do a parse so the cache is primed
|
|
ret = run_command_interruptible('bitbake -p --quiet')
|
|
return ret
|
|
|
|
with open(logfile, 'a') as logf:
|
|
logf.write('Preparing SDK for %s...\n' % ', '.join(sdk_targets))
|
|
|
|
ret = run_command_interruptible('BB_SETSCENE_ENFORCE=1 bitbake --quiet %s' % ' '.join(sdk_targets))
|
|
if not ret:
|
|
ret = run_command_interruptible('bitbake --quiet build-sysroots')
|
|
lastlog = get_last_consolelog()
|
|
if lastlog:
|
|
with open(lastlog, 'r') as f:
|
|
for line in f:
|
|
logf.write(line)
|
|
if ret:
|
|
print('ERROR: SDK preparation failed: error log written to %s' % logfile)
|
|
return ret
|
|
|
|
if __name__ == "__main__":
|
|
try:
|
|
ret = main()
|
|
except Exception:
|
|
ret = 1
|
|
import traceback
|
|
traceback.print_exc()
|
|
sys.exit(ret)
|