mirror of
git://git.yoctoproject.org/poky.git
synced 2025-07-19 12:59:02 +02:00
runqemu: preload uninative libraries when host gl drivers are in use
Some of the host distributions build the drivers in a way (RPATH/RUNPATH) that tricks uninative loader into loading pieces of the host libc, if the same pieces haven't been previously loaded by native binaries. Mixing the two libc versions leads to failures. This change ensures that the correct (uninative) versions are always in use. (From OE-Core rev: 39c10816d5ec9d9c7952d786d7a3f942d25d0c27) Signed-off-by: Alexander Kanavin <alex@linutronix.de> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
parent
276975e4ea
commit
0f82f85dc9
|
@ -109,7 +109,7 @@ def qemuboot_vars(d):
|
|||
build_vars = ['MACHINE', 'TUNE_ARCH', 'DEPLOY_DIR_IMAGE',
|
||||
'KERNEL_IMAGETYPE', 'IMAGE_NAME', 'IMAGE_LINK_NAME',
|
||||
'STAGING_DIR_NATIVE', 'STAGING_BINDIR_NATIVE',
|
||||
'STAGING_DIR_HOST', 'SERIAL_CONSOLES']
|
||||
'STAGING_DIR_HOST', 'SERIAL_CONSOLES', 'UNINATIVE_LOADER']
|
||||
return build_vars + [k for k in d.keys() if k.startswith('QB_')]
|
||||
|
||||
do_write_qemuboot_conf[vardeps] += "${@' '.join(qemuboot_vars(d))}"
|
||||
|
|
|
@ -461,6 +461,14 @@ class BaseConfig(object):
|
|||
raise RunQemuError("Could not determine the path to dri drivers on the host via pkg-config.\nPlease install Mesa development files (particularly, dri.pc) on the host machine.")
|
||||
os.environ['LIBGL_DRIVERS_PATH'] = dripath.decode('utf-8').strip()
|
||||
|
||||
# This preloads uninative libc pieces and therefore ensures that RPATH/RUNPATH
|
||||
# in host mesa drivers doesn't trick uninative into loading host libc.
|
||||
preload_items = ['libdl.so.2', 'librt.so.1', 'libpthread.so.0']
|
||||
uninative_path = os.path.dirname(self.get("UNINATIVE_LOADER"))
|
||||
if os.path.exists(uninative_path):
|
||||
preload_paths = [os.path.join(uninative_path, i) for i in preload_items]
|
||||
os.environ['LD_PRELOAD'] = " ".join(preload_paths)
|
||||
|
||||
def check_args(self):
|
||||
for debug in ("-d", "--debug"):
|
||||
if debug in sys.argv:
|
||||
|
|
Loading…
Reference in New Issue
Block a user