mirror of
https://github.com/thead-yocto-mirror/meta-external-toolchain
synced 2026-09-05 23:44:38 +02:00
tcmode: disable pseudo for gcc/g++/cpp
The sourcery toolchain writes temporary files to /tmp, and includes the username. If multiple users are doing builds with pseudo enabled, it'll try to write to the other user's file, since both will use 'root', and the build will fail as a result. We don't want to wrap all the toolcahin binaries, as they don't all call the tools which write these lockfiles, and objcopy has to be excluded, as it modifies installed binaries when the packaging process splits out the debug info. If that operation occurs outside of pseudo's knowledge, Bad Things will happen. JIRA: MEIP-393, SB-1905 Signed-off-by: Christopher Larson <kergoth@gmail.com>
This commit is contained in:
committed by
Christopher Larson
parent
6f37610680
commit
e7c5f947bf
@@ -158,15 +158,24 @@ def populate_toolchain_links(d):
|
||||
|
||||
bindir = d.getVar('STAGING_BINDIR_TOOLCHAIN', True)
|
||||
bb.utils.mkdirhier(bindir)
|
||||
wrapped = ['gcc', 'g++', 'cpp']
|
||||
for f in files:
|
||||
base = os.path.basename(f)
|
||||
newpath = os.path.join(bindir, base)
|
||||
try:
|
||||
os.symlink(f, newpath)
|
||||
except OSError as exc:
|
||||
if exc.errno == errno.EEXIST:
|
||||
break
|
||||
bb.fatal("Unable to populate toolchain binary symlink for %s: %s" % (newpath, exc))
|
||||
if not os.path.exists(newpath):
|
||||
if any(base.endswith(w) for w in wrapped):
|
||||
with open(newpath, 'w') as new:
|
||||
new.write('#!/bin/sh\n')
|
||||
new.write('export PSEUDO_UNLOAD=1\n')
|
||||
new.write('exec {0} "$@"\n'.format(f))
|
||||
os.chmod(newpath, 0755)
|
||||
else:
|
||||
try:
|
||||
os.symlink(f, newpath)
|
||||
except OSError as exc:
|
||||
if exc.errno == errno.EEXIST:
|
||||
break
|
||||
bb.fatal("Unable to populate toolchain binary symlink for %s: %s" % (newpath, exc))
|
||||
|
||||
# Ensure that we have a ld.bfd available, now that KERNEL_LD uses it
|
||||
ld = d.expand('${TARGET_PREFIX}ld')
|
||||
|
||||
Reference in New Issue
Block a user