mirror of
https://git.yoctoproject.org/poky
synced 2026-04-18 21:32:12 +02:00
bitbake: bitbake: bitbake-worker: Preserve network non-local uid
The NIS can't work when network is dissable, so preserve network for it, the error is like: do_ypcall: clnt_call: RPC: Unable to send; errno = Network is unreachable Note, enable nscd on the build machine might be a solution, but that isn't reliable since it depends on whether the network function has been cached or not. (Bitbake rev: 4eafae7904bae6e5c6bc50356e8a9077f2e207fa) Signed-off-by: Robert Yang <liezhi.yang@windriver.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
committed by
Richard Purdie
parent
80bddd7c36
commit
d77178e8df
@@ -262,8 +262,11 @@ def fork_off_task(cfg, data, databuilder, workerdata, fn, task, taskname, taskha
|
||||
bb.utils.set_process_name("%s:%s" % (the_data.getVar("PN"), taskname.replace("do_", "")))
|
||||
|
||||
if not the_data.getVarFlag(taskname, 'network', False):
|
||||
logger.debug("Attempting to disable network")
|
||||
bb.utils.disable_network(uid, gid)
|
||||
if bb.utils.is_local_uid(uid):
|
||||
logger.debug("Attempting to disable network for %s" % taskname)
|
||||
bb.utils.disable_network(uid, gid)
|
||||
else:
|
||||
logger.debug("Skipping disable network for %s since %s is not a local uid." % (taskname, uid))
|
||||
|
||||
# exported_vars() returns a generator which *cannot* be passed to os.environ.update()
|
||||
# successfully. We also need to unset anything from the environment which shouldn't be there
|
||||
|
||||
@@ -1735,3 +1735,19 @@ def environment(**envvars):
|
||||
os.environ[var] = backup[var]
|
||||
else:
|
||||
del os.environ[var]
|
||||
|
||||
def is_local_uid(uid=''):
|
||||
"""
|
||||
Check whether uid is a local one or not.
|
||||
Can't use pwd module since it gets all UIDs, not local ones only.
|
||||
"""
|
||||
if not uid:
|
||||
uid = os.getuid()
|
||||
with open('/etc/passwd', 'r') as f:
|
||||
for line in f:
|
||||
line_split = line.split(':')
|
||||
if len(line_split) < 3:
|
||||
continue
|
||||
if str(uid) == line_split[2]:
|
||||
return True
|
||||
return False
|
||||
|
||||
Reference in New Issue
Block a user