meson.bbclass: add exe_wrapper helper

Message ID 20220312154011.499012-1-quaresma.jose@gmail.com
State New
Headers show
Series meson.bbclass: add exe_wrapper helper | expand

Commit Message

Jose Quaresma March 12, 2022, 3:40 p.m. UTC
Sometimes when we use the exe_wrapper we need a way to
costumize or circumvent some limitations of the qemu usermode.
The ideia of this help script is to handle such cases before
the qemu usermode was launched.

Signed-off-by: Jose Quaresma <quaresma.jose@gmail.com>
---
 meta/classes/meson.bbclass | 6 ++++++
 1 file changed, 6 insertions(+)

Comments

Richard Purdie March 12, 2022, 5:11 p.m. UTC | #1
On Sat, 2022-03-12 at 15:40 +0000, Jose Quaresma wrote:
> Sometimes when we use the exe_wrapper we need a way to
> costumize or circumvent some limitations of the qemu usermode.
> The ideia of this help script is to handle such cases before
> the qemu usermode was launched.
> 
> Signed-off-by: Jose Quaresma <quaresma.jose@gmail.com>
> ---
>  meta/classes/meson.bbclass | 6 ++++++
>  1 file changed, 6 insertions(+)
> 
> diff --git a/meta/classes/meson.bbclass b/meta/classes/meson.bbclass
> index 0bfe945811..877f5e7794 100644
> --- a/meta/classes/meson.bbclass
> +++ b/meta/classes/meson.bbclass
> @@ -114,6 +114,8 @@ cpp_link_args = ${@meson_array('BUILD_LDFLAGS', d)}
>  EOF
>  }
>  
> +MESON_QEMU_WRAPPER_HELPER ?= ""
> +
>  do_write_config:append:class-target() {
>      # Write out a qemu wrapper that will be used as exe_wrapper so that meson
>      # can run target helper binaries through that.
> @@ -127,10 +129,14 @@ export GIO_MODULE_DIR=${STAGING_LIBDIR}/gio/modules-dummy
>  # meson sets this wrongly (only to libs in build-dir), qemu_wrapper_cmdline() and GIR_EXTRA_LIBS_PATH take care of it properly
>  unset LD_LIBRARY_PATH
>  
> +# import any customization provided in the helper
> +test -f "${MESON_QEMU_WRAPPER_HELPER}" && . ${MESON_QEMU_WRAPPER_HELPER}
> +
>  $qemu_binary "\$@"
>  EOF
>      chmod +x ${WORKDIR}/meson-qemuwrapper
>  }
> +do_write_config:class-target[vardeps] += "MESON_QEMU_WRAPPER_HELPER"

You can't use overrides with flags like that, I'm surprised that even parses!

Cheers,

Richard
Jose Quaresma March 14, 2022, 11:14 p.m. UTC | #2
Richard Purdie <richard.purdie@linuxfoundation.org> escreveu no dia sábado,
12/03/2022 à(s) 17:11:

> On Sat, 2022-03-12 at 15:40 +0000, Jose Quaresma wrote:
> > Sometimes when we use the exe_wrapper we need a way to
> > costumize or circumvent some limitations of the qemu usermode.
> > The ideia of this help script is to handle such cases before
> > the qemu usermode was launched.
> >
> > Signed-off-by: Jose Quaresma <quaresma.jose@gmail.com>
> > ---
> >  meta/classes/meson.bbclass | 6 ++++++
> >  1 file changed, 6 insertions(+)
> >
> > diff --git a/meta/classes/meson.bbclass b/meta/classes/meson.bbclass
> > index 0bfe945811..877f5e7794 100644
> > --- a/meta/classes/meson.bbclass
> > +++ b/meta/classes/meson.bbclass
> > @@ -114,6 +114,8 @@ cpp_link_args = ${@meson_array('BUILD_LDFLAGS', d)}
> >  EOF
> >  }
> >
> > +MESON_QEMU_WRAPPER_HELPER ?= ""
> > +
> >  do_write_config:append:class-target() {
> >      # Write out a qemu wrapper that will be used as exe_wrapper so that
> meson
> >      # can run target helper binaries through that.
> > @@ -127,10 +129,14 @@ export
> GIO_MODULE_DIR=${STAGING_LIBDIR}/gio/modules-dummy
> >  # meson sets this wrongly (only to libs in build-dir),
> qemu_wrapper_cmdline() and GIR_EXTRA_LIBS_PATH take care of it properly
> >  unset LD_LIBRARY_PATH
> >
> > +# import any customization provided in the helper
> > +test -f "${MESON_QEMU_WRAPPER_HELPER}" && . ${MESON_QEMU_WRAPPER_HELPER}
> > +
> >  $qemu_binary "\$@"
> >  EOF
> >      chmod +x ${WORKDIR}/meson-qemuwrapper
> >  }
> > +do_write_config:class-target[vardeps] += "MESON_QEMU_WRAPPER_HELPER"
>
> You can't use overrides with flags like that, I'm surprised that even
> parses!


