From eb8dc40360f0cfef56fb6947cc817a547d6d9bc6 Mon Sep 17 00:00:00 2001 From: Dave Cobbley Date: Tue, 14 Aug 2018 10:05:37 -0700 Subject: [Subtree] Removing import-layers directory As part of the move to subtrees, need to bring all the import layers content to the top level. Change-Id: I4a163d10898cbc6e11c27f776f60e1a470049d8f Signed-off-by: Dave Cobbley Signed-off-by: Brad Bishop --- poky/meta/files/ext-sdk-prepare.py | 74 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 74 insertions(+) create mode 100644 poky/meta/files/ext-sdk-prepare.py (limited to 'poky/meta/files/ext-sdk-prepare.py') diff --git a/poky/meta/files/ext-sdk-prepare.py b/poky/meta/files/ext-sdk-prepare.py new file mode 100644 index 000000000..96c5212a2 --- /dev/null +++ b/poky/meta/files/ext-sdk-prepare.py @@ -0,0 +1,74 @@ +#!/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) -- cgit v1.2.3