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....@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.bur...@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
>
>
> 
>
-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#149947): 
https://lists.openembedded.org/g/openembedded-core/message/149947
Mute This Topic: https://lists.openembedded.org/mt/81562048/21656
Group Owner: openembedded-core+ow...@lists.openembedded.org
Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub 
[arch...@mail-archive.com]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to