I will drop this line because my intention is to rerun the do_write_config
when
the content of the file changes, which is not possible at all.

I will take the opportunity to ask if the following would work?
do_write_config[vardeps]:class-target += "MESON_QEMU_WRAPPER_HELPER"

Jose


> Cheers,
>
> Richard
>
>
>
Richard Purdie March 14, 2022, 11:23 p.m. UTC | #3
On Mon, 2022-03-14 at 23:14 +0000, Jose Quaresma wrote:
> 
> 
> Richard Purdie <richard.purdie@linuxfoundation.org> escreveu no dia sábado,
> 12/03/2022 à(s) 17:11:
> > On Sat, 2022-03-12 at 15:40 +0000, Jose Quaresma wrote:
> > > 
> > > +do_write_config:class-target[vardeps] += "MESON_QEMU_WRAPPER_HELPER"
> > 
> > You can't use overrides with flags like that, I'm surprised that even
> > parses!
> > 
> 
> 
> I will drop this line because my intention is to rerun the do_write_config
> when
> the content of the file changes, which is not possible at all.
> 
> I will take the opportunity to ask if the following would work?
> do_write_config[vardeps]:class-target += "MESON_QEMU_WRAPPER_HELPER"

No, that won't work either.

Cheers,

Richard
Jose Quaresma March 14, 2022, 11:52 p.m. UTC | #4
Richard Purdie <richard.purdie@linuxfoundation.org> escreveu no dia
segunda, 14/03/2022 à(s) 23:24:

> On Mon, 2022-03-14 at 23:14 +0000, Jose Quaresma wrote:
> >
> >
> > Richard Purdie <richard.purdie@linuxfoundation.org> escreveu no dia
> sábado,
> > 12/03/2022 à(s) 17:11:
> > > On Sat, 2022-03-12 at 15:40 +0000, Jose Quaresma wrote:
> > > >
> > > > +do_write_config:class-target[vardeps] += "MESON_QEMU_WRAPPER_HELPER"
> > >
> > > You can't use overrides with flags like that, I'm surprised that even
> > > parses!
> > >
> >
> >
> > I will drop this line because my intention is to rerun the
> do_write_config
> > when
> > the content of the file changes, which is not possible at all.
> >
> > I will take the opportunity to ask if the following would work?
> > do_write_config[vardeps]:class-target += "MESON_QEMU_WRAPPER_HELPER"
>
> No, that won't work either.
>

Thanks


>
> Cheers,
>
> Richard
>
>

Patch

diff --git a/meta/classes/meson.bbclass b/meta/classes/meson.bbclass
index 0bfe945811..877f5e7794 100644
--- a/meta/classes/meson.bbclass
+++ b/meta/classes/meson.bbclass
@@ -114,6 +114,8 @@  cpp_link_args = ${@meson_array('BUILD_LDFLAGS', d)}
 EOF
 }
 
+MESON_QEMU_WRAPPER_HELPER ?= ""
+
 do_write_config:append:class-target() {
     # Write out a qemu wrapper that will be used as exe_wrapper so that meson
     # can run target helper binaries through that.
@@ -127,10 +129,14 @@  export GIO_MODULE_DIR=${STAGING_LIBDIR}/gio/modules-dummy
 # meson sets this wrongly (only to libs in build-dir), qemu_wrapper_cmdline() and GIR_EXTRA_LIBS_PATH take care of it properly
 unset LD_LIBRARY_PATH
 
+# import any customization provided in the helper
+test -f "${MESON_QEMU_WRAPPER_HELPER}" && . ${MESON_QEMU_WRAPPER_HELPER}
+
 $qemu_binary "\$@"
 EOF
     chmod +x ${WORKDIR}/meson-qemuwrapper
 }
+do_write_config:class-target[vardeps] += "MESON_QEMU_WRAPPER_HELPER"
 
 # Tell externalsrc that changes to this file require a reconfigure
 CONFIGURE_FILES = "meson.build"