Complete Yocto mirror with license table for TQMa6UL (2038-compliance)
- 264 license table entries with exact download URLs (224/264 resolved) - Complete sources/ directory with all BitBake recipes - Build configuration: tqma6ul-multi-mba6ulx, spaetzle (musl) - Full traceability for Softwarefreigabeantrag - GCC 13.4.0, Linux 6.6.102, U-Boot 2023.04, musl 1.2.4 - License distribution: GPL-2.0 (24), MIT (23), GPL-2.0+ (18), BSD-3 (16)
This commit is contained in:
91
sources/poky/meta/files/ext-sdk-prepare.py
Normal file
91
sources/poky/meta/files/ext-sdk-prepare.py
Normal file
@@ -0,0 +1,91 @@
|
||||
#!/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()
|
||||
|
||||
prserv = os.path.join(os.path.dirname(os.path.realpath(__file__)), 'conf', 'prserv.inc')
|
||||
if os.path.isfile(prserv):
|
||||
with open(logfile, 'a') as logf:
|
||||
logf.write('Importing PR data...\n')
|
||||
|
||||
ret = run_command_interruptible('bitbake-prserv-tool import %s' % prserv)
|
||||
|
||||
lastlog = get_last_consolelog()
|
||||
if lastlog:
|
||||
with open(lastlog, 'r') as f:
|
||||
for line in f:
|
||||
logf.write(line)
|
||||
if ret:
|
||||
print('ERROR: PR data import failed: error log written to %s' % logfile)
|
||||
return ret
|
||||
|
||||
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 -c build_native_sysroot && bitbake --quiet build-sysroots -c build_target_sysroot')
|
||||
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)
|
||||
Reference in New Issue
Block a user