All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Ross Burton" <ross@burtonini.com>
Cc: OE-core <openembedded-core@lists.openembedded.org>
Subject: Re: [OE-core] [PATCH 2/2] meson: use native-file instead of environment variables
Date: Thu, 25 Mar 2021 19:05:34 +0000	[thread overview]
Message-ID: <CAAnfSTu2iteg8Yc=HgWh47Dq00_Ps9jYNoYPtrFbqqQh+cMz-g@mail.gmail.com> (raw)
In-Reply-To: <20210323212814.567119-2-ross.burton@arm.com>

So v1 failed all over the AB, the root cause being that in master
Meson doesn't know that there's a specific pkg-config binary for all
native builds, but with this series it does.  In master it only uses
pkg-config-native in native *recipes* but now it uses it for all
native lookups in target recipes too.

This means that when the G-I code uses a native pkgconfig lookup to
get target library dependencies, it goes terribly wrong.

Upstream are basically confused as to how "cross" and "G-I" are meant
to work, because they from a glance can't easily, so I expect to be
able to get this patch upstream as it doesn't break what already works
and is a step towards the correct model.

Ross

On Tue, 23 Mar 2021 at 21:28, Ross Burton via lists.openembedded.org
<ross=burtonini.com@lists.openembedded.org> wrote:
>
> Meson now supports native-files, which are the same as cross files but
> describe the native build.
>
> By writing and using a native file which describes the tools to use, we
> can drop the environment variable overriding.
>
> Signed-off-by: Ross Burton <ross.burton@arm.com>
> ---
>  meta/classes/meson.bbclass | 49 ++++++++++++++++----------------------
>  1 file changed, 21 insertions(+), 28 deletions(-)
>
> diff --git a/meta/classes/meson.bbclass b/meta/classes/meson.bbclass
> index a7644e70cb..290b39e1e0 100644
> --- a/meta/classes/meson.bbclass
> +++ b/meta/classes/meson.bbclass
> @@ -26,7 +26,8 @@ MESONOPTS = " --prefix ${prefix} \
>                --sysconfdir ${sysconfdir} \
>                --localstatedir ${localstatedir} \
>                --sharedstatedir ${sharedstatedir} \
> -              --wrap-mode nodownload"
> +              --wrap-mode nodownload \
> +              --native-file ${WORKDIR}/native.cross"
>
>  EXTRA_OEMESON_append = " ${PACKAGECONFIG_CONFARGS}"
>
> @@ -121,9 +122,28 @@ system = '${@meson_operating_system('TARGET_OS', d)}'
>  cpu_family = '${@meson_cpu_family('TARGET_ARCH', d)}'
>  cpu = '${TARGET_ARCH}'
>  endian = '${@meson_endian('TARGET', d)}'
> +EOF
> +
> +    cat >${WORKDIR}/native.cross <<EOF
> +[binaries]
> +c = ${@meson_array('BUILD_CC', d)}
> +cpp = ${@meson_array('BUILD_CXX', d)}
> +ar = ${@meson_array('BUILD_AR', d)}
> +nm = ${@meson_array('BUILD_NM', d)}
> +strip = ${@meson_array('BUILD_STRIP', d)}
> +readelf = ${@meson_array('BUILD_READELF', d)}
> +pkgconfig = 'pkg-config-native'
> +
> +[properties]
> +needs_exe_wrapper = false
> +c_args = ${@meson_array('BUILD_CFLAGS', d)}
> +c_link_args = ${@meson_array('BUILD_LDFLAGS', d)}
> +cpp_args = ${@meson_array('BUILD_CXXFLAGS', d)}
> +cpp_link_args = ${@meson_array('BUILD_LDFLAGS', d)}
>  EOF
>  }
>
> +# Tell externalsrc that changes to this file require a reconfigure
>  CONFIGURE_FILES = "meson.build"
>
>  meson_do_configure() {
> @@ -140,33 +160,6 @@ meson_do_configure() {
>      fi
>  }
>
> -override_native_tools() {
> -    # Set these so that meson uses the native tools for its build sanity tests,
> -    # which require executables to be runnable. The cross file will still
> -    # override these for the target build.
> -    export CC="${BUILD_CC}"
> -    export CXX="${BUILD_CXX}"
> -    export LD="${BUILD_LD}"
> -    export AR="${BUILD_AR}"
> -    export STRIP="${BUILD_STRIP}"
> -    # These contain *target* flags but will be used as *native* flags.  The
> -    # correct native flags will be passed via -Dc_args and so on, unset them so
> -    # they don't interfere with tools invoked by Meson (such as g-ir-scanner)
> -    unset CPPFLAGS CFLAGS CXXFLAGS LDFLAGS
> -}
> -
> -meson_do_configure_prepend_class-target() {
> -    override_native_tools
> -}
> -
> -meson_do_configure_prepend_class-nativesdk() {
> -    override_native_tools
> -}
> -
> -meson_do_configure_prepend_class-native() {
> -    export PKG_CONFIG="pkg-config-native"
> -}
> -
>  python meson_do_qa_configure() {
>      import re
>      warn_re = re.compile(r"^WARNING: Cross property (.+) is using default value (.+)$", re.MULTILINE)
> --
> 2.25.1
>
>
> 
>

  reply	other threads:[~2021-03-25 19:05 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-03-23 21:28 [PATCH 1/2] bitbake.conf: ensure BUILD_* tools match target tools Ross Burton
2021-03-23 21:28 ` [PATCH 2/2] meson: use native-file instead of environment variables Ross Burton
2021-03-25 19:05   ` Ross Burton [this message]
2021-03-23 21:52 ` [OE-core] [PATCH 1/2] bitbake.conf: ensure BUILD_* tools match target tools Andre McCurdy
2021-03-24  9:41   ` Ross Burton
2021-03-24 10:37     ` Richard Purdie

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to='CAAnfSTu2iteg8Yc=HgWh47Dq00_Ps9jYNoYPtrFbqqQh+cMz-g@mail.gmail.com' \
    --to=ross@burtonini.com \
    --cc=openembedded-core@lists.openembedded.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.