<div dir="ltr">This series was just ran on the autobuilder and there&#39;s a few failures:<div><br></div><div><a href="http://errors.yoctoproject.org/Errors/Latest//?filter=21d01e923239ab32116bf526cc2c5afee9052476&amp;type=commit">http://errors.yoctoproject.org/Errors/Latest//?filter=21d01e923239ab32116bf526cc2c5afee9052476&amp;type=commit</a><br></div><div><br></div><div>Anyone interested in getting Meson merged into oe-core is welcome to work with Alex to resolve these.</div><div><br></div><div>Ross</div></div><div class="gmail_extra"><br><div class="gmail_quote">On 15 November 2017 at 11:08, Alexander Kanavin <span dir="ltr">&lt;<a href="mailto:alexander.kanavin@linux.intel.com" target="_blank">alexander.kanavin@linux.intel.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">The original recipe has been provided and improved by:<br>
<br>
Ross Burton &lt;<a href="mailto:ross.burton@intel.com">ross.burton@intel.com</a>&gt;<br>
Ricardo Ribalda Delgado &lt;<a href="mailto:ricardo.ribalda@gmail.com">ricardo.ribalda@gmail.com</a>&gt;<br>
Adam C. Foltzer &lt;<a href="mailto:acfoltzer@galois.com">acfoltzer@galois.com</a>&gt;<br>
Peter Kjellerstedt &lt;<a href="mailto:peter.kjellerstedt@axis.com">peter.kjellerstedt@axis.com</a>&gt;<br>
Linus Svensson &lt;<a href="mailto:linussn@axis.com">linussn@axis.com</a>&gt;<br>
<br>
I have added a couple patches to fix up gtk-doc and<br>
gobject-introspection in cross-compilation environments.<br>
<br>
Signed-off-by: Alexander Kanavin &lt;<a href="mailto:alexander.kanavin@linux.intel.com">alexander.kanavin@linux.<wbr>intel.com</a>&gt;<br>
---<br>
 meta/classes/meson.bbclass                         | 103 +++++++++++++++++++<br>
 ...ix-issues-that-arise-when-<wbr>cross-compiling.patch | 113 +++++++++++++++++++++<br>
 ...rospection-determine-g-ir-<wbr>scanner-and-g-i.patch |  41 ++++++++<br>
 meta/recipes-devtools/meson/<a href="http://meson_0.43.0.bb" rel="noreferrer" target="_blank">me<wbr>son_0.43.0.bb</a>        |  19 ++++<br>
 4 files changed, 276 insertions(+)<br>
 create mode 100644 meta/classes/meson.bbclass<br>
 create mode 100644 meta/recipes-devtools/meson/<wbr>meson/0001-gtkdoc-fix-issues-<wbr>that-arise-when-cross-<wbr>compiling.patch<br>
 create mode 100644 meta/recipes-devtools/meson/<wbr>meson/0002-gobject-<wbr>introspection-determine-g-ir-<wbr>scanner-and-g-i.patch<br>
 create mode 100644 meta/recipes-devtools/meson/<a href="http://meson_0.43.0.bb" rel="noreferrer" target="_blank">me<wbr>son_0.43.0.bb</a><br>
