poky/bitbake/bin/bitbake-server
Richard Purdie e1e6066934 bitbake: bitbake-server/worker: Hide os.fork() deprecation warning
We're fairly careful in bitbake about how we handle fork() calls and believe our code
to be safe. The upstream deprecation warning is problematic as it can appear in log
output as a WARNING, breaking tests. It also tends to alarm users.

Hide the warning for now to avoids the test failures.

(Bitbake rev: c636bd629896f56e5f3d4030da3d1f130590afc6)

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2025-03-11 14:17:57 +00:00

1.6 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") warnings.filterwarnings("ignore", category=DeprecationWarning, message=".*use.of.fork.may.lead.to.deadlocks.in.the.child.") import logging sys.path.insert(0, os.path.join(os.path.dirname(os.path.dirname(sys.argv[0])), 'lib'))

import bb

bb.utils.check_system_locale()

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())

with open(logfile, 'a+') as so: 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)