Introduce meson build system
cover Introduce meson build system
This patch series introduces meson recipe and class (that recipes should inherit in order to be built with meson).
It also converts a few recipes from autotools to meson to establish that things basically work. Note that I haven't tackled the bigger
items: gstreamer family of recipes, systed and gdk-pixbuf. I'd like to request that maintainers of these recipes start looking into the conversion, based on this patchset.
I also didn't test this super-well; there might well be corner cases where things break down.
The following changes since commit 4ed19ac8c19afd56d445d84e02b622cb056b8359:
poky: Switch to post release name/version (2017-11-14 17:26:58 +0000)
are available in the Git repository at:
git://git.yoctoproject.org/poky-contrib akanavin/meson
http://git.yoctoproject.org/cgit.cgi/poky-contrib/log/?h=akanavin/meson
Alexander Kanavin (6):
meson: add a recipe and class from meta-oe gnomebase.bbclass: split into autotools and meson versions
json-glib: convert to meson build
libepoxy: convert to meson build
libinput: convert to meson build
sysprof: convert to meson build
Jussi Kukkonen (1):
gst-player: Upgrade, rename to gst-examples
meta/classes/gnomebase-meson.bbclass | 1 +
meta/classes/gnomebase-nobuildsystem.bbclass | 27 +++++
meta/classes/gnomebase.bbclass | 30 +-----
meta/classes/meson.bbclass | 103 +++++++++++++++++++
.../packagegroup-core-tools-testapps.bb | 2 +-
...ix-issues-that-arise-when-cross-compiling.patch | 113 +++++++++++++++++++++
...rospection-determine-g-ir-scanner-and-g-i.patch | 41 ++++++++
meta/recipes-devtools/meson/meson_0.43.0.bb | 19 ++++
...ble-gobject-introspection-when-cross-comp.patch | 32 ++++++
meta/recipes-gnome/json-glib/json-glib_1.2.8.bb | 23 ++++-
...sible-to-disable-the-use-of-dlvsym-needed.patch | 55 ++++++++++
meta/recipes-graphics/libepoxy/libepoxy_1.4.3.bb | 12 ++-
.../0001-Fix-meson-options-default-values.patch | 50 +++++++++
meta/recipes-graphics/wayland/libinput_1.8.3.bb | 13 +--
.../sysprof/files/0001-Avoid-building-docs.patch | 42 --------
.../0001-Disable-check-for-polkit-for-UI.patch | 32 ------
...d-anything-in-help-as-it-requires-itstool.patch | 26 +++++
...igure-Add-option-to-enable-disable-polkit.patch | 41 --------
meta/recipes-kernel/sysprof/sysprof_3.26.1.bb | 23 ++---
.../0001-Make-player-examples-installable.patch | 39 +++++++
.../gst-player.desktop | 0
.../{gst-player_git.bb => gst-examples_git.bb} | 18 ++--
.../packagegroups/packagegroup-core-x11-sato.bb | 2 +-
23 files changed, 564 insertions(+), 180 deletions(-)
create mode 100644 meta/classes/gnomebase-meson.bbclass
create mode 100644 meta/classes/gnomebase-nobuildsystem.bbclass
create mode 100644 meta/classes/meson.bbclass
create mode 100644 meta/recipes-devtools/meson/meson/0001-gtkdoc-fix-issues-that-arise-when-cross-compiling.patch
create mode 100644 meta/recipes-devtools/meson/meson/0002-gobject-introspection-determine-g-ir-scanner-and-g-i.patch
create mode 100644 meta/recipes-devtools/meson/meson_0.43.0.bb
create mode 100644 meta/recipes-gnome/json-glib/json-glib/0001-Do-not-disable-gobject-introspection-when-cross-comp.patch
create mode 100644 meta/recipes-graphics/libepoxy/libepoxy/0001-Make-it-possible-to-disable-the-use-of-dlvsym-needed.patch
create mode 100644 meta/recipes-graphics/wayland/libinput/0001-Fix-meson-options-default-values.patch
delete mode 100644 meta/recipes-kernel/sysprof/files/0001-Avoid-building-docs.patch
delete mode 100644 meta/recipes-kernel/sysprof/files/0001-Disable-check-for-polkit-for-UI.patch
create mode 100644 meta/recipes-kernel/sysprof/files/0001-Do-not-build-anything-in-help-as-it-requires-itstool.patch
delete mode 100644 meta/recipes-kernel/sysprof/files/0001-configure-Add-option-to-enable-disable-polkit.patch
create mode 100644 meta/recipes-multimedia/gstreamer/gst-examples/0001-Make-player-examples-installable.patch
rename meta/recipes-multimedia/gstreamer/{gst-player => gst-examples}/gst-player.desktop (100%)
rename meta/recipes-multimedia/gstreamer/{gst-player_git.bb => gst-examples_git.bb} (65%)Signature · 1 line
2.15.0
PATCH 1/7 meson: add a recipe and class from meta-oe
The original recipe has been provided and improved by:
Ross Burton <[email protected]>
Ricardo Ribalda Delgado <[email protected]> Adam C. Foltzer <[email protected]> Peter Kjellerstedt <[email protected]> Linus Svensson <[email protected]>
I have added a couple patches to fix up gtk-doc and gobject-introspection in cross-compilation environments.
--- meta/classes/meson.bbclass | 103 +++++++++++++++++++ ...ix-issues-that-arise-when-cross-compiling.patch | 113 +++++++++++++++++++++ ...rospection-determine-g-ir-scanner-and-g-i.patch | 41 ++++++++ meta/recipes-devtools/meson/meson_0.43.0.bb | 19 ++++ 4 files changed, 276 insertions(+) create mode 100644 meta/classes/meson.bbclass create mode 100644 meta/recipes-devtools/meson/meson/0001-gtkdoc-fix-issues-that-arise-when-cross-compiling.patch create mode 100644 meta/recipes-devtools/meson/meson/0002-gobject-introspection-determine-g-ir-scanner-and-g-i.patch create mode 100644 meta/recipes-devtools/meson/meson_0.43.0.bb
meta/classes/meson.bbclass new file +103 -0
@@ -0,0 +1,103 @@ +inherit python3native + +DEPENDS_append = " meson-native ninja-native" + +# As Meson enforces out-of-tree builds we can just use cleandirs +B = "${WORKDIR}/build" +do_configure[cleandirs] = "${B}" + +# Where the meson.build build configuration is +MESON_SOURCEPATH = "${S}" + +# These variables in the environment override meson's *native* tools settings. +# We have to unset them, so that meson doesn't pick up the cross tools and +# use them for native builds. +unset CC +unset CXX +unset AR + +def noprefix(var, d): + return d.getVar(var, True).replace(d.getVar('prefix', True) + '/', '', 1) + +MESONOPTS = " --prefix ${prefix} \ + --bindir ${@noprefix('bindir', d)} \ + --sbindir ${@noprefix('sbindir', d)} \ + --datadir ${@noprefix('datadir', d)} \ + --libdir ${@noprefix('libdir', d)} \ + --libexecdir ${@noprefix('libexecdir', d)} \ + --includedir ${@noprefix('includedir', d)} \ + --mandir ${@noprefix('mandir', d)} \ + --infodir ${@noprefix('infodir', d)} \ + --sysconfdir ${sysconfdir} \ + --localstatedir ${localstatedir} \ + --sharedstatedir ${sharedstatedir}" + +MESON_C_ARGS = "${TARGET_CC_ARCH}${TOOLCHAIN_OPTIONS}" +MESON_LINK_ARGS = "${MESON_C_ARGS} ${LDFLAGS}" + +MESON_HOST_ENDIAN = "${@bb.utils.contains('SITEINFO_ENDIANNESS', 'be', 'big', 'little', d)}" +MESON_TARGET_ENDIAN = "${@bb.utils.contains('TUNE_FEATURES', 'bigendian', 'big', 'little', d)}" + +EXTRA_OEMESON += "${PACKAGECONFIG_CONFARGS}" + +MESON_CROSS_FILE = "" +MESON_CROSS_FILE_class-target = "--cross-file ${WORKDIR}/meson.cross" + +def meson_array(var, d): + return "', '".join(d.getVar(var, True).split()).join(("'", "'")) + +addtask write_config before do_configure +do_write_config[vardeps] += "MESON_C_ARGS TOOLCHAIN_OPTIONS" +do_write_config() { + # This needs to be Py to split the args into single-element lists + cat >${WORKDIR}/meson.cross <<EOF +[binaries] +c = '${HOST_PREFIX}gcc' +cpp = '${HOST_PREFIX}g++' +ar = '${HOST_PREFIX}ar' +ld = '${HOST_PREFIX}ld' +strip = '${HOST_PREFIX}strip' +readelf = '${HOST_PREFIX}readelf' +pkgconfig = 'pkg-config' + +[properties] +needs_exe_wrapper = true +c_args = [${@meson_array('MESON_C_ARGS', d)}] +c_link_args = [${@meson_array('MESON_LINK_ARGS', d)}] +cpp_args = [${@meson_array('MESON_C_ARGS', d)}] +cpp_link_args = [${@meson_array('MESON_LINK_ARGS', d)}] +gtkdoc_exe_wrapper = '${B}/gtkdoc-qemuwrapper' + +[host_machine] +system = '${HOST_OS}' +cpu_family = '${HOST_ARCH}' +cpu = '${HOST_ARCH}' +endian = '${MESON_HOST_ENDIAN}' + +[target_machine] +system = '${TARGET_OS}' +cpu_family = '${TARGET_ARCH}' +cpu = '${TARGET_ARCH}' +endian = '${MESON_TARGET_ENDIAN}' +EOF +} + +CONFIGURE_FILES = "meson.build" + +meson_do_configure() { + if ! meson ${MESONOPTS} "${MESON_SOURCEPATH}" "${B}" ${MESON_CROSS_FILE} ${EXTRA_OEMESON}; then + cat ${B}/meson-logs/meson-log.txt + bbfatal_log meson failed + fi +} + +do_compile[progress] = "outof:^\[(\d+)/(\d+)\]\s+" +meson_do_compile() { + ninja ${PARALLEL_MAKE} +} + +meson_do_install() { + DESTDIR='${D}' ninja ${PARALLEL_MAKEINST} install +} + +EXPORT_FUNCTIONS do_configure do_compile do_install
meta/recipes-devtools/meson/meson/0001-gtkdoc-fix-issues-that-arise-when-cross-compiling.patch new file +113 -0
113 lines not on this page · raw message
meta/recipes-devtools/meson/meson/0002-gobject-introspection-determine-g-ir-scanner-and-g-i.patch new file +41 -0
41 lines not on this page · raw message
meta/recipes-devtools/meson/meson_0.43.0.bb new file +19 -0
@@ -0,0 +1,19 @@ +HOMEPAGE = "http://mesonbuild.com" +SUMMARY = "A high performance build system" + +LICENSE = "Apache-2.0" +LIC_FILES_CHKSUM = "file://COPYING;md5=3b83ef96387f14655fc854ddc3c6bd57" + +SRC_URI = "https://github.com/mesonbuild/meson/releases/download/${PV}/${BP}.tar.gz \ + file://0001-gtkdoc-fix-issues-that-arise-when-cross-compiling.patch \ + file://0002-gobject-introspection-determine-g-ir-scanner-and-g-i.patch \ + " +SRC_URI[md5sum] = "b0d389cc5937928c2f5114656dc5a99a" +SRC_URI[sha256sum] = "c513eca90e0d70bf14cd1eaafea2fa91cf40a73326a7ff61f08a005048057340" +UPSTREAM_CHECK_URI = "https://github.com/mesonbuild/meson/releases" + +inherit setuptools3 + +RDEPENDS_${PN} = "ninja python3-core python3-modules" + +BBCLASSEXTEND = "native"
Signature · 1 line
2.15.0
Re: [PATCH 1/7] meson: add a recipe and class from meta-oe
Hi,
Quoted 63 lines · Alexander Kanavin
The original recipe has been provided and improved by:
Ross Burton <[email protected]>
Ricardo Ribalda Delgado <[email protected]> Adam C. Foltzer <[email protected]> Peter Kjellerstedt <[email protected]> Linus Svensson <[email protected]>I have added a couple patches to fix up gtk-doc and gobject-introspection in cross-compilation environments.
Signed-off-by Alexander Kanavin <[email protected]>--- meta/classes/meson.bbclass | 103 +++++++++++++++++++ ...ix-issues-that-arise-when-cross-compiling.patch | 113 +++++++++++++++++++++ ...rospection-determine-g-ir-scanner-and-g-i.patch | 41 ++++++++ meta/recipes-devtools/meson/meson_0.43.0.bb | 19 ++++ 4 files changed, 276 insertions(+)create mode 100644 meta/classes/meson.bbclass
create mode 100644meta/recipes-devtools/meson/meson/0001-gtkdoc-fix-issues-that-arise-when-cross-compiling.patchcreate mode 100644meta/recipes-devtools/meson/meson/0002-gobject-introspection-determine-g-ir-scanner-and-g-i.patchcreate mode 100644 meta/recipes-devtools/meson/meson_0.43.0.bbmeta/classes/meson.bbclass new file +34
-0@@ -0,0 +1,103 @@ +inherit python3native + +DEPENDS_append = " meson-native ninja-native" + +# As Meson enforces out-of-tree builds we can just use cleandirs +B = "${WORKDIR}/build" +do_configure[cleandirs] = "${B}" + +# Where the meson.build build configuration is +MESON_SOURCEPATH = "${S}" + +# These variables in the environment override meson's *native* tools settings. +# We have to unset them, so that meson doesn't pick up the cross tools and +# use them for native builds. +unset CC +unset CXX +unset AR + +def noprefix(var, d): + return d.getVar(var, True).replace(d.getVar('prefix', True) + '/', '', 1) + +MESONOPTS = " --prefix ${prefix} \ + --bindir ${@noprefix('bindir', d)} \ + --sbindir ${@noprefix('sbindir', d)} \ + --datadir ${@noprefix('datadir', d)} \ + --libdir ${@noprefix('libdir', d)} \ + --libexecdir ${@noprefix('libexecdir', d)} \ + --includedir ${@noprefix('includedir', d)} \ + --mandir ${@noprefix('mandir', d)} \ + --infodir ${@noprefix('infodir', d)} \ + --sysconfdir ${sysconfdir} \ + --localstatedir ${localstatedir} \ + --sharedstatedir ${sharedstatedir}" +
meta/classes/meson.bbclass line 44
Quoted 10 lines
meta/classes/meson.bbclass new file +10
-0+MESON_C_ARGS = "${TARGET_CC_ARCH}${TOOLCHAIN_OPTIONS}" +MESON_LINK_ARGS = "${MESON_C_ARGS} ${LDFLAGS}" + +MESON_HOST_ENDIAN = "${@bb.utils.contains('SITEINFO_ENDIANNESS', 'be', 'big', 'little', d)}" +MESON_TARGET_ENDIAN = "${@bb.utils.contains('TUNE_FEATURES', 'bigendian', 'big', 'little', d)}" + +EXTRA_OEMESON += "${PACKAGECONFIG_CONFARGS}" + +MESON_CROSS_FILE = "" +MESON_CROSS_FILE_class-target = "--cross-file ${WORKDIR}/meson.cross"
Shouldn't nativesdk builds use a meson.cross file too?
Quoted 29 lines
meta/classes/meson.bbclass new file +29
-0+ +def meson_array(var, d): + return "', '".join(d.getVar(var, True).split()).join(("'", "'")) + +addtask write_config before do_configure +do_write_config[vardeps] += "MESON_C_ARGS TOOLCHAIN_OPTIONS" +do_write_config() { + # This needs to be Py to split the args into single-element lists + cat >${WORKDIR}/meson.cross <<EOF +[binaries] +c = '${HOST_PREFIX}gcc' +cpp = '${HOST_PREFIX}g++' +ar = '${HOST_PREFIX}ar' +ld = '${HOST_PREFIX}ld' +strip = '${HOST_PREFIX}strip' +readelf = '${HOST_PREFIX}readelf' +pkgconfig = 'pkg-config' + +[properties] +needs_exe_wrapper = true +c_args = [${@meson_array('MESON_C_ARGS', d)}] +c_link_args = [${@meson_array('MESON_LINK_ARGS', d)}] +cpp_args = [${@meson_array('MESON_C_ARGS', d)}] +cpp_link_args = [${@meson_array('MESON_LINK_ARGS', d)}] +gtkdoc_exe_wrapper = '${B}/gtkdoc-qemuwrapper' + +[host_machine] +system = '${HOST_OS}' +cpu_family = '${HOST_ARCH}'
meta/classes/meson.bbclass line 83
Quoted 10 lines
meta/classes/meson.bbclass new file +10
-0+cpu = '${HOST_ARCH}' +endian = '${MESON_HOST_ENDIAN}' + +[target_machine] +system = '${TARGET_OS}' +cpu_family = '${TARGET_ARCH}' +cpu = '${TARGET_ARCH}' +endian = '${MESON_TARGET_ENDIAN}' +EOF +}
Is meson.cross also written for native builds? If so, isn't there a way to avoid that?
Quoted 10 lines
meta/classes/meson.bbclass new file +10
-0+ +CONFIGURE_FILES = "meson.build" + +meson_do_configure() { + if ! meson ${MESONOPTS} "${MESON_SOURCEPATH}" "${B}" ${MESON_CROSS_FILE} ${EXTRA_OEMESON}; then + cat ${B}/meson-logs/meson-log.txt + bbfatal_log meson failed + fi +} +
meta/classes/meson.bbclass line 103
Quoted 10 lines
meta/classes/meson.bbclass new file +10
-0+do_compile[progress] = "outof:^\[(\d+)/(\d+)\]\s+" +meson_do_compile() { + ninja ${PARALLEL_MAKE} +} + +meson_do_install() { + DESTDIR='${D}' ninja ${PARALLEL_MAKEINST} install +} + +EXPORT_FUNCTIONS do_configure do_compile do_install
// Martin
Re: [PATCH 1/7] meson: add a recipe and class from meta-oe
In reply to Alexander KanavinThis series was just ran on the autobuilder and there's a few failures:
Anyone interested in getting Meson merged into oe-core is welcome to work with Alex to resolve these.
Ross
Quoted 382 lines · Alexander Kanavin
The original recipe has been provided and improved by:
Ross Burton <[email protected]>
Ricardo Ribalda Delgado <[email protected]> Adam C. Foltzer <[email protected]> Peter Kjellerstedt <[email protected]> Linus Svensson <[email protected]>I have added a couple patches to fix up gtk-doc and gobject-introspection in cross-compilation environments.
Signed-off-by Alexander Kanavin <[email protected]>--- meta/classes/meson.bbclass | 103 +++++++++++++++++++ ...ix-issues-that-arise-when-cross-compiling.patch | 113 +++++++++++++++++++++ ...rospection-determine-g-ir-scanner-and-g-i.patch | 41 ++++++++ meta/recipes-devtools/meson/meson_0.43.0.bb | 19 ++++ 4 files changed, 276 insertions(+) create mode 100644 meta/classes/meson.bbclass create mode 100644 meta/recipes-devtools/meson/ meson/0001-gtkdoc-fix-issues-that-arise-when-cross-compiling.patch create mode 100644 meta/recipes-devtools/meson/meson/0002-gobject- introspection-determine-g-ir-scanner-and-g-i.patch create mode 100644 meta/recipes-devtools/meson/meson_0.43.0.bbmeta/classes/meson.bbclass new file +12
-0@@ -0,0 +1,103 @@ +inherit python3native + +DEPENDS_append = " meson-native ninja-native" + +# As Meson enforces out-of-tree builds we can just use cleandirs +B = "${WORKDIR}/build" +do_configure[cleandirs] = "${B}" + +# Where the meson.build build configuration is +MESON_SOURCEPATH = "${S}" + +# These variables in the environment override meson's *native* toolssettings.
meta/classes/meson.bbclass new file +8
-0+# We have to unset them, so that meson doesn't pick up the cross tools and +# use them for native builds. +unset CC +unset CXX +unset AR + +def noprefix(var, d): + return d.getVar(var, True).replace(d.getVar('prefix', True) + '/','', 1)
meta/classes/meson.bbclass new file +18
-0+ +MESONOPTS = " --prefix ${prefix} \ + --bindir ${@noprefix('bindir', d)} \ + --sbindir ${@noprefix('sbindir', d)} \ + --datadir ${@noprefix('datadir', d)} \ + --libdir ${@noprefix('libdir', d)} \ + --libexecdir ${@noprefix('libexecdir', d)} \ + --includedir ${@noprefix('includedir', d)} \ + --mandir ${@noprefix('mandir', d)} \ + --infodir ${@noprefix('infodir', d)} \ + --sysconfdir ${sysconfdir} \ + --localstatedir ${localstatedir} \ + --sharedstatedir ${sharedstatedir}" + +MESON_C_ARGS = "${TARGET_CC_ARCH}${TOOLCHAIN_OPTIONS}" +MESON_LINK_ARGS = "${MESON_C_ARGS} ${LDFLAGS}" + +MESON_HOST_ENDIAN = "${@bb.utils.contains('SITEINFO_ENDIANNESS', 'be','big', 'little', d)}"
+MESON_TARGET_ENDIAN = "${@bb.utils.contains('TUNE_FEATURES', 'bigendian', 'big', 'little', d)}"meta/classes/meson.bbclass new file +49
-0+ +EXTRA_OEMESON += "${PACKAGECONFIG_CONFARGS}" + +MESON_CROSS_FILE = "" +MESON_CROSS_FILE_class-target = "--cross-file ${WORKDIR}/meson.cross" + +def meson_array(var, d): + return "', '".join(d.getVar(var, True).split()).join(("'", "'")) + +addtask write_config before do_configure +do_write_config[vardeps] += "MESON_C_ARGS TOOLCHAIN_OPTIONS" +do_write_config() { + # This needs to be Py to split the args into single-element lists + cat >${WORKDIR}/meson.cross <<EOF +[binaries] +c = '${HOST_PREFIX}gcc' +cpp = '${HOST_PREFIX}g++' +ar = '${HOST_PREFIX}ar' +ld = '${HOST_PREFIX}ld' +strip = '${HOST_PREFIX}strip' +readelf = '${HOST_PREFIX}readelf' +pkgconfig = 'pkg-config' + +[properties] +needs_exe_wrapper = true +c_args = [${@meson_array('MESON_C_ARGS', d)}] +c_link_args = [${@meson_array('MESON_LINK_ARGS', d)}] +cpp_args = [${@meson_array('MESON_C_ARGS', d)}] +cpp_link_args = [${@meson_array('MESON_LINK_ARGS', d)}] +gtkdoc_exe_wrapper = '${B}/gtkdoc-qemuwrapper' + +[host_machine] +system = '${HOST_OS}' +cpu_family = '${HOST_ARCH}' +cpu = '${HOST_ARCH}' +endian = '${MESON_HOST_ENDIAN}' + +[target_machine] +system = '${TARGET_OS}' +cpu_family = '${TARGET_ARCH}' +cpu = '${TARGET_ARCH}' +endian = '${MESON_TARGET_ENDIAN}' +EOF +} + +CONFIGURE_FILES = "meson.build" + +meson_do_configure() { + if ! meson ${MESONOPTS} "${MESON_SOURCEPATH}" "${B}"${MESON_CROSS_FILE} ${EXTRA_OEMESON}; then
meta/classes/meson.bbclass new file +15
-0+ cat ${B}/meson-logs/meson-log.txt + bbfatal_log meson failed + fi +} + +do_compile[progress] = "outof:^\[(\d+)/(\d+)\]\s+" +meson_do_compile() { + ninja ${PARALLEL_MAKE} +} + +meson_do_install() { + DESTDIR='${D}' ninja ${PARALLEL_MAKEINST} install +} + +EXPORT_FUNCTIONS do_configure do_compile do_install(quoted diff) +0
-0that-arise-when-cross-compiling.patch b/meta/recipes-devtools/meson/
meson/0001-gtkdoc-fix-issues-that-arise-when-cross-compiling.patchnew file mode 100644
index 00000000000..ca3d7095066meta/recipes-devtools/meson/meson/0001-gtkdoc-fix-issues- new file +0
-0that-arise-when-cross-compiling.patch
meta/recipes-devtools/meson/meson/0001-gtkdoc-fix-issues- new file +9
-0@@ -0,0 +1,113 @@ +From 15e054dce6ff11d2cb219c8c09a31b26f0e58b62 Mon Sep 17 00:00:00 2001 +From: Alexander Kanavin <[email protected]> +Date: Fri, 4 Aug 2017 16:16:41 +0300 +Subject: [PATCH 1/3] gtkdoc: fix issues that arise when cross-compiling + +Specifically: +1) Make it possible to specify a wrapper for executing binaries +(usually, some kind of target hardware emulator, such as qemu) +2) Explicitly provide CC and LD via command line, as otherwise gtk-docwill
meta/recipes-devtools/meson/meson/0001-gtkdoc-fix-issues- new file +4
-0+try to guess them, incorrectly. +3) If things break down, print the full command with arguments, +not just the binary name. +4) Correctly determine the compiler/linker executables and cross-optionswhen cross-compiling
meta/recipes-devtools/meson/meson/0001-gtkdoc-fix-issues- new file +18
-0+ +Upstream-Status: Pending +Signed-off-by: Alexander Kanavin <[email protected]> + +--- + mesonbuild/modules/gnome.py | 18 +++++++++++++++--- + mesonbuild/scripts/gtkdochelper.py | 9 +++++++-- + 2 files changed, 22 insertions(+), 5 deletions(-) + +diff --git a/mesonbuild/modules/gnome.py b/mesonbuild/modules/gnome.py +index 6ec7040..4cfaefd 100644 +--- a/mesonbuild/modules/gnome.py ++++ b/mesonbuild/modules/gnome.py +@@ -713,6 +713,10 @@ class GnomeModule(ExtensionModule): + '--mode=' + mode] + if namespace: + args.append('--namespace=' + namespace) ++ gtkdoc_exe_wrapper = state.environment.cross_info.config["properties"].get('gtkdoc_exe_wrapper', None)
++ ifgtkdoc_exe_wrapperis not None:
++args.append('--gtkdoc-exe-wrapper=' + gtkdoc_exe_wrapper)
++meta/recipes-devtools/meson/meson/0001-gtkdoc-fix-issues- new file +3
-0+ args += self._unpack_args('--htmlargs=', 'html_args', kwargs) + args += self._unpack_args('--scanargs=', 'scan_args', kwargs) + args += self._unpack_args('--scanobjsargs=', 'scanobjs_args',kwargs)
+@@ -741,14 +745,22 @@ class GnomeModule(ExtensionModule):meta/recipes-devtools/meson/meson/0001-gtkdoc-fix-issues- new file +5
-0+ raise MesonException( + 'Gir include dirs should be include_directories().') + cflags.update(get_include_args(inc_dirs)) ++ ++ cross_c_args = " ".join(state.environment.cross_info.config["properties"].get('c_args', ""))
++cross_link_args= " ".join(state.environment.
cross_info.config["properties"].get('c_link_args', "")) ++meta/recipes-devtools/meson/meson/0001-gtkdoc-fix-issues- new file +6
-0+ if cflags: +- args += ['--cflags=%s' % ' '.join(cflags)] ++ args += ['--cflags=%s %s' % (cross_c_args,' '.join(cflags))] + if ldflags: +- args += ['--ldflags=%s' % ' '.join(ldflags)] ++ args += ['--ldflags=%s %s' % (cross_link_args, ''.join(ldflags))]
+ compiler = state.environment.coredata.compilers.get('c') +- if compiler: ++ cross_compiler = state.environment.coredata.
cross_compilers.get('c')
++ if compiler and notstate.environment.is_cross_build():meta/recipes-devtools/meson/meson/0001-gtkdoc-fix-issues- new file +2
-0+ args += ['--cc=%s' % ' '.join(compiler.get_exelist())] + args += ['--ld=%s' % ' '.join(compiler.get_linker_
exelist())]
++ elifcross_compilerandstate.environment.is_cross_build():
++ args += ['--cc=%s' % ' '.join(cross_compiler.get_exelist())]
++ args += ['--ld=%s' % ' '.join(cross_compiler.get_linker_exelist())]meta/recipes-devtools/meson/meson/0001-gtkdoc-fix-issues- new file +4
-0+ + return args + +diff --git a/mesonbuild/scripts/gtkdochelper.py b/mesonbuild/scripts/
gtkdochelper.py
+index a2cbf5a..19331bd 100644
+---a/mesonbuild/scripts/gtkdochelper.py
++++b/mesonbuild/scripts/gtkdochelper.py
+@@ -44,13 +44,14 @@parser.add_argument('--ignore-headers', dest='ignore_headers', default='')
+parser.add_argument('--namespace', dest='namespace', default='')
+parser.add_argument('--mode', dest='mode', default='')
+parser.add_argument('--installdir', dest='install_dir')++parser.add_argument('--gtkdoc-exe-wrapper', dest='gtkdoc_exe_wrapper')meta/recipes-devtools/meson/meson/0001-gtkdoc-fix-issues- new file +7
-0+ + def gtkdoc_run_check(cmd, cwd): + # Put stderr into stdout since we want to print it out anyway. + # This preserves the order of messages. + p, out = Popen_safe(cmd, cwd=cwd, stderr=subprocess.STDOUT)[0:2] + if p.returncode != 0: +- err_msg = ["{!r} failed with status {:d}".format(cmd[0],p.returncode)]
++err_msg= ["{!r} failed with status {:d}".format(cmd,
p.returncode)]meta/recipes-devtools/meson/meson/0001-gtkdoc-fix-issues- new file +8
-0+ if out: + err_msg.append(out) + raise MesonException('\n'.join(err_msg)) +@@ -58,7 +59,7 @@ def gtkdoc_run_check(cmd, cwd): + def build_gtkdoc(source_root, build_root, doc_subdir, src_subdirs, + main_file, module, + html_args, scan_args, fixxref_args, mkdb_args, +- gobject_typesfile, scanobjs_args, ld, cc, ldflags,cflags,
++gobject_typesfile,scanobjs_args,gtkdoc_exe_wrapper,
ld, cc, ldflags, cflags,meta/recipes-devtools/meson/meson/0001-gtkdoc-fix-issues- new file +4
-0+ html_assets, content_files, ignore_headers, namespace, + expand_content_files, mode): + print("Building documentation for %s" % module) +@@ -111,6 +112,9 @@ def build_gtkdoc(source_root, build_root, doc_subdir,
src_subdirs,meta/recipes-devtools/meson/meson/0001-gtkdoc-fix-issues- new file +5
-0+ if gobject_typesfile: + scanobjs_cmd = ['gtkdoc-scangobj'] + scanobjs_args + ['--types=' + gobject_typesfile, + '--module=' + module, ++ '--run=' +
gtkdoc_exe_wrapper,
++ '--cc=' +
cc,
++ '--ld=' +
ld,meta/recipes-devtools/meson/meson/0001-gtkdoc-fix-issues- new file +14
-0+ '--cflags=' + cflags, + '--ldflags=' + ldflags] + +@@ -206,6 +210,7 @@ def run(args): + mkdbargs, + options.gobject_typesfile, + scanobjsargs, ++ options.gtkdoc_exe_wrapper, + options.ld, + options.cc, + options.ldflags, +-- +2.14.1 +(quoted diff) +0
-0introspection-determine-g-ir-scanner-and-g-i.patch b/meta/recipes-devtools/meson/meson/0002-gobject- introspection-determine-g-ir-scanner-and-g-i.patch new file mode 100644
index 00000000000..f00b9b2a2d1meta/recipes-devtools/meson/meson/0002-gobject- new file +0
-0introspection-determine-g-ir-scanner-and-g-i.patch
meta/recipes-devtools/meson/meson/0002-gobject- new file +24
-0@@ -0,0 +1,41 @@ +From 84cb251a33190ec82faeaad321518af4b309c55e Mon Sep 17 00:00:00 2001 +From: Alexander Kanavin <[email protected]> +Date: Fri, 4 Aug 2017 16:18:47 +0300 +Subject: [PATCH 2/2] gobject-introspection: determine g-ir-scanner and + g-ir-compiler paths from pkgconfig + +Do not hardcode the name of those binaries; gobject-introspection +provides them via pkgconfig, and they can be set to something else +(for example when cross-compiling). + +Upstream-Status: Pending +Signed-off-by: Alexander Kanavin <[email protected]> +--- + mesonbuild/modules/gnome.py | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/mesonbuild/modules/gnome.py b/mesonbuild/modules/gnome.py +index ba7e4cd..00472af 100644 +--- a/mesonbuild/modules/gnome.py ++++ b/mesonbuild/modules/gnome.py +@@ -380,8 +380,6 @@ class GnomeModule(ExtensionModule): + raise MesonException('Gir takes one argument') + if kwargs.get('install_dir'): + raise MesonException('install_dir is not supported with
generate_gir(), see "install_dir_gir" and "install_dir_typelib"')+- giscanner = find_program('g-ir-scanner', 'Gir') +- gicompiler = find_program('g-ir-compiler', 'Gir')meta/recipes-devtools/meson/meson/0002-gobject- new file +5
-0+ girtarget = args[0] + while hasattr(girtarget, 'held_object'): + girtarget = girtarget.held_object +@@ -392,6 +390,8 @@ class GnomeModule(ExtensionModule): + self.gir_dep = PkgConfigDependency('gobject-introspection-1.0',
meta/recipes-devtools/meson/meson/0002-gobject- new file +3
-0+ state.environment, + {'native': True}) ++ giscanner = os.environ['PKG_CONFIG_SYSROOT_DIR'] +
self.gir_dep.get_pkgconfig_variable('g_ir_scanner')
++ gicompiler = os.environ['PKG_CONFIG_SYSROOT_DIR'] +self.gir_dep.get_pkgconfig_variable('g_ir_compiler')meta/recipes-devtools/meson/meson/0002-gobject- new file +3
-0+ pkgargs = self.gir_dep.get_compile_args() + except Exception: + raise MesonException('gobject-introspection dependency wasnot found, gir cannot be generated.')
+--
+2.13.2meta/recipes-devtools/meson/meson/0002-gobject- new file +1
-0+meta/recipes-devtools/meson/meson_0.43.0.bb new file +7
-0@@ -0,0 +1,19 @@ +HOMEPAGE = "http://mesonbuild.com" +SUMMARY = "A high performance build system" + +LICENSE = "Apache-2.0" +LIC_FILES_CHKSUM = "file://COPYING;md5=3b83ef96387f14655fc854ddc3c6bd57" + +SRC_URI = "https://github.com/mesonbuild/meson/releases/download/${PV}/${BP}.tar.gz \
+ file://0001-gtkdoc-fix-issues-that-arise-when-cross-compiling.patch
\
+ file://0002-gobject-introspection-determine-g-ir-scanner-and-g-i.patch
\meta/recipes-devtools/meson/meson_0.43.0.bb new file +3
-0+ " +SRC_URI[md5sum] = "b0d389cc5937928c2f5114656dc5a99a" +SRC_URI[sha256sum] = "c513eca90e0d70bf14cd1eaafea2fa
91cf40a73326a7ff61f08a005048057340"meta/recipes-devtools/meson/meson_0.43.0.bb new file +7
-1+UPSTREAM_CHECK_URI = "https://github.com/mesonbuild/meson/releases" + +inherit setuptools3 + +RDEPENDS_${PN} = "ninja python3-core python3-modules" + +BBCLASSEXTEND = "native" --2.15.0
--
_______________________________________________
Openembedded-core mailing list
[email protected]
http://lists.openembedded.org/mailman/listinfo/openembedded-core
Re: [PATCH 1/7] meson: add a recipe and class from meta-oe
In reply to Alexander KanavinHi,
It looks to me like there are some changes here on top of a forked meson.bbclass from meta-oe. Did you rebase the changes on top of current meta-oe's meson? From a look at the git logs and file contents, it looks like it needs a rebase or we may drop some patches.
Quoted 324 lines · Alexander Kanavin
The original recipe has been provided and improved by:
Ross Burton <[email protected]>
Ricardo Ribalda Delgado <[email protected]> Adam C. Foltzer <[email protected]> Peter Kjellerstedt <[email protected]> Linus Svensson <[email protected]>I have added a couple patches to fix up gtk-doc and gobject-introspection in cross-compilation environments.
Signed-off-by Alexander Kanavin <[email protected]>--- meta/classes/meson.bbclass | 103 +++++++++++++++++++ ...ix-issues-that-arise-when-cross-compiling.patch | 113 +++++++++++++++++++++ ...rospection-determine-g-ir-scanner-and-g-i.patch | 41 ++++++++ meta/recipes-devtools/meson/meson_0.43.0.bb | 19 ++++ 4 files changed, 276 insertions(+)create mode 100644 meta/classes/meson.bbclass
create mode 100644meta/recipes-devtools/meson/meson/0001-gtkdoc-fix-issues-that-arise-when-cross-compiling.patchcreate mode 100644meta/recipes-devtools/meson/meson/0002-gobject-introspection-determine-g-ir-scanner-and-g-i.patchcreate mode 100644 meta/recipes-devtools/meson/meson_0.43.0.bbmeta/classes/meson.bbclass new file +103
-0@@ -0,0 +1,103 @@ +inherit python3native + +DEPENDS_append = " meson-native ninja-native" + +# As Meson enforces out-of-tree builds we can just use cleandirs +B = "${WORKDIR}/build" +do_configure[cleandirs] = "${B}" + +# Where the meson.build build configuration is +MESON_SOURCEPATH = "${S}" + +# These variables in the environment override meson's *native* tools settings. +# We have to unset them, so that meson doesn't pick up the cross tools and +# use them for native builds. +unset CC +unset CXX +unset AR + +def noprefix(var, d): + return d.getVar(var, True).replace(d.getVar('prefix', True) + '/', '', 1) + +MESONOPTS = " --prefix ${prefix} \ + --bindir ${@noprefix('bindir', d)} \ + --sbindir ${@noprefix('sbindir', d)} \ + --datadir ${@noprefix('datadir', d)} \ + --libdir ${@noprefix('libdir', d)} \ + --libexecdir ${@noprefix('libexecdir', d)} \ + --includedir ${@noprefix('includedir', d)} \ + --mandir ${@noprefix('mandir', d)} \ + --infodir ${@noprefix('infodir', d)} \ + --sysconfdir ${sysconfdir} \ + --localstatedir ${localstatedir} \ + --sharedstatedir ${sharedstatedir}" + +MESON_C_ARGS = "${TARGET_CC_ARCH}${TOOLCHAIN_OPTIONS}" +MESON_LINK_ARGS = "${MESON_C_ARGS} ${LDFLAGS}" + +MESON_HOST_ENDIAN = "${@bb.utils.contains('SITEINFO_ENDIANNESS', 'be', 'big', 'little', d)}" +MESON_TARGET_ENDIAN = "${@bb.utils.contains('TUNE_FEATURES', 'bigendian', 'big', 'little', d)}" + +EXTRA_OEMESON += "${PACKAGECONFIG_CONFARGS}" + +MESON_CROSS_FILE = "" +MESON_CROSS_FILE_class-target = "--cross-file ${WORKDIR}/meson.cross" + +def meson_array(var, d): + return "', '".join(d.getVar(var, True).split()).join(("'", "'")) + +addtask write_config before do_configure +do_write_config[vardeps] += "MESON_C_ARGS TOOLCHAIN_OPTIONS" +do_write_config() { + # This needs to be Py to split the args into single-element lists + cat >${WORKDIR}/meson.cross <<EOF +[binaries] +c = '${HOST_PREFIX}gcc' +cpp = '${HOST_PREFIX}g++' +ar = '${HOST_PREFIX}ar' +ld = '${HOST_PREFIX}ld' +strip = '${HOST_PREFIX}strip' +readelf = '${HOST_PREFIX}readelf' +pkgconfig = 'pkg-config' + +[properties] +needs_exe_wrapper = true +c_args = [${@meson_array('MESON_C_ARGS', d)}] +c_link_args = [${@meson_array('MESON_LINK_ARGS', d)}] +cpp_args = [${@meson_array('MESON_C_ARGS', d)}] +cpp_link_args = [${@meson_array('MESON_LINK_ARGS', d)}] +gtkdoc_exe_wrapper = '${B}/gtkdoc-qemuwrapper' + +[host_machine] +system = '${HOST_OS}' +cpu_family = '${HOST_ARCH}' +cpu = '${HOST_ARCH}' +endian = '${MESON_HOST_ENDIAN}' + +[target_machine] +system = '${TARGET_OS}' +cpu_family = '${TARGET_ARCH}' +cpu = '${TARGET_ARCH}' +endian = '${MESON_TARGET_ENDIAN}' +EOF +} + +CONFIGURE_FILES = "meson.build" + +meson_do_configure() { + if ! meson ${MESONOPTS} "${MESON_SOURCEPATH}" "${B}" ${MESON_CROSS_FILE} ${EXTRA_OEMESON}; then + cat ${B}/meson-logs/meson-log.txt + bbfatal_log meson failed + fi +} + +do_compile[progress] = "outof:^\[(\d+)/(\d+)\]\s+" +meson_do_compile() { + ninja ${PARALLEL_MAKE} +} + +meson_do_install() { + DESTDIR='${D}' ninja ${PARALLEL_MAKEINST} install +} + +EXPORT_FUNCTIONS do_configure do_compile do_installmeta/recipes-devtools/meson/meson/0001-gtkdoc-fix-issues-that-arise-when-cross-compiling.patch new file +113
-0@@ -0,0 +1,113 @@ +From 15e054dce6ff11d2cb219c8c09a31b26f0e58b62 Mon Sep 17 00:00:00 2001 +From: Alexander Kanavin <[email protected]> +Date: Fri, 4 Aug 2017 16:16:41 +0300 +Subject: [PATCH 1/3] gtkdoc: fix issues that arise when cross-compiling + +Specifically: +1) Make it possible to specify a wrapper for executing binaries +(usually, some kind of target hardware emulator, such as qemu) +2) Explicitly provide CC and LD via command line, as otherwise gtk-doc will +try to guess them, incorrectly. +3) If things break down, print the full command with arguments, +not just the binary name. +4) Correctly determine the compiler/linker executables and cross-options when cross-compiling + +Upstream-Status: Pending +Signed-off-by: Alexander Kanavin <[email protected]> + +--- + mesonbuild/modules/gnome.py | 18 +++++++++++++++--- + mesonbuild/scripts/gtkdochelper.py | 9 +++++++-- + 2 files changed, 22 insertions(+), 5 deletions(-) + +diff --git a/mesonbuild/modules/gnome.py b/mesonbuild/modules/gnome.py +index 6ec7040..4cfaefd 100644 +--- a/mesonbuild/modules/gnome.py ++++ b/mesonbuild/modules/gnome.py +@@ -713,6 +713,10 @@ class GnomeModule(ExtensionModule): + '--mode=' + mode] + if namespace: + args.append('--namespace=' + namespace) ++ gtkdoc_exe_wrapper = state.environment.cross_info.config["properties"].get('gtkdoc_exe_wrapper', None) ++ if gtkdoc_exe_wrapper is not None: ++ args.append('--gtkdoc-exe-wrapper=' + gtkdoc_exe_wrapper) ++ + args += self._unpack_args('--htmlargs=', 'html_args', kwargs) + args += self._unpack_args('--scanargs=', 'scan_args', kwargs) + args += self._unpack_args('--scanobjsargs=', 'scanobjs_args', kwargs) +@@ -741,14 +745,22 @@ class GnomeModule(ExtensionModule): + raise MesonException( + 'Gir include dirs should be include_directories().') + cflags.update(get_include_args(inc_dirs)) ++ ++ cross_c_args = " ".join(state.environment.cross_info.config["properties"].get('c_args', "")) ++ cross_link_args = " ".join(state.environment.cross_info.config["properties"].get('c_link_args', "")) ++ + if cflags: +- args += ['--cflags=%s' % ' '.join(cflags)] ++ args += ['--cflags=%s %s' % (cross_c_args,' '.join(cflags))] + if ldflags: +- args += ['--ldflags=%s' % ' '.join(ldflags)] ++ args += ['--ldflags=%s %s' % (cross_link_args, ' '.join(ldflags))] + compiler = state.environment.coredata.compilers.get('c') +- if compiler: ++ cross_compiler = state.environment.coredata.cross_compilers.get('c') ++ if compiler and not state.environment.is_cross_build(): + args += ['--cc=%s' % ' '.join(compiler.get_exelist())] + args += ['--ld=%s' % ' '.join(compiler.get_linker_exelist())] ++ elif cross_compiler and state.environment.is_cross_build(): ++ args += ['--cc=%s' % ' '.join(cross_compiler.get_exelist())] ++ args += ['--ld=%s' % ' '.join(cross_compiler.get_linker_exelist())] + + return args + +diff --git a/mesonbuild/scripts/gtkdochelper.py b/mesonbuild/scripts/gtkdochelper.py +index a2cbf5a..19331bd 100644 +--- a/mesonbuild/scripts/gtkdochelper.py ++++ b/mesonbuild/scripts/gtkdochelper.py +@@ -44,13 +44,14 @@ parser.add_argument('--ignore-headers', dest='ignore_headers', default='') + parser.add_argument('--namespace', dest='namespace', default='') + parser.add_argument('--mode', dest='mode', default='') + parser.add_argument('--installdir', dest='install_dir') ++parser.add_argument('--gtkdoc-exe-wrapper', dest='gtkdoc_exe_wrapper') + + def gtkdoc_run_check(cmd, cwd): + # Put stderr into stdout since we want to print it out anyway. + # This preserves the order of messages. + p, out = Popen_safe(cmd, cwd=cwd, stderr=subprocess.STDOUT)[0:2] + if p.returncode != 0: +- err_msg = ["{!r} failed with status {:d}".format(cmd[0], p.returncode)] ++ err_msg = ["{!r} failed with status {:d}".format(cmd, p.returncode)] + if out: + err_msg.append(out) + raise MesonException('\n'.join(err_msg)) +@@ -58,7 +59,7 @@ def gtkdoc_run_check(cmd, cwd): + def build_gtkdoc(source_root, build_root, doc_subdir, src_subdirs, + main_file, module, + html_args, scan_args, fixxref_args, mkdb_args, +- gobject_typesfile, scanobjs_args, ld, cc, ldflags, cflags, ++ gobject_typesfile, scanobjs_args, gtkdoc_exe_wrapper, ld, cc, ldflags, cflags, + html_assets, content_files, ignore_headers, namespace, + expand_content_files, mode): + print("Building documentation for %s" % module) +@@ -111,6 +112,9 @@ def build_gtkdoc(source_root, build_root, doc_subdir, src_subdirs, + if gobject_typesfile: + scanobjs_cmd = ['gtkdoc-scangobj'] + scanobjs_args + ['--types=' + gobject_typesfile, + '--module=' + module, ++ '--run=' + gtkdoc_exe_wrapper, ++ '--cc=' + cc, ++ '--ld=' + ld, + '--cflags=' + cflags, + '--ldflags=' + ldflags] + +@@ -206,6 +210,7 @@ def run(args): + mkdbargs, + options.gobject_typesfile, + scanobjsargs, ++ options.gtkdoc_exe_wrapper, + options.ld, + options.cc, + options.ldflags, +-- +2.14.1 +meta/recipes-devtools/meson/meson/0002-gobject-introspection-determine-g-ir-scanner-and-g-i.patch new file +41
-0@@ -0,0 +1,41 @@ +From 84cb251a33190ec82faeaad321518af4b309c55e Mon Sep 17 00:00:00 2001 +From: Alexander Kanavin <[email protected]> +Date: Fri, 4 Aug 2017 16:18:47 +0300 +Subject: [PATCH 2/2] gobject-introspection: determine g-ir-scanner and + g-ir-compiler paths from pkgconfig + +Do not hardcode the name of those binaries; gobject-introspection +provides them via pkgconfig, and they can be set to something else +(for example when cross-compiling). + +Upstream-Status: Pending +Signed-off-by: Alexander Kanavin <[email protected]> +--- + mesonbuild/modules/gnome.py | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/mesonbuild/modules/gnome.py b/mesonbuild/modules/gnome.py +index ba7e4cd..00472af 100644 +--- a/mesonbuild/modules/gnome.py ++++ b/mesonbuild/modules/gnome.py +@@ -380,8 +380,6 @@ class GnomeModule(ExtensionModule): + raise MesonException('Gir takes one argument') + if kwargs.get('install_dir'): + raise MesonException('install_dir is not supported with generate_gir(), see "install_dir_gir" and "install_dir_typelib"') +- giscanner = find_program('g-ir-scanner', 'Gir') +- gicompiler = find_program('g-ir-compiler', 'Gir') + girtarget = args[0] + while hasattr(girtarget, 'held_object'): + girtarget = girtarget.held_object +@@ -392,6 +390,8 @@ class GnomeModule(ExtensionModule): + self.gir_dep = PkgConfigDependency('gobject-introspection-1.0', + state.environment, + {'native': True}) ++ giscanner = os.environ['PKG_CONFIG_SYSROOT_DIR'] + self.gir_dep.get_pkgconfig_variable('g_ir_scanner') ++ gicompiler = os.environ['PKG_CONFIG_SYSROOT_DIR'] + self.gir_dep.get_pkgconfig_variable('g_ir_compiler') + pkgargs = self.gir_dep.get_compile_args() + except Exception: + raise MesonException('gobject-introspection dependency was not found, gir cannot be generated.') +-- +2.13.2 +meta/recipes-devtools/meson/meson_0.43.0.bb new file +19
-0@@ -0,0 +1,19 @@ +HOMEPAGE = "http://mesonbuild.com" +SUMMARY = "A high performance build system" + +LICENSE = "Apache-2.0" +LIC_FILES_CHKSUM = "file://COPYING;md5=3b83ef96387f14655fc854ddc3c6bd57" + +SRC_URI = "https://github.com/mesonbuild/meson/releases/download/${PV}/${BP}.tar.gz \ + file://0001-gtkdoc-fix-issues-that-arise-when-cross-compiling.patch \ + file://0002-gobject-introspection-determine-g-ir-scanner-and-g-i.patch \ + " +SRC_URI[md5sum] = "b0d389cc5937928c2f5114656dc5a99a" +SRC_URI[sha256sum] = "c513eca90e0d70bf14cd1eaafea2fa91cf40a73326a7ff61f08a005048057340" +UPSTREAM_CHECK_URI = "https://github.com/mesonbuild/meson/releases" + +inherit setuptools3 + +RDEPENDS_${PN} = "ninja python3-core python3-modules" + +BBCLASSEXTEND = "native"
Re: [PATCH 1/7] meson: add a recipe and class from meta-oe
Correction: I took another look after merging in my meson patch, and I think your branch is fully current.
Quoted 381 lines · Martin Kelly
Hi,
It looks to me like there are some changes here on top of a forked meson.bbclass from meta-oe. Did you rebase the changes on top of current meta-oe's meson? From a look at the git logs and file contents, it looks like it needs a rebase or we may drop some patches.
Quoted 376 lines · Alexander Kanavin
The original recipe has been provided and improved by:
Ross Burton <[email protected]>
Ricardo Ribalda Delgado <[email protected]> Adam C. Foltzer <[email protected]> Peter Kjellerstedt <[email protected]> Linus Svensson <[email protected]>I have added a couple patches to fix up gtk-doc and gobject-introspection in cross-compilation environments.
Signed-off-by Alexander Kanavin <[email protected]>---
meta/classes/meson.bbclass | 103
+++++++++++++++++++
...ix-issues-that-arise-when-cross-compiling.patch | 113
+++++++++++++++++++++
...rospection-determine-g-ir-scanner-and-g-i.patch | 41 ++++++++ meta/recipes-devtools/meson/meson_0.43.0.bb | 19 ++++4 files changed, 276 insertions(+)create mode 100644 meta/classes/meson.bbclass
create mode 100644meta/recipes-devtools/meson/meson/0001-gtkdoc-fix-issues-that-arise-when-cross-compiling.patchcreate mode 100644
meta/recipes-devtools/meson/meson/0002-gobject-introspection-determine-g-ir-scanner-and-g-i.patchcreate mode 100644 meta/recipes-devtools/meson/meson_0.43.0.bb
meta/classes/meson.bbclass new file +12
-0@@ -0,0 +1,103 @@ +inherit python3native + +DEPENDS_append = " meson-native ninja-native" + +# As Meson enforces out-of-tree builds we can just use cleandirs +B = "${WORKDIR}/build" +do_configure[cleandirs] = "${B}" + +# Where the meson.build build configuration is +MESON_SOURCEPATH = "${S}" + +# These variables in the environment override meson's *native* toolssettings.
+# We have to unset them, so that meson doesn't pick up the cross tools andmeta/classes/meson.bbclass new file +7
-0+# use them for native builds. +unset CC +unset CXX +unset AR + +def noprefix(var, d): + return d.getVar(var, True).replace(d.getVar('prefix', True) +'/', '', 1)
meta/classes/meson.bbclass new file +18
-0+ +MESONOPTS = " --prefix ${prefix} \ + --bindir ${@noprefix('bindir', d)} \ + --sbindir ${@noprefix('sbindir', d)} \ + --datadir ${@noprefix('datadir', d)} \ + --libdir ${@noprefix('libdir', d)} \ + --libexecdir ${@noprefix('libexecdir', d)} \ + --includedir ${@noprefix('includedir', d)} \ + --mandir ${@noprefix('mandir', d)} \ + --infodir ${@noprefix('infodir', d)} \ + --sysconfdir ${sysconfdir} \ + --localstatedir ${localstatedir} \ + --sharedstatedir ${sharedstatedir}" + +MESON_C_ARGS = "${TARGET_CC_ARCH}${TOOLCHAIN_OPTIONS}" +MESON_LINK_ARGS = "${MESON_C_ARGS} ${LDFLAGS}" + +MESON_HOST_ENDIAN = "${@bb.utils.contains('SITEINFO_ENDIANNESS','be', 'big', 'little', d)}"
+MESON_TARGET_ENDIAN = "${@bb.utils.contains('TUNE_FEATURES', 'bigendian', 'big', 'little', d)}"meta/classes/meson.bbclass new file +49
-0+ +EXTRA_OEMESON += "${PACKAGECONFIG_CONFARGS}" + +MESON_CROSS_FILE = "" +MESON_CROSS_FILE_class-target = "--cross-file ${WORKDIR}/meson.cross" + +def meson_array(var, d): + return "', '".join(d.getVar(var, True).split()).join(("'", "'")) + +addtask write_config before do_configure +do_write_config[vardeps] += "MESON_C_ARGS TOOLCHAIN_OPTIONS" +do_write_config() { + # This needs to be Py to split the args into single-element lists + cat >${WORKDIR}/meson.cross <<EOF +[binaries] +c = '${HOST_PREFIX}gcc' +cpp = '${HOST_PREFIX}g++' +ar = '${HOST_PREFIX}ar' +ld = '${HOST_PREFIX}ld' +strip = '${HOST_PREFIX}strip' +readelf = '${HOST_PREFIX}readelf' +pkgconfig = 'pkg-config' + +[properties] +needs_exe_wrapper = true +c_args = [${@meson_array('MESON_C_ARGS', d)}] +c_link_args = [${@meson_array('MESON_LINK_ARGS', d)}] +cpp_args = [${@meson_array('MESON_C_ARGS', d)}] +cpp_link_args = [${@meson_array('MESON_LINK_ARGS', d)}] +gtkdoc_exe_wrapper = '${B}/gtkdoc-qemuwrapper' + +[host_machine] +system = '${HOST_OS}' +cpu_family = '${HOST_ARCH}' +cpu = '${HOST_ARCH}' +endian = '${MESON_HOST_ENDIAN}' + +[target_machine] +system = '${TARGET_OS}' +cpu_family = '${TARGET_ARCH}' +cpu = '${TARGET_ARCH}' +endian = '${MESON_TARGET_ENDIAN}' +EOF +} + +CONFIGURE_FILES = "meson.build" + +meson_do_configure() { + if ! meson ${MESONOPTS} "${MESON_SOURCEPATH}" "${B}"${MESON_CROSS_FILE} ${EXTRA_OEMESON}; then
+ cat${B}/meson-logs/meson-log.txt
+bbfatal_logmeson failed
+ fimeta/classes/meson.bbclass new file +12
-0+} + +do_compile[progress] = "outof:^\[(\d+)/(\d+)\]\s+" +meson_do_compile() { + ninja ${PARALLEL_MAKE} +} + +meson_do_install() { + DESTDIR='${D}' ninja ${PARALLEL_MAKEINST} install +} + +EXPORT_FUNCTIONS do_configure do_compile do_installmeta/recipes-devtools/meson/meson/0001-gtkdoc-fix-issues-that-arise-when-cross-compiling.patch +0
-0new file mode 100644
index 00000000000..ca3d7095066
---/dev/null
+++b/meta/recipes-devtools/meson/meson/0001-gtkdoc-fix-issues-that-arise-when-cross-compiling.patchmeta/recipes-devtools/meson/meson/0001-gtkdoc-fix-issues-that-arise-when-cross-compiling.patch +9
-0@@ -0,0 +1,113 @@ +From 15e054dce6ff11d2cb219c8c09a31b26f0e58b62 Mon Sep 17 00:00:00 2001 +From: Alexander Kanavin <[email protected]> +Date: Fri, 4 Aug 2017 16:16:41 +0300 +Subject: [PATCH 1/3] gtkdoc: fix issues that arise when cross-compiling + +Specifically: +1) Make it possible to specify a wrapper for executing binaries +(usually, some kind of target hardware emulator, such as qemu) +2) Explicitly provide CC and LD via command line, as otherwisegtk-doc will
meta/recipes-devtools/meson/meson/0001-gtkdoc-fix-issues-that-arise-when-cross-compiling.patch +4
-0+try to guess them, incorrectly. +3) If things break down, print the full command with arguments, +not just the binary name. +4) Correctly determine the compiler/linker executables andcross-options when cross-compiling
meta/recipes-devtools/meson/meson/0001-gtkdoc-fix-issues-that-arise-when-cross-compiling.patch +18
-0+ +Upstream-Status: Pending +Signed-off-by: Alexander Kanavin <[email protected]> + +--- + mesonbuild/modules/gnome.py | 18 +++++++++++++++--- + mesonbuild/scripts/gtkdochelper.py | 9 +++++++-- + 2 files changed, 22 insertions(+), 5 deletions(-) + +diff --git a/mesonbuild/modules/gnome.py b/mesonbuild/modules/gnome.py +index 6ec7040..4cfaefd 100644 +--- a/mesonbuild/modules/gnome.py ++++ b/mesonbuild/modules/gnome.py +@@ -713,6 +713,10 @@ class GnomeModule(ExtensionModule): + '--mode=' + mode] + if namespace: + args.append('--namespace=' + namespace) ++ gtkdoc_exe_wrapper =state.environment.cross_info.config["properties"].get('gtkdoc_exe_wrapper', None) ++ if
gtkdoc_exe_wrapperis not None:
++args.append('--gtkdoc-exe-wrapper=' + gtkdoc_exe_wrapper)++
+ args +=self._unpack_args('--htmlargs=', 'html_args', kwargs)+ args +=self._unpack_args('--scanargs=', 'scan_args', kwargs)+ args +=self._unpack_args('--scanobjsargs=', 'scanobjs_args', kwargs)
+@@ -741,14 +745,22 @@ class GnomeModule(ExtensionModule):
+ raise MesonException(
+ 'Gir include dirs should beinclude_directories().')
+ cflags.update(get_include_args(inc_dirs))
++
++cross_c_args= " ".join(state.environment.cross_info.config["properties"].get('c_args', "")) ++cross_link_args= " ".join(state.environment.cross_info.config["properties"].get('c_link_args', "")) ++
+ if cflags:
+- args += ['--cflags=%s' % ' '.join(cflags)]
++ args += ['--cflags=%s %s' % (cross_c_args,' '.join(cflags))]
+ if ldflags:
+- args += ['--ldflags=%s' % ' '.join(ldflags)]
++ args += ['--ldflags=%s %s' % (cross_link_args, ' '.join(ldflags))]
+ compiler =state.environment.coredata.compilers.get('c')+- if compiler:
++cross_compiler=state.environment.coredata.cross_compilers.get('c')
++ if compiler and notstate.environment.is_cross_build():
+ args += ['--cc=%s' % ' '.join(compiler.get_exelist())] + args += ['--ld=%s' % ' '.join(compiler.get_linker_exelist())]
++ elifcross_compilerandstate.environment.is_cross_build():
++ args += ['--cc=%s' % ' '.join(cross_compiler.get_exelist())]
++ args += ['--ld=%s' % ' '.join(cross_compiler.get_linker_exelist())]meta/recipes-devtools/meson/meson/0001-gtkdoc-fix-issues-that-arise-when-cross-compiling.patch +4
-0+ + return args + +diff --git a/mesonbuild/scripts/gtkdochelper.py
b/mesonbuild/scripts/gtkdochelper.py
+index a2cbf5a..19331bd 100644
+---a/mesonbuild/scripts/gtkdochelper.py
++++b/mesonbuild/scripts/gtkdochelper.py
+@@ -44,13 +44,14 @@parser.add_argument('--ignore-headers', dest='ignore_headers', default='')
+parser.add_argument('--namespace', dest='namespace', default='')
+parser.add_argument('--mode', dest='mode', default='')
+parser.add_argument('--installdir', dest='install_dir')++parser.add_argument('--gtkdoc-exe-wrapper', dest='gtkdoc_exe_wrapper') +
+ defgtkdoc_run_check(cmd, cwd):
+ # Put stderr into stdout since we want to print it out anyway. + # This preserves the order of messages.
+ p, out =Popen_safe(cmd, cwd=cwd, stderr=subprocess.STDOUT)[0:2] + if p.returncode != 0:
+-err_msg= ["{!r} failed with status {:d}".format(cmd[0], p.returncode)]
++err_msg= ["{!r} failed with status {:d}".format(cmd, p.returncode)]
+ if out:
+err_msg.append(out)
+ raise MesonException('\n'.join(err_msg))
+@@ -58,7 +59,7 @@ defgtkdoc_run_check(cmd, cwd):
+ def build_gtkdoc(source_root,build_root,doc_subdir,src_subdirs, +main_file, module,
+html_args,scan_args,fixxref_args,mkdb_args, +-gobject_typesfile,scanobjs_args, ld, cc, ldflags, cflags,
++gobject_typesfile,scanobjs_args,gtkdoc_exe_wrapper, ld, cc, ldflags, cflags,
+html_assets,content_files,ignore_headers, namespace, +expand_content_files, mode):
+print("Building documentation for %s" % module)
+@@ -111,6 +112,9 @@ def build_gtkdoc(source_root,build_root,doc_subdir,src_subdirs,
+ ifgobject_typesfile:
+scanobjs_cmd= ['gtkdoc-scangobj'] +scanobjs_args+ ['--types=' +gobject_typesfile,
+
'--module=' + module,
++
'--run=' +gtkdoc_exe_wrapper,
++
'--cc=' + cc,
++
'--ld=' + ld,
+
'--cflags=' + cflags,
+
'--ldflags=' + ldflags]meta/recipes-devtools/meson/meson/0001-gtkdoc-fix-issues-that-arise-when-cross-compiling.patch +12
-0+ +@@ -206,6 +210,7 @@ def run(args): + mkdbargs, + options.gobject_typesfile, + scanobjsargs, ++ options.gtkdoc_exe_wrapper, + options.ld, + options.cc, + options.ldflags, +-- +2.14.1 +meta/recipes-devtools/meson/meson/0002-gobject-introspection-determine-g-ir-scanner-and-g-i.patch +0
-0new file mode 100644
index 00000000000..f00b9b2a2d1
---/dev/null
+++b/meta/recipes-devtools/meson/meson/0002-gobject-introspection-determine-g-ir-scanner-and-g-i.patchmeta/recipes-devtools/meson/meson/0002-gobject-introspection-determine-g-ir-scanner-and-g-i.patch +24
-0@@ -0,0 +1,41 @@ +From 84cb251a33190ec82faeaad321518af4b309c55e Mon Sep 17 00:00:00 2001 +From: Alexander Kanavin <[email protected]> +Date: Fri, 4 Aug 2017 16:18:47 +0300 +Subject: [PATCH 2/2] gobject-introspection: determine g-ir-scanner and + g-ir-compiler paths from pkgconfig + +Do not hardcode the name of those binaries; gobject-introspection +provides them via pkgconfig, and they can be set to something else +(for example when cross-compiling). + +Upstream-Status: Pending +Signed-off-by: Alexander Kanavin <[email protected]> +--- + mesonbuild/modules/gnome.py | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/mesonbuild/modules/gnome.py b/mesonbuild/modules/gnome.py +index ba7e4cd..00472af 100644 +--- a/mesonbuild/modules/gnome.py ++++ b/mesonbuild/modules/gnome.py +@@ -380,8 +380,6 @@ class GnomeModule(ExtensionModule): + raise MesonException('Gir takes one argument') + if kwargs.get('install_dir'): + raise MesonException('install_dir is not supported with
generate_gir(), see "install_dir_gir" and "install_dir_typelib"')+- giscanner = find_program('g-ir-scanner', 'Gir') +- gicompiler = find_program('g-ir-compiler', 'Gir')+ girtarget = args[0]
+ whilehasattr(girtarget, 'held_object'):
+ girtarget = girtarget.held_object
+@@ -392,6 +390,8 @@ class GnomeModule(ExtensionModule):
+ self.gir_dep = PkgConfigDependency('gobject-introspection-1.0',
+ state.environment, + {'native': True}) ++ giscanner = os.environ['PKG_CONFIG_SYSROOT_DIR'] +self.gir_dep.get_pkgconfig_variable('g_ir_scanner')
++ gicompiler = os.environ['PKG_CONFIG_SYSROOT_DIR'] +self.gir_dep.get_pkgconfig_variable('g_ir_compiler')
+ pkgargs =self.gir_dep.get_compile_args()
+ except Exception:
+ raiseMesonException('gobject-introspection dependency was not found, gir cannot be generated.')
+--
+2.13.2meta/recipes-devtools/meson/meson/0002-gobject-introspection-determine-g-ir-scanner-and-g-i.patch +1
-0+meta/recipes-devtools/meson/meson_0.43.0.bb new file +7
-0@@ -0,0 +1,19 @@ +HOMEPAGE = "http://mesonbuild.com" +SUMMARY = "A high performance build system" + +LICENSE = "Apache-2.0" +LIC_FILES_CHKSUM = "file://COPYING;md5=3b83ef96387f14655fc854ddc3c6bd57" + +SRC_URI ="https://github.com/mesonbuild/meson/releases/download/${PV}/${BP}.tar.gz \
+ file://0001-gtkdoc-fix-issues-that-arise-when-cross-compiling.patch \
+ file://0002-gobject-introspection-determine-g-ir-scanner-and-g-i.patch \
+ "meta/recipes-devtools/meson/meson_0.43.0.bb new file +2
-0+SRC_URI[md5sum] = "b0d389cc5937928c2f5114656dc5a99a" +SRC_URI[sha256sum] ="
c513eca90e0d70bf14cd1eaafea2fa91cf40a73326a7ff61f08a005048057340"meta/recipes-devtools/meson/meson_0.43.0.bb new file +7
-0+UPSTREAM_CHECK_URI = "https://github.com/mesonbuild/meson/releases" + +inherit setuptools3 + +RDEPENDS_${PN} = "ninja python3-core python3-modules" + +BBCLASSEXTEND = "native"
PATCH 2/7 gnomebase.bbclass: split into autotools and meson versions
In reply to Alexander Kanavingnomebase.bbclass unfortunately hardcodes the autotools inherit, so we have to introduce gnomebase-nobuildsystem.bbclass where the common bits between autotools and meson classes can be placed.
--- meta/classes/gnomebase-meson.bbclass | 1 + meta/classes/gnomebase-nobuildsystem.bbclass | 27 +++++++++++++++++++++++++ meta/classes/gnomebase.bbclass | 30 +--------------------------- 3 files changed, 29 insertions(+), 29 deletions(-) create mode 100644 meta/classes/gnomebase-meson.bbclass create mode 100644 meta/classes/gnomebase-nobuildsystem.bbclass
meta/classes/gnomebase-meson.bbclass new file +1 -0
@@ -0,0 +1 @@ +inherit meson gnomebase-nobuildsystem
meta/classes/gnomebase-nobuildsystem.bbclass new file +27 -0
@@ -0,0 +1,27 @@ +def gnome_verdir(v): + return oe.utils.trim_version(v, 2) + +GNOME_COMPRESS_TYPE ?= "xz" +SECTION ?= "x11/gnome" +GNOMEBN ?= "${BPN}" +SRC_URI = "${GNOME_MIRROR}/${GNOMEBN}/${@gnome_verdir("${PV}")}/${GNOMEBN}-${PV}.tar.${GNOME_COMPRESS_TYPE};name=archive" + +FILES_${PN} += "${datadir}/application-registry \ + ${datadir}/mime-info \ + ${datadir}/mime/packages \ + ${datadir}/mime/application \ + ${datadir}/gnome-2.0 \ + ${datadir}/polkit* \ + ${datadir}/GConf \ + ${datadir}/glib-2.0/schemas \ + ${datadir}/appdata \ + ${datadir}/icons \ +" + +FILES_${PN}-doc += "${datadir}/devhelp" + +do_install_append() { + rm -rf ${D}${localstatedir}/lib/scrollkeeper/* + rm -rf ${D}${localstatedir}/scrollkeeper/* + rm -f ${D}${datadir}/applications/*.cache +}
meta/classes/gnomebase.bbclass +1 -29
@@ -1,29 +1 @@ -def gnome_verdir(v): - return oe.utils.trim_version(v, 2) - -GNOME_COMPRESS_TYPE ?= "xz" -SECTION ?= "x11/gnome" -GNOMEBN ?= "${BPN}" -SRC_URI = "${GNOME_MIRROR}/${GNOMEBN}/${@gnome_verdir("${PV}")}/${GNOMEBN}-${PV}.tar.${GNOME_COMPRESS_TYPE};name=archive" - -FILES_${PN} += "${datadir}/application-registry \ - ${datadir}/mime-info \ - ${datadir}/mime/packages \ - ${datadir}/mime/application \ - ${datadir}/gnome-2.0 \ - ${datadir}/polkit* \ - ${datadir}/GConf \ - ${datadir}/glib-2.0/schemas \ - ${datadir}/appdata \ - ${datadir}/icons \ -" - -FILES_${PN}-doc += "${datadir}/devhelp" - -inherit autotools pkgconfig - -do_install_append() { - rm -rf ${D}${localstatedir}/lib/scrollkeeper/* - rm -rf ${D}${localstatedir}/scrollkeeper/* - rm -f ${D}${datadir}/applications/*.cache -} +inherit autotools pkgconfig gnomebase-nobuildsystem
Signature · 1 line
2.15.0
PATCH 3/7 json-glib: convert to meson build
In reply to Alexander KanavinNote that meson flags for gobject introspection and gtk-doc appear to be non-standardized; going forward we should devise a common way to deal with it.
gettext inherit is removed, as there is no equivalent functionality in meson; NLS bits are always built and installed.
--- ...ble-gobject-introspection-when-cross-comp.patch | 32 ++++++++++++++++++++++ meta/recipes-gnome/json-glib/json-glib_1.2.8.bb | 23 ++++++++++++++-- 2 files changed, 53 insertions(+), 2 deletions(-) create mode 100644 meta/recipes-gnome/json-glib/json-glib/0001-Do-not-disable-gobject-introspection-when-cross-comp.patch
meta/recipes-gnome/json-glib/json-glib/0001-Do-not-disable-gobject-introspection-when-cross-comp.patch new file +32 -0
@@ -0,0 +1,32 @@ +From 293452c963188666dae99521294f09a0cf9582e2 Mon Sep 17 00:00:00 2001 +From: Alexander Kanavin <[email protected]> +Date: Fri, 4 Aug 2017 16:01:11 +0300 +Subject: [PATCH] Do not disable gobject introspection when cross-compiling. + +Introspection does work fine for instance in Open Embedded, +one of the most prominent cross-compilation frameworks +(through qemu emulating target hardware), so let the user +decide if he wants the feature or not. + +Upstream-Status: Pending +Signed-off-by: Alexander Kanavin <[email protected]> +--- + meson.build | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/meson.build b/meson.build +index 43cbfd9..8a32f26 100644 +--- a/meson.build ++++ b/meson.build +@@ -147,7 +147,7 @@ root_dir = include_directories('.') + + gnome = import('gnome') + gir = find_program('g-ir-scanner', required: false) +-build_gir = gir.found() and not meson.is_cross_build() and not get_option('disable_introspection') ++build_gir = gir.found() and not get_option('disable_introspection') + + subdir('json-glib') + +-- +2.13.2 +
meta/recipes-gnome/json-glib/json-glib_1.2.8.bb +21 -2
@@ -10,11 +10,30 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=7fbc338309ac38fefcd64b04bb903e34" DEPENDS = "glib-2.0" +SRC_URI += " \ + file://0001-Do-not-disable-gobject-introspection-when-cross-comp.patch \ + " SRC_URI[archive.md5sum] = "ff31e7d0594df44318e12facda3d086e" SRC_URI[archive.sha256sum] = "fd55a9037d39e7a10f0db64309f5f0265fa32ec962bf85066087b83a2807f40a" -inherit gnomebase gettext lib_package gobject-introspection gtk-doc manpages +inherit gnomebase-meson lib_package gobject-introspection gtk-doc manpages -PACKAGECONFIG[manpages] = "--enable-man --with-xml-catalog=${STAGING_ETCDIR_NATIVE}/xml/catalog.xml, --disable-man, libxslt-native xmlto-native" +GTKDOC_ENABLE_FLAG = "-Denable-gtk-doc=true" +GTKDOC_DISABLE_FLAG = "-Denable-gtk-doc=false" + +GI_ENABLE_FLAG = "-Ddisable_introspection=false" +GI_DISABLE_FLAG = "-Ddisable_introspection=true" + +EXTRA_OEMESON_append_class-target = " ${@bb.utils.contains('GTKDOC_ENABLED', 'True', '${GTKDOC_ENABLE_FLAG}', \ + '${GTKDOC_DISABLE_FLAG}', d)} " +EXTRA_OEMESON_append_class-target = " ${@bb.utils.contains('GI_DATA_ENABLED', 'True', '${GI_ENABLE_FLAG}', \ + '${GI_DISABLE_FLAG}', d)} " + +PACKAGECONFIG[manpages] = "-Denable-man=true, -Denable-man=false, libxslt-native xmlto-native" + +do_install_append() { + # FIXME: these need to be provided via ptest + rm -rf ${D}${datadir}/installed-tests ${D}${libexecdir} +} BBCLASSEXTEND = "native nativesdk"
Signature · 1 line
2.15.0
PATCH 4/7 libepoxy: convert to meson build
In reply to Alexander KanavinAdd a patch to work around absence of dlvsym() on musl
(wasn't previously a problem as autotools weren't building tests by default)
--- ...sible-to-disable-the-use-of-dlvsym-needed.patch | 55 ++++++++++++++++++++++ meta/recipes-graphics/libepoxy/libepoxy_1.4.3.bb | 12 +++-- 2 files changed, 63 insertions(+), 4 deletions(-) create mode 100644 meta/recipes-graphics/libepoxy/libepoxy/0001-Make-it-possible-to-disable-the-use-of-dlvsym-needed.patch
meta/recipes-graphics/libepoxy/libepoxy/0001-Make-it-possible-to-disable-the-use-of-dlvsym-needed.patch new file +55 -0
@@ -0,0 +1,55 @@ +From 7bcefd311cd696955376fe2c5298ec85e8f954ce Mon Sep 17 00:00:00 2001 +From: Alexander Kanavin <[email protected]> +Date: Wed, 15 Nov 2017 12:48:27 +0200 +Subject: [PATCH] Make it possible to disable the use of dlvsym() (needed for + musl) + +Upstream-Status: Pending +Signed-off-by: Alexander Kanavin <[email protected]> + +--- + meson_options.txt | 3 +++ + test/meson.build | 6 +++--- + 2 files changed, 6 insertions(+), 3 deletions(-) + +diff --git a/meson_options.txt b/meson_options.txt +index 244476a..071f0b6 100644 +--- a/meson_options.txt ++++ b/meson_options.txt +@@ -1,6 +1,9 @@ + option('enable-docs', + type: 'boolean', value: false, + description: 'Enable generating the Epoxy API reference (depends on Doxygen)') ++option('has-dlvsym', ++ type: 'boolean', value: true, ++ description: 'Whether dlvsym() is available (it is not when using musl C library)') + option('enable-glx', + type: 'combo', + choices: [ 'auto', 'yes', 'no' ], +diff --git a/test/meson.build b/test/meson.build +index 2340fc6..bc4330b 100644 +--- a/test/meson.build ++++ b/test/meson.build +@@ -86,8 +86,8 @@ if build_glx + [ 'glx_has_extension_nocontext', [ 'glx_has_extension_nocontext.c' ], [], [], true ], + [ 'glx_static', [ 'glx_static.c' ], [ '-DNEEDS_TO_BE_STATIC'], [ '-static' ], libtype == 'static' ], + [ 'glx_shared_znow', [ 'glx_static.c', ], [], [ '-Wl,-z,now' ], has_znow ], +- [ 'glx_alias_prefer_same_name', [ 'glx_alias_prefer_same_name.c', 'dlwrap.c', 'dlwrap.h' ], [], [ '-rdynamic' ], not build_apple ], +- [ 'glx_gles2', [ 'glx_gles2.c', 'dlwrap.c', 'dlwrap.h' ], [], [ '-rdynamic' ], not build_apple ], ++ [ 'glx_alias_prefer_same_name', [ 'glx_alias_prefer_same_name.c', 'dlwrap.c', 'dlwrap.h' ], [], [ '-rdynamic' ], not build_apple and get_option('has-dlvsym') == true ], ++ [ 'glx_gles2', [ 'glx_gles2.c', 'dlwrap.c', 'dlwrap.h' ], [], [ '-rdynamic' ], not build_apple and get_option('has-dlvsym') == true ], + ] + + foreach test: glx_tests +@@ -108,7 +108,7 @@ if build_glx + endif + endforeach + +- if not build_apple ++ if not build_apple and get_option('has-dlvsym') == true + # GLX/EGL tests + if build_egl + glx_egl_sources = [ +-- +2.15.0 +
meta/recipes-graphics/libepoxy/libepoxy_1.4.3.bb +8 -4
@@ -5,17 +5,21 @@ SECTION = "libs" LICENSE = "MIT" LIC_FILES_CHKSUM = "file://COPYING;md5=58ef4c80d401e07bd9ee8b6b58cf464b" -SRC_URI = "https://github.com/anholt/${BPN}/releases/download/${PV}/${BP}.tar.xz" +SRC_URI = "https://github.com/anholt/${BPN}/releases/download/${PV}/${BP}.tar.xz \ + file://0001-Make-it-possible-to-disable-the-use-of-dlvsym-needed.patch \ + " SRC_URI[md5sum] = "af4c3ce0fb1143bdc4e43f85695a9bed" SRC_URI[sha256sum] = "0b808a06c9685a62fca34b680abb8bc7fb2fda074478e329b063c1f872b826f6" UPSTREAM_CHECK_URI = "https://github.com/anholt/libepoxy/releases" -inherit autotools pkgconfig distro_features_check +inherit meson pkgconfig distro_features_check REQUIRED_DISTRO_FEATURES = "opengl" DEPENDS = "util-macros" -PACKAGECONFIG[egl] = "--enable-egl, --disable-egl, virtual/egl" -PACKAGECONFIG[x11] = "--enable-glx, --disable-glx, virtual/libx11" +PACKAGECONFIG[egl] = "-Denable-egl=yes, -Denable-egl=no, virtual/egl" +PACKAGECONFIG[x11] = "-Denable-glx=yes, -Denable-glx=no, virtual/libx11" PACKAGECONFIG ??= "${@bb.utils.filter('DISTRO_FEATURES', 'x11', d)} egl" + +EXTRA_OEMESON_append_libc-musl = " -Dhas-dlvsym=false "
Signature · 1 line
2.15.0
PATCH 5/7 libinput: convert to meson build
In reply to Alexander KanavinDrop autotools-specific patch.
Drop libunwind option, as it is only used if tests are enabled (and they're unconditionally not enabled).
Add a backported upstream fix for invalid meson options.
--- .../0001-Fix-meson-options-default-values.patch | 50 ++++++++++++++++++++++ meta/recipes-graphics/wayland/libinput_1.8.3.bb | 13 +++--- 2 files changed, 57 insertions(+), 6 deletions(-) create mode 100644 meta/recipes-graphics/wayland/libinput/0001-Fix-meson-options-default-values.patch
meta/recipes-graphics/wayland/libinput/0001-Fix-meson-options-default-values.patch new file +50 -0
@@ -0,0 +1,50 @@ +From 10e022a2b18a089265d07b9d0887dba157e066b9 Mon Sep 17 00:00:00 2001 +From: Peter Hutterer <[email protected]> +Date: Tue, 10 Oct 2017 08:04:35 +1000 +Subject: [PATCH] Fix meson options default values + +The keyword is 'value', not 'default'. With meson 0.43 this now stops +building. + +https://bugs.freedesktop.org/show_bug.cgi?id=103162 + +Upstream-Status: Backport +Signed-off-by: Peter Hutterer <[email protected]> +Signed-off-by: Alexander Kanavin <[email protected]> +--- + meson_options.txt | 10 +++++----- + 1 file changed, 5 insertions(+), 5 deletions(-) + +diff --git a/meson_options.txt b/meson_options.txt +index 9861d2d..144f916 100644 +--- a/meson_options.txt ++++ b/meson_options.txt +@@ -1,20 +1,20 @@ + option('udev-dir', + type: 'string', +- default: '', ++ value: '', + description: 'udev base directory [default=$prefix/lib/udev]') + option('libwacom', + type: 'boolean', +- default: true, ++ value: true, + description: 'Use libwacom for tablet identification (default=true)') + option('debug-gui', + type: 'boolean', +- default: true, ++ value: true, + description: 'Enable the "debug-gui" feature in the libinput tool [default=true]') + option('tests', + type: 'boolean', +- default: true, ++ value: true, + description: 'Build the tests [default=true]') + option('documentation', + type: 'boolean', +- default: true, ++ value: true, + description: 'Build the documentation [default=true]') +-- +2.14.1 +
meta/recipes-graphics/wayland/libinput_1.8.3.bb +7 -6
@@ -7,21 +7,22 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=2184aef38ff137ed33ce9a63b9d1eb8f" DEPENDS = "libevdev udev mtdev" -SRC_URI = "http://www.freedesktop.org/software/${BPN}/${BP}.tar.xz" +SRC_URI = "http://www.freedesktop.org/software/${BPN}/${BP}.tar.xz \ + file://0001-Fix-meson-options-default-values.patch \ + " SRC_URI[md5sum] = "5265244853ad7cf41232b0d3ee805ab9" SRC_URI[sha256sum] = "2fe2e2f52f0971a9c43541b8f26582ca8df6ed4bb9050e85eb40d4ff6b13142d" -inherit autotools pkgconfig lib_package +inherit meson pkgconfig lib_package PACKAGECONFIG ??= "" -PACKAGECONFIG[libunwind] = "--with-libunwind,--without-libunwind,libunwind" -PACKAGECONFIG[libwacom] = "--enable-libwacom,--disable-libwacom,libwacom" -PACKAGECONFIG[gui] = "--enable-debug-gui,--disable-debug-gui,cairo gtk+3" +PACKAGECONFIG[libwacom] = "-Dlibwacom=true,-Dlibwacom=false,libwacom" +PACKAGECONFIG[gui] = "-Ddebug-gui=true,-Ddebug-gui=false,cairo gtk+3" UDEVDIR = "`pkg-config --variable=udevdir udev`" -EXTRA_OECONF += "--with-udev-dir=${UDEVDIR} --disable-documentation --disable-tests" +EXTRA_OEMESON += "-Dudev-dir=${UDEVDIR} -Ddocumentation=false -Dtests=false" # package name changed in 1.8.1 upgrade: make sure package upgrades work RPROVIDES_${PN} = "libinput"
Signature · 1 line
2.15.0
PATCH 6/7 sysprof: convert to meson build
In reply to Alexander KanavinDrop autotools-specific patches.
Rename polkit packageconfig option to sysprofd as 'polkit' does not at all match what is happening.
Remove --enable-compiler-warnings, as the equivalent in meson could not be found.
--- .../sysprof/files/0001-Avoid-building-docs.patch | 42 ---------------------- .../0001-Disable-check-for-polkit-for-UI.patch | 32 ----------------- ...d-anything-in-help-as-it-requires-itstool.patch | 26 ++++++++++++++ ...igure-Add-option-to-enable-disable-polkit.patch | 41 --------------------- meta/recipes-kernel/sysprof/sysprof_3.26.1.bb | 23 ++++++------ 5 files changed, 37 insertions(+), 127 deletions(-) delete mode 100644 meta/recipes-kernel/sysprof/files/0001-Avoid-building-docs.patch delete mode 100644 meta/recipes-kernel/sysprof/files/0001-Disable-check-for-polkit-for-UI.patch create mode 100644 meta/recipes-kernel/sysprof/files/0001-Do-not-build-anything-in-help-as-it-requires-itstool.patch delete mode 100644 meta/recipes-kernel/sysprof/files/0001-configure-Add-option-to-enable-disable-polkit.patch
meta/recipes-kernel/sysprof/files/0001-Avoid-building-docs.patch deleted +0 -42
@@ -1,42 +0,0 @@ -From 27df521c68e7c8b5b050dab15f40aa15fd03623a Mon Sep 17 00:00:00 2001 -From: Jussi Kukkonen <[email protected]> -Date: Wed, 4 May 2016 14:58:24 +0300 -Subject: [PATCH] Avoid building docs - -Upstream-Status: Inappropriate -Signed-off-by: Jussi Kukkonen <[email protected]> ---- - Makefile.am | 2 +- - m4/yelp.m4 | 6 ------ - 2 files changed, 1 insertion(+), 7 deletions(-) - -diff --git a/Makefile.am b/Makefile.am -index b919a3f..3a3851d 100644 ---- a/Makefile.am -+++ b/Makefile.am -@@ -1,4 +1,4 @@ --SUBDIRS = daemon data help lib po src tools tests -+SUBDIRS = daemon data lib po src tools tests - - EXTRA_DIST = AUTHORS tap-test COPYING.gpl-2 - -diff --git a/m4/yelp.m4 b/m4/yelp.m4 -index 5db847f..1b6ede4 100644 ---- a/m4/yelp.m4 -+++ b/m4/yelp.m4 -@@ -27,12 +27,6 @@ AC_ARG_WITH([help-dir], - HELP_DIR="$with_help_dir" - AC_SUBST(HELP_DIR) - --AC_ARG_VAR([ITSTOOL], [Path to the `itstool` command]) --AC_CHECK_PROG([ITSTOOL], [itstool], [itstool]) --if test x"$ITSTOOL" = x; then -- AC_MSG_ERROR([itstool not found]) --fi -- - AC_ARG_VAR([XMLLINT], [Path to the `xmllint` command]) - AC_CHECK_PROG([XMLLINT], [xmllint], [xmllint]) - if test x"$XMLLINT" = x; then --- -2.1.4 -
meta/recipes-kernel/sysprof/files/0001-Disable-check-for-polkit-for-UI.patch deleted +0 -32
@@ -1,32 +0,0 @@ -From 765d578145e31ddc9495adfab8037ade33c6a9cc Mon Sep 17 00:00:00 2001 -From: Jussi Kukkonen <[email protected]> -Date: Wed, 4 May 2016 10:59:36 +0300 -Subject: [PATCH] Disable check for polkit for UI - -The check is not technically required: sysprof just needs -to be able to access system perf counters at runtime. - -Upstream-Status: Pending -Signed-off-by: Jussi Kukkonen <[email protected]> ---- - configure.ac | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/configure.ac b/configure.ac -index 8559597..ecf93ad 100644 ---- a/configure.ac -+++ b/configure.ac -@@ -131,8 +131,8 @@ AS_IF([test "$enable_gtk" = auto],[ - AS_IF([test "$have_gtk" = "yes" && test "$have_polkit" = "yes"],[enable_gtk=yes],[enable_gtk=no]) - ]) - AS_IF([test "$enable_gtk" = "yes"],[ -- AS_IF([test "$have_gtk" = "yes" && test "$have_polkit" = "yes"],[],[ -- AC_MSG_ERROR([--enable-gtk requires gtk+-3.0 >= gtk_required_version and polkit-gobject-1]) -+ AS_IF([test "$have_gtk" = "yes"],[],[ -+ AC_MSG_ERROR([--enable-gtk requires gtk+-3.0 >= gtk_required_version]) - ]) - ]) - AM_CONDITIONAL(ENABLE_GTK, test "$enable_gtk" = "yes") --- -2.8.1 -
meta/recipes-kernel/sysprof/files/0001-Do-not-build-anything-in-help-as-it-requires-itstool.patch new file +26 -0
@@ -0,0 +1,26 @@ +From c2495a4c042e6a675da69bab20cc3669391e8e2a Mon Sep 17 00:00:00 2001 +From: Alexander Kanavin <[email protected]> +Date: Wed, 23 Aug 2017 18:38:26 +0300 +Subject: [PATCH 1/2] Do not build anything in help/ as it requires itstool. + +Upstream-Status: Inappropriate [oe-core specific] +Signed-off-by: Alexander Kanavin <[email protected]> +--- + meson.build | 1 - + 1 file changed, 1 deletion(-) + +diff --git a/meson.build b/meson.build +index 4ac3934..8c4369a 100644 +--- a/meson.build ++++ b/meson.build +@@ -116,7 +116,6 @@ subdir('tools') + subdir('tests') + + subdir('data') +-subdir('help') + subdir('po') + + meson.add_install_script('build-aux/meson_post_install.sh') +-- +2.14.1 +
meta/recipes-kernel/sysprof/files/0001-configure-Add-option-to-enable-disable-polkit.patch deleted +0 -41
41 lines not on this page · raw message
meta/recipes-kernel/sysprof/sysprof_3.26.1.bb +11 -12
@@ -4,7 +4,7 @@ LICENSE = "GPLv3+" LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504 \ file://src/sp-application.c;endline=17;md5=40e55577ef122c88fe20052acda64875" -inherit gnomebase gettext systemd upstream-version-is-even +inherit gnomebase-meson gettext systemd upstream-version-is-even DEPENDS = "glib-2.0 libxml2-native glib-2.0-native"
@@ -12,23 +12,22 @@ SRC_URI[archive.md5sum] = "6f9f947960ba79bb1269d8ee49b7db78" SRC_URI[archive.sha256sum] = "d8b9d5c2246696e4a3776a312731dc7c014fbd33478bb14d5512c6f1f35a3b11" SRC_URI += " \ file://define-NT_GNU_BUILD_ID.patch \ - file://0001-configure-Add-option-to-enable-disable-polkit.patch \ - file://0001-Disable-check-for-polkit-for-UI.patch \ - file://0001-Avoid-building-docs.patch \ - " - -AUTOTOOLS_AUXDIR = "${S}/build-aux" - -EXTRA_OECONF = "--enable-compile-warnings" + file://0001-Do-not-build-anything-in-help-as-it-requires-itstool.patch \ + " PACKAGECONFIG ?= "${@bb.utils.contains_any('DISTRO_FEATURES', '${GTK3DISTROFEATURES}', 'gtk', '', d)}" -PACKAGECONFIG[gtk] = "--enable-gtk,--disable-gtk,gtk+3" -PACKAGECONFIG[polkit] = "--enable-polkit,--disable-polkit,polkit dbus" +PACKAGECONFIG[gtk] = "-Denable-gtk=true,-Denable-gtk=false,gtk+3" +PACKAGECONFIG[sysprofd] = "-Dwith_sysprofd=bundled,-Dwith_sysprofd=none,polkit" SOLIBS = ".so" FILES_SOLIBSDEV = "" -SYSTEMD_SERVICE_${PN} = "${@bb.utils.contains('PACKAGECONFIG', 'polkit', 'sysprof2.service', '', d)}" +SYSTEMD_SERVICE_${PN} = "${@bb.utils.contains('PACKAGECONFIG', 'sysprofd', 'sysprof2.service', '', d)}" # We do not yet work for aarch64. COMPATIBLE_HOST = "^(?!aarch64).*" + +FILES_${PN} += " \ + ${datadir}/dbus-1/system-services \ + ${datadir}/dbus-1/system.d \ + "
Signature · 1 line
2.15.0
PATCH 7/7 gst-player: Upgrade, rename to gst-examples
In reply to Alexander KanavinFrom: Jussi Kukkonen <[email protected]>
Switch to using current repository, switch to meson (following upstream), rename the recipe like upstream.
Add a patch to install the player binaries.
---
.../packagegroup-core-tools-testapps.bb | 2 +-
.../0001-Make-player-examples-installable.patch | 39 ++++++++++++++++++++++
.../gst-player.desktop | 0
.../{gst-player_git.bb => gst-examples_git.bb} | 18 +++++-----
.../packagegroups/packagegroup-core-x11-sato.bb | 2 +-
5 files changed, 49 insertions(+), 12 deletions(-)
create mode 100644 meta/recipes-multimedia/gstreamer/gst-examples/0001-Make-player-examples-installable.patch
rename meta/recipes-multimedia/gstreamer/{gst-player => gst-examples}/gst-player.desktop (100%)
rename meta/recipes-multimedia/gstreamer/{gst-player_git.bb => gst-examples_git.bb} (65%)meta/recipes-core/packagegroups/packagegroup-core-tools-testapps.bb +1 -1
@@ -25,7 +25,7 @@ X11GLTOOLS = "\ X11TOOLS = "\ fstests \ - gst-player \ + gst-examples \ x11perf \ xrestop \ xwininfo \
meta/recipes-multimedia/gstreamer/gst-examples/0001-Make-player-examples-installable.patch new file +39 -0
@@ -0,0 +1,39 @@ +From 755f6dab07565aca7b6aefacad8be65de364ff75 Mon Sep 17 00:00:00 2001 +From: Jussi Kukkonen <[email protected]> +Date: Thu, 17 Aug 2017 11:07:02 +0300 +Subject: [PATCH] Make player examples installable + +Signed-off-by: Jussi Kukkonen <[email protected]> +Upstream-Status: Denied [Upstream considers these code examples, for now a least] + +https://bugzilla.gnome.org/show_bug.cgi?id=777827 +--- + playback/player/gst-play/meson.build | 1 + + playback/player/gtk/meson.build | 1 + + 2 files changed, 2 insertions(+) + +diff --git a/playback/player/gst-play/meson.build b/playback/player/gst-play/meson.build +index 719b55b..a56fe13 100644 +--- a/playback/player/gst-play/meson.build ++++ b/playback/player/gst-play/meson.build +@@ -8,5 +8,6 @@ executable('gst-play', + ['gst-play.c', + 'gst-play-kb.c', + 'gst-play-kb.h'], ++ install: true, + dependencies : [gst_dep, gstplayer_dep, m_dep]) + +diff --git a/playback/player/gtk/meson.build b/playback/player/gtk/meson.build +index 08aae4f..671a65d 100644 +--- a/playback/player/gtk/meson.build ++++ b/playback/player/gtk/meson.build +@@ -18,5 +18,6 @@ executable('gtk-play', + gtk_play_resources, + 'gtk-video-renderer.h', + 'gtk-video-renderer.c'], ++ install: true, + dependencies : [glib_dep, gobject_dep, gmodule_dep, gst_dep, gsttag_dep, gstplayer_dep, gtk_dep, x11_dep]) + +-- +2.13.3 +
meta/recipes-multimedia/gstreamer/gst-examples/gst-player.desktop renamed from meta/recipes-multimedia/gstreamer/gst-player/gst-player.desktop +0 -0
meta/recipes-multimedia/gstreamer/gst-examples_git.bb renamed from meta/recipes-multimedia/gstreamer/gst-player_git.bb +8 -10
@@ -1,25 +1,23 @@ -SUMMARY = "GStreamer playback helper library and examples" +SUMMARY = "GStreamer examples (including gtk-play, gst-play)" LICENSE = "LGPL-2.0+" -LIC_FILES_CHKSUM = "file://gtk/gtk-play.c;beginline=1;endline=20;md5=f8c72dae3d36823ec716a9ebcae593b9" +LIC_FILES_CHKSUM = "file://playback/player/gtk/gtk-play.c;beginline=1;endline=20;md5=f8c72dae3d36823ec716a9ebcae593b9" DEPENDS = "glib-2.0 gstreamer1.0 gstreamer1.0-plugins-base gstreamer1.0-plugins-bad gtk+3 glib-2.0-native" -SRC_URI = "git://github.com/sdroege/gst-player.git \ +SRC_URI = "git://anongit.freedesktop.org/gstreamer/gst-examples \ + file://0001-Make-player-examples-installable.patch \ file://gst-player.desktop" -SRCREV = "ee3c226c82767a089743e4e06058743e67f73cdb" +SRCREV = "e88c04ff34cf56984e62a524a0bcc16ab51b282d" PV = "0.0.1+git${SRCPV}" UPSTREAM_VERSION_UNKNOWN = "1" S = "${WORKDIR}/git" -inherit autotools pkgconfig distro_features_check +inherit meson pkgconfig distro_features_check -ANY_OF_DISTRO_FEATURES = "${GTK3DISTROFEATURES}" -do_configure_prepend() { - touch ${S}/ChangeLog -} +ANY_OF_DISTRO_FEATURES = "${GTK3DISTROFEATURES}" do_install_append() { install -m 0644 -D ${WORKDIR}/gst-player.desktop ${D}${datadir}/applications/gst-player.desktop
@@ -31,4 +29,4 @@ RRECOMMENDS_${PN} = "gstreamer1.0-plugins-base-meta \ gstreamer1.0-plugins-bad-meta \ ${@bb.utils.contains("LICENSE_FLAGS_WHITELIST", "commercial", "gstreamer1.0-libav", "", d)} \ ${@bb.utils.contains("LICENSE_FLAGS_WHITELIST", "commercial", "gstreamer1.0-plugins-ugly-meta", "", d)}" -RPROVIDES_${PN} += "${PN}-bin" +RPROVIDES_${PN} += "gst-player gst-player-bin"
meta/recipes-sato/packagegroups/packagegroup-core-x11-sato.bb +1 -1
@@ -46,7 +46,7 @@ WEB ?= "" SUMMARY_${PN}-apps = "Sato desktop - applications" RDEPENDS_${PN}-apps = "\ l3afpad \ - gst-player \ + gst-examples \ matchbox-terminal \ sato-screenshot \ ${FILEMANAGER} \
Signature · 1 line
2.15.0