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]]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to