<br>
diff --git a/meta/classes/meson.bbclass b/meta/classes/meson.bbclass<br>
new file mode 100644<br>
index 00000000000..f6cf24c33a7<br>
--- /dev/null<br>
+++ b/meta/classes/meson.bbclass<br>
@@ -0,0 +1,103 @@<br>
+inherit python3native<br>
+<br>
+DEPENDS_append = &quot; meson-native ninja-native&quot;<br>
+<br>
+# As Meson enforces out-of-tree builds we can just use cleandirs<br>
+B = &quot;${WORKDIR}/build&quot;<br>
+do_configure[cleandirs] = &quot;${B}&quot;<br>
+<br>
+# Where the meson.build build configuration is<br>
+MESON_SOURCEPATH = &quot;${S}&quot;<br>
+<br>
+# These variables in the environment override meson&#39;s *native* tools settings.<br>
+# We have to unset them, so that meson doesn&#39;t pick up the cross tools and<br>
+# use them for native builds.<br>
+unset CC<br>
+unset CXX<br>
+unset AR<br>
+<br>
+def noprefix(var, d):<br>
+    return d.getVar(var, True).replace(d.getVar(&#39;<wbr>prefix&#39;, True) + &#39;/&#39;, &#39;&#39;, 1)<br>
+<br>
+MESONOPTS = &quot; --prefix ${prefix} \<br>
+              --bindir ${@noprefix(&#39;bindir&#39;, d)} \<br>
+              --sbindir ${@noprefix(&#39;sbindir&#39;, d)} \<br>
+              --datadir ${@noprefix(&#39;datadir&#39;, d)} \<br>
+              --libdir ${@noprefix(&#39;libdir&#39;, d)} \<br>
+              --libexecdir ${@noprefix(&#39;libexecdir&#39;, d)} \<br>
+              --includedir ${@noprefix(&#39;includedir&#39;, d)} \<br>
+              --mandir ${@noprefix(&#39;mandir&#39;, d)} \<br>
+              --infodir ${@noprefix(&#39;infodir&#39;, d)} \<br>
+              --sysconfdir ${sysconfdir} \<br>
+              --localstatedir ${localstatedir} \<br>
+              --sharedstatedir ${sharedstatedir}&quot;<br>
+<br>
+MESON_C_ARGS = &quot;${TARGET_CC_ARCH}${TOOLCHAIN_<wbr>OPTIONS}&quot;<br>
+MESON_LINK_ARGS = &quot;${MESON_C_ARGS} ${LDFLAGS}&quot;<br>
+<br>
+MESON_HOST_ENDIAN = &quot;${@bb.utils.contains(&#39;<wbr>SITEINFO_ENDIANNESS&#39;, &#39;be&#39;, &#39;big&#39;, &#39;little&#39;, d)}&quot;<br>
+MESON_TARGET_ENDIAN = &quot;${@bb.utils.contains(&#39;TUNE_<wbr>FEATURES&#39;, &#39;bigendian&#39;, &#39;big&#39;, &#39;little&#39;, d)}&quot;<br>
+<br>
+EXTRA_OEMESON += &quot;${PACKAGECONFIG_CONFARGS}&quot;<br>
+<br>
+MESON_CROSS_FILE = &quot;&quot;<br>
+MESON_CROSS_FILE_class-target = &quot;--cross-file ${WORKDIR}/meson.cross&quot;<br>
+<br>
+def meson_array(var, d):<br>
+    return &quot;&#39;, &#39;&quot;.join(d.getVar(var, True).split()).join((&quot;&#39;&quot;, &quot;&#39;&quot;))<br>
+<br>
+addtask write_config before do_configure<br>
+do_write_config[vardeps] += &quot;MESON_C_ARGS TOOLCHAIN_OPTIONS&quot;<br>
+do_write_config() {<br>
+    # This needs to be Py to split the args into single-element lists<br>
+    cat &gt;${WORKDIR}/meson.cross &lt;&lt;EOF<br>
+[binaries]<br>
+c = &#39;${HOST_PREFIX}gcc&#39;<br>
+cpp = &#39;${HOST_PREFIX}g++&#39;<br>
+ar = &#39;${HOST_PREFIX}ar&#39;<br>
+ld = &#39;${HOST_PREFIX}ld&#39;<br>
+strip = &#39;${HOST_PREFIX}strip&#39;<br>
+readelf = &#39;${HOST_PREFIX}readelf&#39;<br>
+pkgconfig = &#39;pkg-config&#39;<br>
+<br>
+[properties]<br>
+needs_exe_wrapper = true<br>
+c_args = [${@meson_array(&#39;MESON_C_ARGS&#39;<wbr>, d)}]<br>
+c_link_args = [${@meson_array(&#39;MESON_LINK_<wbr>ARGS&#39;, d)}]<br>
+cpp_args = [${@meson_array(&#39;MESON_C_ARGS&#39;<wbr>, d)}]<br>
+cpp_link_args = [${@meson_array(&#39;MESON_LINK_<wbr>ARGS&#39;, d)}]<br>
+gtkdoc_exe_wrapper = &#39;${B}/gtkdoc-qemuwrapper&#39;<br>
+<br>
+[host_machine]<br>
+system = &#39;${HOST_OS}&#39;<br>
+cpu_family = &#39;${HOST_ARCH}&#39;<br>
+cpu = &#39;${HOST_ARCH}&#39;<br>
+endian = &#39;${MESON_HOST_ENDIAN}&#39;<br>
+<br>
+[target_machine]<br>
+system = &#39;${TARGET_OS}&#39;<br>
+cpu_family = &#39;${TARGET_ARCH}&#39;<br>
+cpu = &#39;${TARGET_ARCH}&#39;<br>
+endian = &#39;${MESON_TARGET_ENDIAN}&#39;<br>
+EOF<br>
+}<br>
+<br>
+CONFIGURE_FILES = &quot;meson.build&quot;<br>
+<br>
+meson_do_configure() {<br>
+    if ! meson ${MESONOPTS} &quot;${MESON_SOURCEPATH}&quot; &quot;${B}&quot; ${MESON_CROSS_FILE} ${EXTRA_OEMESON}; then<br>
+        cat ${B}/meson-logs/meson-log.txt<br>
+        bbfatal_log meson failed<br>
+    fi<br>
+}<br>
+<br>
+do_compile[progress] = &quot;outof:^\[(\d+)/(\d+)\]\s+&quot;<br>
+meson_do_compile() {<br>
+    ninja ${PARALLEL_MAKE}<br>
+}<br>
+<br>
+meson_do_install() {<br>
+    DESTDIR=&#39;${D}&#39; ninja ${PARALLEL_MAKEINST} install<br>
+}<br>
+<br>
+EXPORT_FUNCTIONS do_configure do_compile do_install<br>
diff --git a/meta/recipes-devtools/meson/<wbr>meson/0001-gtkdoc-fix-issues-<wbr>that-arise-when-cross-<wbr>compiling.patch b/meta/recipes-devtools/meson/<wbr>meson/0001-gtkdoc-fix-issues-<wbr>that-arise-when-cross-<wbr>compiling.patch<br>
new file mode 100644<br>
index 00000000000..ca3d7095066<br>
--- /dev/null<br>
+++ b/meta/recipes-devtools/meson/<wbr>meson/0001-gtkdoc-fix-issues-<wbr>that-arise-when-cross-<wbr>compiling.patch<br>
@@ -0,0 +1,113 @@<br>
+From 15e054dce6ff11d2cb219c8c09a31b<wbr>26f0e58b62 Mon Sep 17 00:00:00 2001<br>
+From: Alexander Kanavin &lt;<a href="mailto:alex.kanavin@gmail.com">alex.kanavin@gmail.com</a>&gt;<br>
+Date: Fri, 4 Aug 2017 16:16:41 +0300<br>
+Subject: [PATCH 1/3] gtkdoc: fix issues that arise when cross-compiling<br>
+<br>
+Specifically:<br>
+1) Make it possible to specify a wrapper for executing binaries<br>
+(usually, some kind of target hardware emulator, such as qemu)<br>
+2) Explicitly provide CC and LD via command line, as otherwise gtk-doc will<br>
+try to guess them, incorrectly.<br>
+3) If things break down, print the full command with arguments,<br>
+not just the binary name.<br>
+4) Correctly determine the compiler/linker executables and cross-options when cross-compiling<br>
+<br>
+Upstream-Status: Pending<br>
+Signed-off-by: Alexander Kanavin &lt;<a href="mailto:alex.kanavin@gmail.com">alex.kanavin@gmail.com</a>&gt;<br>
+<br>
+---<br>
+ mesonbuild/modules/gnome.py        | 18 +++++++++++++++---<br>
+ mesonbuild/scripts/<wbr>gtkdochelper.py |  9 +++++++--<br>
+ 2 files changed, 22 insertions(+), 5 deletions(-)<br>
+<br>
+diff --git a/mesonbuild/modules/gnome.py b/mesonbuild/modules/gnome.py<br>
+index 6ec7040..4cfaefd 100644<br>
+--- a/mesonbuild/modules/gnome.py<br>
++++ b/mesonbuild/modules/gnome.py<br>
+@@ -713,6 +713,10 @@ class GnomeModule(ExtensionModule):<br>
+                 &#39;--mode=&#39; + mode]<br>
+         if namespace:<br>
+             args.append(&#39;--namespace=&#39; + namespace)<br>
++        gtkdoc_exe_wrapper = state.environment.cross_info.<wbr>config[&quot;properties&quot;].get(&#39;<wbr>gtkdoc_exe_wrapper&#39;, None)<br>
++        if gtkdoc_exe_wrapper is not None:<br>
++            args.append(&#39;--gtkdoc-exe-<wbr>wrapper=&#39; + gtkdoc_exe_wrapper)<br>
++<br>
+         args += self._unpack_args(&#39;--htmlargs=<wbr>&#39;, &#39;html_args&#39;, kwargs)<br>
+         args += self._unpack_args(&#39;--scanargs=<wbr>&#39;, &#39;scan_args&#39;, kwargs)<br>
+         args += self._unpack_args(&#39;--<wbr>scanobjsargs=&#39;, &#39;scanobjs_args&#39;, kwargs)<br>
+@@ -741,14 +745,22 @@ class GnomeModule(ExtensionModule):<br>
+                 raise MesonException(<br>
+                     &#39;Gir include dirs should be include_directories().&#39;)<br>
+         cflags.update(get_include_<wbr>args(inc_dirs))<br>
++<br>
++        cross_c_args = &quot; &quot;.join(state.environment.<wbr>cross_info.config[&quot;properties&quot;<wbr>].get(&#39;c_args&#39;, &quot;&quot;))<br>
++        cross_link_args = &quot; &quot;.join(state.environment.<wbr>cross_info.config[&quot;properties&quot;<wbr>].get(&#39;c_link_args&#39;, &quot;&quot;))<br>
++<br>
+         if cflags:<br>
+-            args += [&#39;--cflags=%s&#39; % &#39; &#39;.join(cflags)]<br>
++            args += [&#39;--cflags=%s %s&#39; % (cross_c_args,&#39; &#39;.join(cflags))]<br>
+         if ldflags:<br>
+-            args += [&#39;--ldflags=%s&#39; % &#39; &#39;.join(ldflags)]<br>
++            args += [&#39;--ldflags=%s %s&#39; % (cross_link_args, &#39; &#39;.join(ldflags))]<br>
+         compiler = state.environment.coredata.<wbr>compilers.get(&#39;c&#39;)<br>
+-        if compiler:<br>
++        cross_compiler = state.environment.coredata.<wbr>cross_compilers.get(&#39;c&#39;)<br>
++        if compiler and not state.environment.is_cross_<wbr>build():<br>
+             args += [&#39;--cc=%s&#39; % &#39; &#39;.join(compiler.get_exelist())<wbr>]<br>
+             args += [&#39;--ld=%s&#39; % &#39; &#39;.join(compiler.get_linker_<wbr>exelist())]<br>
++        elif cross_compiler and state.environment.is_cross_<wbr>build():<br>
++            args += [&#39;--cc=%s&#39; % &#39; &#39;.join(cross_compiler.get_<wbr>exelist())]<br>
++            args += [&#39;--ld=%s&#39; % &#39; &#39;.join(cross_compiler.get_<wbr>linker_exelist())]<br>
+<br>
+         return args<br>
+<br>
+diff --git a/mesonbuild/scripts/<wbr>gtkdochelper.py b/mesonbuild/scripts/<wbr>gtkdochelper.py<br>
+index a2cbf5a..19331bd 100644<br>
+--- a/mesonbuild/scripts/<wbr>gtkdochelper.py<br>
++++ b/mesonbuild/scripts/<wbr>gtkdochelper.py<br>
+@@ -44,13 +44,14 @@ parser.add_argument(&#39;--ignore-<wbr>headers&#39;, dest=&#39;ignore_headers&#39;, default=&#39;&#39;)<br>
+ parser.add_argument(&#39;--<wbr>namespace&#39;, dest=&#39;namespace&#39;, default=&#39;&#39;)<br>
+ parser.add_argument(&#39;--mode&#39;, dest=&#39;mode&#39;, default=&#39;&#39;)<br>
+ parser.add_argument(&#39;--<wbr>installdir&#39;, dest=&#39;install_dir&#39;)<br>
++parser.add_argument(&#39;--<wbr>gtkdoc-exe-wrapper&#39;, dest=&#39;gtkdoc_exe_wrapper&#39;)<br>
+<br>
+ def gtkdoc_run_check(cmd, cwd):<br>
+     # Put stderr into stdout since we want to print it out anyway.<br>
+     # This preserves the order of messages.<br>
+     p, out = Popen_safe(cmd, cwd=cwd, stderr=subprocess.STDOUT)[0:2]<br>
+     if p.returncode != 0:<br>
+-        err_msg = [&quot;{!r} failed with status {:d}&quot;.format(cmd[0], p.returncode)]<br>
++        err_msg = [&quot;{!r} failed with status {:d}&quot;.format(cmd, p.returncode)]<br>
+         if out:<br>
+             err_msg.append(out)<br>
+         raise MesonException(&#39;\n&#39;.join(err_<wbr>msg))<br>
+@@ -58,7 +59,7 @@ def gtkdoc_run_check(cmd, cwd):<br>
+ def build_gtkdoc(source_root, build_root, doc_subdir, src_subdirs,<br>
+                  main_file, module,<br>
+                  html_args, scan_args, fixxref_args, mkdb_args,<br>
+-                 gobject_typesfile, scanobjs_args, ld, cc, ldflags, cflags,<br>
++                 gobject_typesfile, scanobjs_args, gtkdoc_exe_wrapper, ld, cc, ldflags, cflags,<br>
+                  html_assets, content_files, ignore_headers, namespace,<br>
+                  expand_content_files, mode):<br>
+     print(&quot;Building documentation for %s&quot; % module)<br>
+@@ -111,6 +112,9 @@ def build_gtkdoc(source_root, build_root, doc_subdir, src_subdirs,<br>
+     if gobject_typesfile:<br>
+         scanobjs_cmd = [&#39;gtkdoc-scangobj&#39;] + scanobjs_args + [&#39;--types=&#39; + gobject_typesfile,<br>
+                                                               &#39;--module=&#39; + module,<br>
++                                                              &#39;--run=&#39; + gtkdoc_exe_wrapper,<br>
++                                                              &#39;--cc=&#39; + cc,<br>
++                                                              &#39;--ld=&#39; + ld,<br>
+                                                               &#39;--cflags=&#39; + cflags,<br>
+                                                               &#39;--ldflags=&#39; + ldflags]<br>
+<br>
+@@ -206,6 +210,7 @@ def run(args):<br>
+         mkdbargs,<br>
+         options.gobject_typesfile,<br>
+         scanobjsargs,<br>
++        options.gtkdoc_exe_wrapper,<br>
+         options.ld,<br>
+         options.cc,<br>
+         options.ldflags,<br>
+--<br>
+2.14.1<br>
+<br>
diff --git a/meta/recipes-devtools/meson/<wbr>meson/0002-gobject-<wbr>introspection-determine-g-ir-<wbr>scanner-and-g-i.patch b/meta/recipes-devtools/meson/<wbr>meson/0002-gobject-<wbr>introspection-determine-g-ir-<wbr>scanner-and-g-i.patch<br>
new file mode 100644<br>
index 00000000000..f00b9b2a2d1<br>
--- /dev/null<br>
+++ b/meta/recipes-devtools/meson/<wbr>meson/0002-gobject-<wbr>introspection-determine-g-ir-<wbr>scanner-and-g-i.patch<br>
@@ -0,0 +1,41 @@<br>
+From 84cb251a33190ec82faeaad321518a<wbr>f4b309c55e Mon Sep 17 00:00:00 2001<br>
+From: Alexander Kanavin &lt;<a href="mailto:alex.kanavin@gmail.com">alex.kanavin@gmail.com</a>&gt;<br>
+Date: Fri, 4 Aug 2017 16:18:47 +0300<br>
+Subject: [PATCH 2/2] gobject-introspection: determine g-ir-scanner and<br>
+ g-ir-compiler paths from pkgconfig<br>
+<br>
+Do not hardcode the name of those binaries; gobject-introspection<br>
+provides them via pkgconfig, and they can be set to something else<br>
+(for example when cross-compiling).<br>
+<br>
+Upstream-Status: Pending<br>
+Signed-off-by: Alexander Kanavin &lt;<a href="mailto:alex.kanavin@gmail.com">alex.kanavin@gmail.com</a>&gt;<br>
+---<br>
+ mesonbuild/modules/gnome.py | 4 ++--<br>
+ 1 file changed, 2 insertions(+), 2 deletions(-)<br>
+<br>
+diff --git a/mesonbuild/modules/gnome.py b/mesonbuild/modules/gnome.py<br>
+index ba7e4cd..00472af 100644<br>
+--- a/mesonbuild/modules/gnome.py<br>
++++ b/mesonbuild/modules/gnome.py<br>
+@@ -380,8 +380,6 @@ class GnomeModule(ExtensionModule):<br>
+             raise MesonException(&#39;Gir takes one argument&#39;)<br>
+         if kwargs.get(&#39;install_dir&#39;):<br>
+             raise MesonException(&#39;install_dir is not supported with generate_gir(), see &quot;install_dir_gir&quot; and &quot;install_dir_typelib&quot;&#39;)<br>
+-        giscanner = find_program(&#39;g-ir-scanner&#39;, &#39;Gir&#39;)<br>
+-        gicompiler = find_program(&#39;g-ir-compiler&#39;, &#39;Gir&#39;)<br>
+         girtarget = args[0]<br>
+         while hasattr(girtarget, &#39;held_object&#39;):<br>
+             girtarget = girtarget.held_object<br>
+@@ -392,6 +390,8 @@ class GnomeModule(ExtensionModule):<br>
+                 self.gir_dep = PkgConfigDependency(&#39;gobject-<wbr>introspection-1.0&#39;,<br>
+                                                    state.environment,<br>
+                                                    {&#39;native&#39;: True})<br>
++            giscanner = os.environ[&#39;PKG_CONFIG_<wbr>SYSROOT_DIR&#39;] + self.gir_dep.get_pkgconfig_<wbr>variable(&#39;g_ir_scanner&#39;)<br>
++            gicompiler = os.environ[&#39;PKG_CONFIG_<wbr>SYSROOT_DIR&#39;] + self.gir_dep.get_pkgconfig_<wbr>variable(&#39;g_ir_compiler&#39;)<br>
+             pkgargs = self.gir_dep.get_compile_args(<wbr>)<br>
+         except Exception:<br>
+             raise MesonException(&#39;gobject-<wbr>introspection dependency was not found, gir cannot be generated.&#39;)<br>
+--<br>
+2.13.2<br>
+<br>
diff --git a/meta/recipes-devtools/meson/<a href="http://meson_0.43.0.bb" rel="noreferrer" target="_blank"><wbr>meson_0.43.0.bb</a> b/meta/recipes-devtools/meson/<a href="http://meson_0.43.0.bb" rel="noreferrer" target="_blank"><wbr>meson_0.43.0.bb</a><br>
new file mode 100644<br>
index 00000000000..bbb48d9197c<br>
--- /dev/null<br>
+++ b/meta/recipes-devtools/meson/<a href="http://meson_0.43.0.bb" rel="noreferrer" target="_blank"><wbr>meson_0.43.0.bb</a><br>
@@ -0,0 +1,19 @@<br>
+HOMEPAGE = &quot;<a href="http://mesonbuild.com" rel="noreferrer" target="_blank">http://mesonbuild.com</a>&quot;<br>
+SUMMARY = &quot;A high performance build system&quot;<br>
+<br>
+LICENSE = &quot;Apache-2.0&quot;<br>
+LIC_FILES_CHKSUM = &quot;file://COPYING;md5=<wbr>3b83ef96387f14655fc854ddc3c6bd<wbr>57&quot;<br>
+<br>
+SRC_URI = &quot;<a href="https://github.com/mesonbuild/meson/releases/download/${PV}/${BP}.tar.gz" rel="noreferrer" target="_blank">https://github.com/<wbr>mesonbuild/meson/releases/<wbr>download/${PV}/${BP}.tar.gz</a> \<br>
+           file://0001-gtkdoc-fix-issues-<wbr>that-arise-when-cross-<wbr>compiling.patch \<br>
+           file://0002-gobject-<wbr>introspection-determine-g-ir-<wbr>scanner-and-g-i.patch \<br>
+           &quot;<br>
+SRC_URI[md5sum] = &quot;<wbr>b0d389cc5937928c2f5114656dc5a9<wbr>9a&quot;<br>
+SRC_URI[sha256sum] = &quot;<wbr>c513eca90e0d70bf14cd1eaafea2fa<wbr>91cf40a73326a7ff61f08a00504805<wbr>7340&quot;<br>
+UPSTREAM_CHECK_URI = &quot;<a href="https://github.com/mesonbuild/meson/releases" rel="noreferrer" target="_blank">https://github.com/<wbr>mesonbuild/meson/releases</a>&quot;<br>
+<br>
+inherit setuptools3<br>
+<br>
+RDEPENDS_${PN} = &quot;ninja python3-core python3-modules&quot;<br>
+<br>
+BBCLASSEXTEND = &quot;native&quot;<br>
<span class="HOEnZb"><font color="#888888">--<br>
2.15.0<br>
<br>
--<br>
______________________________<wbr>_________________<br>
Openembedded-core mailing list<br>
<a href="mailto:Openembedded-core@lists.openembedded.org">Openembedded-core@lists.<wbr>openembedded.org</a><br>
<a href="http://lists.openembedded.org/mailman/listinfo/openembedded-core" rel="noreferrer" target="_blank">http://lists.openembedded.org/<wbr>mailman/listinfo/openembedded-<wbr>core</a><br>
</font></span></blockquote></div><br></div>