The previous cleanups meant that when the cooker was started, profiling was always disabled as configuration was sent to the server later and this was too late to profile the main loop. Pass the "profile" option over the server commandline so that we can profile cooker itself again, the setting can now take effect early enough. (Bitbake rev: c97c1f1c127ef3f8fbbd1b4e187ab58bfb0a73e5) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
1.7 KiB
Executable File
#!/usr/bin/env python3
SPDX-License-Identifier: GPL-2.0-only
Copyright (C) 2020 Richard Purdie
import os import sys import warnings warnings.simplefilter("default") import logging sys.path.insert(0, os.path.join(os.path.dirname(os.path.dirname(sys.argv[0])), 'lib'))
if sys.getfilesystemencoding() != "utf-8": sys.exit("Please use a locale setting which supports UTF-8 (such as LANG=en_US.UTF-8).\nPython can't change the filesystem locale after loading so we need a UTF-8 when Python starts or things won't work.")
Users shouldn't be running this code directly
if len(sys.argv) != 11 or not sys.argv[1].startswith("decafbad"): print("bitbake-server is meant for internal execution by bitbake itself, please don't use it standalone.") sys.exit(1)
import bb.server.process
lockfd = int(sys.argv[2]) readypipeinfd = int(sys.argv[3]) logfile = sys.argv[4] lockname = sys.argv[5] sockname = sys.argv[6] timeout = float(sys.argv[7]) profile = bool(int(sys.argv[8])) xmlrpcinterface = (sys.argv[9], int(sys.argv[10])) if xmlrpcinterface[0] == "None": xmlrpcinterface = (None, xmlrpcinterface[1])
Replace standard fds with our own
with open('/dev/null', 'r') as si: os.dup2(si.fileno(), sys.stdin.fileno())
so = open(logfile, 'a+') os.dup2(so.fileno(), sys.stdout.fileno()) os.dup2(so.fileno(), sys.stderr.fileno())
Have stdout and stderr be the same so log output matches chronologically
and there aren't two seperate buffers
sys.stderr = sys.stdout
logger = logging.getLogger("BitBake")
Ensure logging messages get sent to the UI as events
handler = bb.event.LogHandler() logger.addHandler(handler)
bb.server.process.execServer(lockfd, readypipeinfd, lockname, sockname, timeout, xmlrpcinterface, profile)