There's also an issue with the wrapper script run by host bash for qemu-system that breaks with uninative, so just hold it off until I get it all confirmed as working :)
Alex On Sun, 6 Feb 2022 at 10:57, Richard Purdie < [email protected]> wrote: > On Sun, 2022-02-06 at 09:51 +0000, Richard Purdie via > lists.openembedded.org > wrote: > > On Sat, 2022-02-05 at 12:20 +0000, Richard Purdie via > lists.openembedded.org > > wrote: > > > On Fri, 2022-02-04 at 21:40 +0100, Alexander Kanavin wrote: > > > > 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. > > > > > > > > Signed-off-by: Alexander Kanavin <[email protected]> > > > > --- > > > > meta/classes/qemuboot.bbclass | 2 +- > > > > scripts/runqemu | 4 ++++ > > > > 2 files changed, 5 insertions(+), 1 deletion(-) > > > > > > > > diff --git a/meta/classes/qemuboot.bbclass > b/meta/classes/qemuboot.bbclass > > > > index cc1cbce69d..229bd88527 100644 > > > > --- a/meta/classes/qemuboot.bbclass > > > > +++ b/meta/classes/qemuboot.bbclass > > > > @@ -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))}" > > > > diff --git a/scripts/runqemu b/scripts/runqemu > > > > index 4e05c1bb15..7d1f85f357 100755 > > > > --- a/scripts/runqemu > > > > +++ b/scripts/runqemu > > > > @@ -460,6 +460,10 @@ class BaseConfig(object): > > > > except subprocess.CalledProcessError as e: > > > > 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() > > > > + uninative_path = > os.path.dirname(self.get("UNINATIVE_LOADER")) > > > > + preload_items = ['libdl.so.2', 'librt.so.1', > 'libpthread.so.0'] > > > > + preload_paths = [os.path.join(uninative_path, i) for i in > preload_items] > > > > + os.environ['LD_PRELOAD'] = " ".join(preload_paths) > > > > > > > > > > This looks like a good way to work around this corner case and I don't > see any > > > other alternative. Can I ask that: > > > > > > a) we put some comment into the code so we can understand this in a > couple of > > > years time as it is a rather weird corner case > > > > > > b) we put some "if os.path.exists()" in there, maybe even just on the > uninnative > > > loader direction so that in the non-uninative case we don't throw > warnings? > > > > I've added a tweak doing this into master-next. > > Although I see one in your branch too, should have checked that first :/ > > Cheers, > > Richard > >
-=-=-=-=-=-=-=-=-=-=-=- Links: You receive all messages sent to this group. View/Reply Online (#161397): https://lists.openembedded.org/g/openembedded-core/message/161397 Mute This Topic: https://lists.openembedded.org/mt/88916306/21656 Group Owner: [email protected] Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [[email protected]] -=-=-=-=-=-=-=-=-=-=-=-
