[T106][ZXW-22]7520V3SCV2.01.01.02P42U09_VEC_V0.8_AP_VEC origin source commit

Change-Id: Ic6e05d89ecd62fc34f82b23dcf306c93764aec4b
diff --git a/cap/zx297520v3/sources/poky/meta/files/ext-sdk-prepare.py b/cap/zx297520v3/sources/poky/meta/files/ext-sdk-prepare.py
new file mode 100644
index 0000000..163d5e9
--- /dev/null
+++ b/cap/zx297520v3/sources/poky/meta/files/ext-sdk-prepare.py
@@ -0,0 +1,74 @@
+#!/usr/bin/env python3
+
+# 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)