Date
1 - 2 of 2
[PATCHv6] gcr: add recipe for gcr-4, needed to build with gtk4
Alexander Kanavin
Please split this into two, first add gtk4, then then gcr changes.
Alex
toggle quoted message
Show quoted text
Alex
On Tue, 29 Nov 2022 at 07:43, Markus Volk <f_l_k@...> wrote:
- gcr-3 recipe is still needed for gnome projects that stick to gtk+3, rename to gcr3.
- Move gtk4 recipe from meta-gnome
Signed-off-by: Markus Volk <f_l_k@...>
---
...-add-options-to-set-ssh-binary-paths.patch | 60 ++++++++
...ectly-handle-disabled-ssh_agent-opti.patch | 49 ++++++
...build-fix-one-parallel-build-failure.patch | 0
...1d02bb0148ca787ac4aead164d7c8ce2c4d8.patch | 0
.../gcr/{gcr_3.40.0.bb => gcr3_3.40.0.bb} | 8 +-
meta/recipes-gnome/gcr/gcr_4.0.0.bb | 51 +++++++
meta/recipes-gnome/gtk+/gtk4_4.6.7.bb | 142 ++++++++++++++++++
7 files changed, 308 insertions(+), 2 deletions(-)
create mode 100644 meta/recipes-gnome/gcr/gcr/0001-meson-add-options-to-set-ssh-binary-paths.patch
create mode 100644 meta/recipes-gnome/gcr/gcr/0001-meson.build-correctly-handle-disabled-ssh_agent-opti.patch
rename meta/recipes-gnome/gcr/{gcr => gcr3}/0001-gcr-meson.build-fix-one-parallel-build-failure.patch (100%)
rename meta/recipes-gnome/gcr/{gcr => gcr3}/b3ca1d02bb0148ca787ac4aead164d7c8ce2c4d8.patch (100%)
rename meta/recipes-gnome/gcr/{gcr_3.40.0.bb => gcr3_3.40.0.bb} (87%)
create mode 100644 meta/recipes-gnome/gcr/gcr_4.0.0.bb
create mode 100644 meta/recipes-gnome/gtk+/gtk4_4.6.7.bb
diff --git a/meta/recipes-gnome/gcr/gcr/0001-meson-add-options-to-set-ssh-binary-paths.patch b/meta/recipes-gnome/gcr/gcr/0001-meson-add-options-to-set-ssh-binary-paths.patch
new file mode 100644
index 0000000000..cd3552464a
--- /dev/null
+++ b/meta/recipes-gnome/gcr/gcr/0001-meson-add-options-to-set-ssh-binary-paths.patch
@@ -0,0 +1,60 @@
+From 89992bde916fe53dd737a5d678bc66dd51cd1f45 Mon Sep 17 00:00:00 2001
+From: Markus Volk <f_l_k@...>
+Date: Mon, 28 Nov 2022 15:47:50 +0100
+Subject: [PATCH] meson: add options to set ssh binary paths
+
+Signed-off-by: Markus Volk <f_l_k@...>
+
+Upstream-Status: Submitted [ https://gitlab.gnome.org/GNOME/gcr/-/merge_requests/115/diffs?commit_id=f19dfa4fe0986f3f75b29f9c05cead59fe87cd19 ]
+---
+ meson.build | 11 +++++++++--
+ meson_options.txt | 10 ++++++++++
+ 2 files changed, 19 insertions(+), 2 deletions(-)
+
+diff --git a/meson.build b/meson.build
+index 11d7fa7..231d7e2 100644
+--- a/meson.build
++++ b/meson.build
+@@ -58,9 +58,16 @@ if p11_system_config_modules == ''
+ error('Couldn\'t find location for pkcs11 module config')
+ endif
+ libsecret_dep = dependency('libsecret-1', version: '>= 0.20', required: get_option('ssh_agent'))
++
+ if get_option('ssh_agent')
+- ssh_add_path = find_program('ssh-add').full_path()
+- ssh_agent_path = find_program('ssh-agent').full_path()
++ ssh_add_path = get_option('ssh_add_path')
++ ssh_agent_path = get_option('ssh_agent_path')
++ if ssh_add_path == ''
++ ssh_add_path = find_program('ssh-add').full_path()
++ endif
++ if ssh_agent_path == ''
++ ssh_agent_path = find_program('ssh-agent').full_path()
++ endif
+ endif
+
+ with_systemd = false
+diff --git a/meson_options.txt b/meson_options.txt
+index 6840e44..5355940 100644
+--- a/meson_options.txt
++++ b/meson_options.txt
+@@ -23,6 +23,16 @@ option('gpg_path',
+ value: '',
+ description: 'Path to gpg, autodetected if not set',
+ )
++option('ssh_add_path',
++ type: 'string',
++ value: '',
++ description: 'Path to ssh-add, autodetected if not set',
++)
++option('ssh_agent_path',
++ type: 'string',
++ value: '',
++ description: 'Path to ssh-agent, autodetected if not set',
++)
+ option('ssh_agent',
+ type: 'boolean',
+ value: true,
+--
+2.34.1
+
diff --git a/meta/recipes-gnome/gcr/gcr/0001-meson.build-correctly-handle-disabled-ssh_agent-opti.patch b/meta/recipes-gnome/gcr/gcr/0001-meson.build-correctly-handle-disabled-ssh_agent-opti.patch
new file mode 100644
index 0000000000..940f78ebab
--- /dev/null
+++ b/meta/recipes-gnome/gcr/gcr/0001-meson.build-correctly-handle-disabled-ssh_agent-opti.patch
@@ -0,0 +1,49 @@
+From 9b67bb18d8409e0e693cc6000507acbd73a30eab Mon Sep 17 00:00:00 2001
+From: Alexander Kanavin <alex@...>
+Date: Wed, 16 Nov 2022 11:27:24 +0100
+Subject: [PATCH 1/2] meson.build: correctly handle disabled ssh_agent option
+
+Existing code produces these errors:
+| gcr/meson.build:61:0: ERROR: Unable to get the path of a not-found external program
+| gcr/meson.build:101:5: ERROR: Unknown variable "ssh_add_path".
+
+Signed-off-by: Alexander Kanavin <alex@...>
+
+Upstream-Status: Backport [ https://gitlab.gnome.org/GNOME/gcr/-/commit/9b67bb18d8409e0e693cc6000507acbd73a30eab ]
+---
+ meson.build | 12 ++++++++----
+ 1 file changed, 8 insertions(+), 4 deletions(-)
+
+diff --git a/meson.build b/meson.build
+index 3f35173..11d7fa7 100644
+--- a/meson.build
++++ b/meson.build
+@@ -58,8 +58,10 @@ if p11_system_config_modules == ''
+ error('Couldn\'t find location for pkcs11 module config')
+ endif
+ libsecret_dep = dependency('libsecret-1', version: '>= 0.20', required: get_option('ssh_agent'))
+-ssh_add_path = find_program('ssh-add', required: get_option('ssh_agent')).full_path()
+-ssh_agent_path = find_program('ssh-agent', required: get_option('ssh_agent')).full_path()
++if get_option('ssh_agent')
++ ssh_add_path = find_program('ssh-add').full_path()
++ ssh_agent_path = find_program('ssh-agent').full_path()
++endif
+
+ with_systemd = false
+ libsystemd_deps = []
+@@ -96,8 +98,10 @@ conf.set('HAVE_TIMEGM', cc.has_function('timegm'))
+ conf.set('HAVE_MLOCK', cc.has_function('mlock'))
+ conf.set_quoted('GPG_EXECUTABLE', gpg_path)
+ conf.set_quoted('LIBGCRYPT_VERSION', libgcrypt_dep.version())
+-conf.set_quoted('SSH_ADD_EXECUTABLE', ssh_add_path)
+-conf.set_quoted('SSH_AGENT_EXECUTABLE', ssh_agent_path)
++if get_option('ssh_agent')
++ conf.set_quoted('SSH_ADD_EXECUTABLE', ssh_add_path)
++ conf.set_quoted('SSH_AGENT_EXECUTABLE', ssh_agent_path)
++endif
+ conf.set10('WITH_SYSTEMD', with_systemd)
+ config_file = configure_file(
+ output: 'config.h',
+--
+2.34.1
+
diff --git a/meta/recipes-gnome/gcr/gcr/0001-gcr-meson.build-fix-one-parallel-build-failure.patch b/meta/recipes-gnome/gcr/gcr3/0001-gcr-meson.build-fix-one-parallel-build-failure.patch
similarity index 100%
rename from meta/recipes-gnome/gcr/gcr/0001-gcr-meson.build-fix-one-parallel-build-failure.patch
rename to meta/recipes-gnome/gcr/gcr3/0001-gcr-meson.build-fix-one-parallel-build-failure.patch
diff --git a/meta/recipes-gnome/gcr/gcr/b3ca1d02bb0148ca787ac4aead164d7c8ce2c4d8.patch b/meta/recipes-gnome/gcr/gcr3/b3ca1d02bb0148ca787ac4aead164d7c8ce2c4d8.patch
similarity index 100%
rename from meta/recipes-gnome/gcr/gcr/b3ca1d02bb0148ca787ac4aead164d7c8ce2c4d8.patch
rename to meta/recipes-gnome/gcr/gcr3/b3ca1d02bb0148ca787ac4aead164d7c8ce2c4d8.patch
diff --git a/meta/recipes-gnome/gcr/gcr_3.40.0.bb b/meta/recipes-gnome/gcr/gcr3_3.40.0.bb
similarity index 87%
rename from meta/recipes-gnome/gcr/gcr_3.40.0.bb
rename to meta/recipes-gnome/gcr/gcr3_3.40.0.bb
index 917be5938b..5318768db6 100644
--- a/meta/recipes-gnome/gcr/gcr_3.40.0.bb
+++ b/meta/recipes-gnome/gcr/gcr3_3.40.0.bb
@@ -20,11 +20,15 @@ GTKDOC_MESON_OPTION = "gtk_doc"
inherit gnomebase gtk-icon-cache gtk-doc features_check upstream-version-is-even vala gobject-introspection gettext mime mime-xdg
UPSTREAM_CHECK_REGEX = "[^\d\.](?P<pver>\d+\.(?!9\d+)(\d*[02468])+(\.\d+)+)\.tar"
-SRC_URI += "file://0001-gcr-meson.build-fix-one-parallel-build-failure.patch \
- file://b3ca1d02bb0148ca787ac4aead164d7c8ce2c4d8.patch"
+SRC_URI = " \
+ https://download.gnome.org/sources/gcr/3.40/gcr-${PV}.tar.xz;name=archive \
+ file://0001-gcr-meson.build-fix-one-parallel-build-failure.patch \
+ file://b3ca1d02bb0148ca787ac4aead164d7c8ce2c4d8.patch"
SRC_URI[archive.sha256sum] = "b9d3645a5fd953a54285cc64d4fc046736463dbd4dcc25caf5c7b59bed3027f5"
+S = "${WORKDIR}/gcr-${PV}"
+
PACKAGECONFIG ??= " \
${@bb.utils.contains('DISTRO_FEATURES', 'x11', 'gtk', '', d)} \
${@bb.utils.contains('DISTRO_FEATURES', 'wayland', 'gtk', '', d)} \
diff --git a/meta/recipes-gnome/gcr/gcr_4.0.0.bb b/meta/recipes-gnome/gcr/gcr_4.0.0.bb
new file mode 100644
index 0000000000..ff2f7978a9
--- /dev/null
+++ b/meta/recipes-gnome/gcr/gcr_4.0.0.bb
@@ -0,0 +1,51 @@
+SUMMARY = "A library for bits of crypto UI and parsing etc"
+DESCRIPTION = "GCR is a library for displaying certificates, and crypto UI, \
+accessing key stores. It also provides the viewer for crypto files on the \
+GNOME desktop."
+HOMEPAGE = "https://gitlab.gnome.org/GNOME/gcr"
+BUGTRACKER = "https://gitlab.gnome.org/GNOME/gcr/issues"
+
+LICENSE = "GPL-2.0-only"
+LIC_FILES_CHKSUM = "file://COPYING;md5=55ca817ccb7d5b5b66355690e9abc605"
+
+DEPENDS = "p11-kit glib-2.0 libgcrypt gnupg-native \
+ ${@bb.utils.contains('GI_DATA_ENABLED', 'True', 'libxslt-native', '', d)}"
+
+CACHED_CONFIGUREVARS += "ac_cv_path_GPG='gpg2'"
+
+CFLAGS += "-D_GNU_SOURCE"
+
+GNOMEBASEBUILDCLASS = "meson"
+GTKDOC_MESON_OPTION = "gtk_doc"
+inherit gnomebase gtk-icon-cache gtk-doc features_check upstream-version-is-even vala gobject-introspection gettext mime mime-xdg
+UPSTREAM_CHECK_REGEX = "[^\d\.](?P<pver>\d+\.(?!9\d+)(\d*[02468])+(\.\d+)+)\.tar"
+
+SRC_URI += " \
+ file://0001-meson.build-correctly-handle-disabled-ssh_agent-opti.patch \
+ file://0001-meson-add-options-to-set-ssh-binary-paths.patch \
+"
+SRC_URI[archive.sha256sum] = "c45855924f0ee7bab43e2dd38bfafd2ac815c6e9864341c0161e171173dcec7c"
+
+PACKAGECONFIG ??= " \
+ ${@bb.utils.filter('DISTRO_FEATURES', 'systemd', d)} \
+ ${@bb.utils.contains('DISTRO_FEATURES', 'x11', 'gtk', '', d)} \
+ ${@bb.utils.contains('DISTRO_FEATURES', 'wayland', 'gtk', '', d)} \
+"
+PACKAGECONFIG[gtk] = "-Dgtk4=true,-Dgtk4=false,gtk4"
+PACKAGECONFIG[ssh_agent] = "-Dssh_agent=true -Dssh_add_path=${bindir}/ssh-add -Dssh_agent_path=${bindir}/ssh-agent,-Dssh_agent=false,libsecret,openssh"
+#'Use systemd socket activation for server programs'
+PACKAGECONFIG[systemd] = "-Dsystemd=enabled,-Dsystemd=disabled,systemd"
+
+FILES:${PN} += " \
+ ${datadir}/dbus-1 \
+ ${datadir}/gcr-4 \
+ ${systemd_user_unitdir}/gcr-ssh-agent.socket \
+ ${systemd_user_unitdir}/gcr-ssh-agent.service \
+"
+
+# http://errors.yoctoproject.org/Errors/Details/20229/
+ARM_INSTRUCTION_SET:armv4 = "arm"
+ARM_INSTRUCTION_SET:armv5 = "arm"
+ARM_INSTRUCTION_SET:armv6 = "arm"
+
+EXTRA_OEMESON += "-Dgpg_path=${bindir}/gpg2"
diff --git a/meta/recipes-gnome/gtk+/gtk4_4.6.7.bb b/meta/recipes-gnome/gtk+/gtk4_4.6.7.bb
new file mode 100644
index 0000000000..c71be23a7d
--- /dev/null
+++ b/meta/recipes-gnome/gtk+/gtk4_4.6.7.bb
@@ -0,0 +1,142 @@
+SUMMARY = "Multi-platform toolkit for creating GUIs"
+DESCRIPTION = "GTK is a multi-platform toolkit for creating graphical user interfaces. Offering a complete \
+set of widgets, GTK is suitable for projects ranging from small one-off projects to complete application suites."
+HOMEPAGE = "http://www.gtk.org"
+BUGTRACKER = "https://bugzilla.gnome.org/"
+SECTION = "libs"
+
+DEPENDS = " \
+ sassc-native \
+ glib-2.0 \
+ libepoxy \
+ graphene \
+ cairo \
+ pango \
+ atk \
+ jpeg \
+ libpng \
+ librsvg \
+ tiff \
+ gdk-pixbuf-native gdk-pixbuf \
+"
+
+LICENSE = "LGPL-2.0-only & LGPL-2.0-or-later & LGPL-2.1-or-later"
+LIC_FILES_CHKSUM = " \
+ file://COPYING;md5=5f30f0716dfdd0d91eb439ebec522ec2 \
+ file://gtk/gtk.h;endline=25;md5=1d8dc0fccdbfa26287a271dce88af737 \
+ file://gdk/gdk.h;endline=25;md5=c920ce39dc88c6f06d3e7c50e08086f2 \
+ file://tests/testgtk.c;endline=25;md5=49d06770681b8322466b52ed19d29fb2 \
+"
+
+MAJ_VER = "${@oe.utils.trim_version("${PV}", 2)}"
+
+UPSTREAM_CHECK_REGEX = "gtk-(?P<pver>\d+\.(\d*[02468])+(\.\d+)+)\.tar.xz"
+
+SRC_URI = "http://ftp.gnome.org/pub/gnome/sources/gtk/${MAJ_VER}/gtk-${PV}.tar.xz"
+SRC_URI[sha256sum] = "effd2e7c4b5e2a5c7fad43e0f24adea68baa4092abb0b752caff278e6bb010e8"
+
+S = "${WORKDIR}/gtk-${PV}"
+
+inherit meson gettext pkgconfig gtk-doc update-alternatives gsettings features_check gobject-introspection
+
+# TBD: nativesdk
+# gobject-introspection.bbclass pins introspection off for nativesk. As long as
+# we do not remove this wisdom or hack gtk4, it is not possible to build
+# nativesdk-gtk4
+BBCLASSEXTEND = "native"
+
+GSETTINGS_PACKAGE:class-native = ""
+
+ANY_OF_DISTRO_FEATURES = "${GTK3DISTROFEATURES}"
+REQUIRED_DISTRO_FEATURES = "opengl"
+
+GIR_MESON_ENABLE_FLAG = 'enabled'
+GIR_MESON_DISABLE_FLAG = 'disabled'
+GTKDOC_MESON_OPTION = 'gtk_doc'
+
+EXTRA_OEMESON = " -Dbuild-tests=false"
+
+PACKAGECONFIG ??= "${@bb.utils.filter('DISTRO_FEATURES', 'wayland x11', d)}"
+PACKAGECONFIG:class-native = "${@bb.utils.filter('DISTRO_FEATURES', 'x11', d)}"
+PACKAGECONFIG:class-nativesdk = "${@bb.utils.filter('DISTRO_FEATURES', 'x11', d)}"
+
+PACKAGECONFIG[x11] = "-Dx11-backend=true,-Dx11-backend=false,at-spi2-atk fontconfig libx11 libxext libxcursor libxi libxdamage libxrandr libxrender libxcomposite libxfixes xinerama"
+PACKAGECONFIG[wayland] = "-Dwayland-backend=true,-Dwayland-backend=false,wayland wayland-protocols libxkbcommon virtual/egl virtual/libgles2 wayland-native"
+PACKAGECONFIG[cups] = "-Dprint-cups=enabled,-Dprint-cups=disabled,cups"
+PACKAGECONFIG[colord] = "-Dcolord=enabled,-Dcolord=disabled,colord"
+# gtk4 wants gstreamer-player-1.0 -> gstreamer1.0-plugins-bad
+PACKAGECONFIG[gstreamer] = "-Dmedia-gstreamer=enabled,-Dmedia-gstreamer=disabled,gstreamer1.0-plugins-bad"
+PACKAGECONFIG[tracker] = "-Dtracker=enabled,-Dtracker=disabled,tracker"
+
+
+do_compile:prepend() {
+ export GIR_EXTRA_LIBS_PATH="${B}/gdk/.libs"
+}
+
+
+PACKAGES =+ "${PN}-demo"
+LIBV = "4.0.0"
+
+FILES:${PN}-demo = " \
+ ${datadir}/applications/org.gtk.Demo4.desktop \
+ ${datadir}/applications/org.gtk.IconBrowser4.desktop \
+ ${datadir}/applications/org.gtk.WidgetFactory4.desktop \
+ ${datadir}/icons/hicolor/*/apps/org.gtk.Demo4*.* \
+ ${datadir}/icons/hicolor/*/apps/org.gtk.IconBrowser4*.* \
+ ${datadir}/icons/hicolor/*/apps/org.gtk.WidgetFactory4*.* \
+ ${bindir}/gtk4-demo \
+ ${bindir}/gtk4-demo-application \
+ ${bindir}/gtk4-icon-browser \
+ ${bindir}/gtk4-widget-factory \
+"
+
+FILES:${PN}:append = " \
+ ${datadir}/glib-2.0/schemas/ \
+ ${datadir}/gtk-4.0/emoji/ \
+ ${datadir}/metainfo/ \
+ ${datadir}/icons/hicolor/*/apps/org.gtk.PrintEditor4*.* \
+ ${libdir}/gtk-4.0/${LIBV}/printbackends \
+ ${bindir}/gtk4-update-icon-cache \
+ ${bindir}/gtk4-launch \
+"
+
+FILES:${PN}-dev += " \
+ ${datadir}/gtk-4.0/gtk4builder.rng \
+ ${datadir}/gtk-4.0/include \
+ ${datadir}/gtk-4.0/valgrind \
+ ${datadir}/gettext/its \
+ ${bindir}/gtk4-builder-tool \
+ ${bindir}/gtk4-encode-symbolic-svg \
+ ${bindir}/gtk4-query-settings \
+"
+
+GTKBASE_RRECOMMENDS ?= " \
+ liberation-fonts \
+ gdk-pixbuf-loader-png \
+ gdk-pixbuf-loader-jpeg \
+ gdk-pixbuf-loader-gif \
+ gdk-pixbuf-loader-xpm \
+ shared-mime-info \
+ adwaita-icon-theme-symbolic \
+"
+
+GTKBASE_RRECOMMENDS:class-native ?= ""
+
+GTKGLIBC_RRECOMMENDS ?= "${GTKBASE_RRECOMMENDS} glibc-gconv-iso8859-1"
+
+RRECOMMENDS:${PN} = "${GTKBASE_RRECOMMENDS}"
+RRECOMMENDS:${PN}:libc-glibc = "${GTKGLIBC_RRECOMMENDS}"
+RDEPENDS:${PN}-dev += "${@bb.utils.contains("PACKAGECONFIG", "wayland", "wayland-protocols", "", d)}"
+
+PACKAGES_DYNAMIC += "^gtk4-printbackend-.*"
+python populate_packages:prepend () {
+ import os.path
+
+ gtk_libdir = d.expand('${libdir}/gtk-3.0/${LIBV}')
+ printmodules_root = os.path.join(gtk_libdir, 'printbackends');
+
+ do_split_packages(d, printmodules_root, r'^libprintbackend-(.*)\.so$', 'gtk4-printbackend-%s', 'GTK printbackend module for %s')
+
+ if (d.getVar('DEBIAN_NAMES')):
+ d.setVar(d.expand('PKG:${PN}'), '${MLPREFIX}libgtk-4.0')
+}
--
2.34.1
Markus Volk
- gcr-3 recipe is still needed for gnome projects that stick to gtk+3, re=
name to gcr3.
- Move gtk4 recipe from meta-gnome
Signed-off-by: Markus Volk <f_l_k@...>
---
...-add-options-to-set-ssh-binary-paths.patch | 60 ++++++++
...ectly-handle-disabled-ssh_agent-opti.patch | 49 ++++++
...build-fix-one-parallel-build-failure.patch | 0
...1d02bb0148ca787ac4aead164d7c8ce2c4d8.patch | 0
.../gcr/{gcr_3.40.0.bb =3D> gcr3_3.40.0.bb} | 8 +-
meta/recipes-gnome/gcr/gcr_4.0.0.bb | 51 +++++++
meta/recipes-gnome/gtk+/gtk4_4.6.7.bb | 142 ++++++++++++++++++
7 files changed, 308 insertions(+), 2 deletions(-)
create mode 100644 meta/recipes-gnome/gcr/gcr/0001-meson-add-options-to-=
set-ssh-binary-paths.patch
create mode 100644 meta/recipes-gnome/gcr/gcr/0001-meson.build-correctly=
-handle-disabled-ssh_agent-opti.patch
rename meta/recipes-gnome/gcr/{gcr =3D> gcr3}/0001-gcr-meson.build-fix-o=
ne-parallel-build-failure.patch (100%)
rename meta/recipes-gnome/gcr/{gcr =3D> gcr3}/b3ca1d02bb0148ca787ac4aead=
164d7c8ce2c4d8.patch (100%)
rename meta/recipes-gnome/gcr/{gcr_3.40.0.bb =3D> gcr3_3.40.0.bb} (87%)
create mode 100644 meta/recipes-gnome/gcr/gcr_4.0.0.bb
create mode 100644 meta/recipes-gnome/gtk+/gtk4_4.6.7.bb
diff --git a/meta/recipes-gnome/gcr/gcr/0001-meson-add-options-to-set-ssh=
-binary-paths.patch b/meta/recipes-gnome/gcr/gcr/0001-meson-add-options-t=
o-set-ssh-binary-paths.patch
new file mode 100644
index 0000000000..cd3552464a
--- /dev/null
+++ b/meta/recipes-gnome/gcr/gcr/0001-meson-add-options-to-set-ssh-binary=
-paths.patch
@@ -0,0 +1,60 @@
+From 89992bde916fe53dd737a5d678bc66dd51cd1f45 Mon Sep 17 00:00:00 2001
+From: Markus Volk <f_l_k@...>
+Date: Mon, 28 Nov 2022 15:47:50 +0100
+Subject: [PATCH] meson: add options to set ssh binary paths
+
+Signed-off-by: Markus Volk <f_l_k@...>
+
+Upstream-Status: Submitted [ https://gitlab.gnome.org/GNOME/gcr/-/merge_=
requests/115/diffs?commit_id=3Df19dfa4fe0986f3f75b29f9c05cead59fe87cd19 ]
+---
+ meson.build | 11 +++++++++--
+ meson_options.txt | 10 ++++++++++
+ 2 files changed, 19 insertions(+), 2 deletions(-)
+
+diff --git a/meson.build b/meson.build
+index 11d7fa7..231d7e2 100644
+--- a/meson.build
++++ b/meson.build
+@@ -58,9 +58,16 @@ if p11_system_config_modules =3D=3D ''
+ error('Couldn\'t find location for pkcs11 module config')
+ endif
+ libsecret_dep =3D dependency('libsecret-1', version: '>=3D 0.20', requi=
red: get_option('ssh_agent'))
++
+ if get_option('ssh_agent')
+- ssh_add_path =3D find_program('ssh-add').full_path()
+- ssh_agent_path =3D find_program('ssh-agent').full_path()
++ ssh_add_path =3D get_option('ssh_add_path')
++ ssh_agent_path =3D get_option('ssh_agent_path')
++ if ssh_add_path =3D=3D ''
++ ssh_add_path =3D find_program('ssh-add').full_path()
++ endif
++ if ssh_agent_path =3D=3D ''
++ ssh_agent_path =3D find_program('ssh-agent').full_path()
++ endif
+ endif
+=20
+ with_systemd =3D false
+diff --git a/meson_options.txt b/meson_options.txt
+index 6840e44..5355940 100644
+--- a/meson_options.txt
++++ b/meson_options.txt
+@@ -23,6 +23,16 @@ option('gpg_path',
+ value: '',
+ description: 'Path to gpg, autodetected if not set',
+ )
++option('ssh_add_path',
++ type: 'string',
++ value: '',
++ description: 'Path to ssh-add, autodetected if not set',
++)
++option('ssh_agent_path',
++ type: 'string',
++ value: '',
++ description: 'Path to ssh-agent, autodetected if not set',
++)
+ option('ssh_agent',
+ type: 'boolean',
+ value: true,
+--=20
+2.34.1
+
diff --git a/meta/recipes-gnome/gcr/gcr/0001-meson.build-correctly-handle=
-disabled-ssh_agent-opti.patch b/meta/recipes-gnome/gcr/gcr/0001-meson.bu=
ild-correctly-handle-disabled-ssh_agent-opti.patch
new file mode 100644
index 0000000000..940f78ebab
--- /dev/null
+++ b/meta/recipes-gnome/gcr/gcr/0001-meson.build-correctly-handle-disabl=
ed-ssh_agent-opti.patch
@@ -0,0 +1,49 @@
+From 9b67bb18d8409e0e693cc6000507acbd73a30eab Mon Sep 17 00:00:00 2001
+From: Alexander Kanavin <alex@...>
+Date: Wed, 16 Nov 2022 11:27:24 +0100
+Subject: [PATCH 1/2] meson.build: correctly handle disabled ssh_agent op=
tion
+
+Existing code produces these errors:
+| gcr/meson.build:61:0: ERROR: Unable to get the path of a not-found ext=
ernal program
+| gcr/meson.build:101:5: ERROR: Unknown variable "ssh_add_path".
+
+Signed-off-by: Alexander Kanavin <alex@...>
+
+Upstream-Status: Backport [ https://gitlab.gnome.org/GNOME/gcr/-/commit/=
9b67bb18d8409e0e693cc6000507acbd73a30eab ]
+---
+ meson.build | 12 ++++++++----
+ 1 file changed, 8 insertions(+), 4 deletions(-)
+
+diff --git a/meson.build b/meson.build
+index 3f35173..11d7fa7 100644
+--- a/meson.build
++++ b/meson.build
+@@ -58,8 +58,10 @@ if p11_system_config_modules =3D=3D ''
+ error('Couldn\'t find location for pkcs11 module config')
+ endif
+ libsecret_dep =3D dependency('libsecret-1', version: '>=3D 0.20', requi=
red: get_option('ssh_agent'))
+-ssh_add_path =3D find_program('ssh-add', required: get_option('ssh_agen=
t')).full_path()
+-ssh_agent_path =3D find_program('ssh-agent', required: get_option('ssh_=
agent')).full_path()
++if get_option('ssh_agent')
++ ssh_add_path =3D find_program('ssh-add').full_path()
++ ssh_agent_path =3D find_program('ssh-agent').full_path()
++endif
+=20
+ with_systemd =3D false
+ libsystemd_deps =3D []
+@@ -96,8 +98,10 @@ conf.set('HAVE_TIMEGM', cc.has_function('timegm'))
+ conf.set('HAVE_MLOCK', cc.has_function('mlock'))
+ conf.set_quoted('GPG_EXECUTABLE', gpg_path)
+ conf.set_quoted('LIBGCRYPT_VERSION', libgcrypt_dep.version())
+-conf.set_quoted('SSH_ADD_EXECUTABLE', ssh_add_path)
+-conf.set_quoted('SSH_AGENT_EXECUTABLE', ssh_agent_path)
++if get_option('ssh_agent')
++ conf.set_quoted('SSH_ADD_EXECUTABLE', ssh_add_path)
++ conf.set_quoted('SSH_AGENT_EXECUTABLE', ssh_agent_path)
++endif
+ conf.set10('WITH_SYSTEMD', with_systemd)
+ config_file =3D configure_file(
+ output: 'config.h',
+--=20
+2.34.1
+
diff --git a/meta/recipes-gnome/gcr/gcr/0001-gcr-meson.build-fix-one-para=
llel-build-failure.patch b/meta/recipes-gnome/gcr/gcr3/0001-gcr-meson.bui=
ld-fix-one-parallel-build-failure.patch
similarity index 100%
rename from meta/recipes-gnome/gcr/gcr/0001-gcr-meson.build-fix-one-paral=
lel-build-failure.patch
rename to meta/recipes-gnome/gcr/gcr3/0001-gcr-meson.build-fix-one-parall=
el-build-failure.patch
diff --git a/meta/recipes-gnome/gcr/gcr/b3ca1d02bb0148ca787ac4aead164d7c8=
ce2c4d8.patch b/meta/recipes-gnome/gcr/gcr3/b3ca1d02bb0148ca787ac4aead164=
d7c8ce2c4d8.patch
similarity index 100%
rename from meta/recipes-gnome/gcr/gcr/b3ca1d02bb0148ca787ac4aead164d7c8c=
e2c4d8.patch
rename to meta/recipes-gnome/gcr/gcr3/b3ca1d02bb0148ca787ac4aead164d7c8ce=
2c4d8.patch
diff --git a/meta/recipes-gnome/gcr/gcr_3.40.0.bb b/meta/recipes-gnome/gc=
r/gcr3_3.40.0.bb
similarity index 87%
rename from meta/recipes-gnome/gcr/gcr_3.40.0.bb
rename to meta/recipes-gnome/gcr/gcr3_3.40.0.bb
index 917be5938b..5318768db6 100644
--- a/meta/recipes-gnome/gcr/gcr_3.40.0.bb
+++ b/meta/recipes-gnome/gcr/gcr3_3.40.0.bb
@@ -20,11 +20,15 @@ GTKDOC_MESON_OPTION =3D "gtk_doc"
inherit gnomebase gtk-icon-cache gtk-doc features_check upstream-version=
-is-even vala gobject-introspection gettext mime mime-xdg
UPSTREAM_CHECK_REGEX =3D "[^\d\.](?P<pver>\d+\.(?!9\d+)(\d*[02468])+(\.\=
d+)+)\.tar"
=20
-SRC_URI +=3D "file://0001-gcr-meson.build-fix-one-parallel-build-failure=
.patch \=20
- file://b3ca1d02bb0148ca787ac4aead164d7c8ce2c4d8.patch"
+SRC_URI =3D " \
+ https://download.gnome.org/sources/gcr/3.40/gcr-${PV}.tar.xz;name=3Darc=
hive \
+ file://0001-gcr-meson.build-fix-one-parallel-build-failure.patch \
+ file://b3ca1d02bb0148ca787ac4aead164d7c8ce2c4d8.patch"
=20
SRC_URI[archive.sha256sum] =3D "b9d3645a5fd953a54285cc64d4fc046736463dbd=
4dcc25caf5c7b59bed3027f5"
=20
+S =3D "${WORKDIR}/gcr-${PV}"
+
PACKAGECONFIG ??=3D " \
${@bb.utils.contains('DISTRO_FEATURES', 'x11', 'gtk', '', d)} \
${@bb.utils.contains('DISTRO_FEATURES', 'wayland', 'gtk', '', d)} \
diff --git a/meta/recipes-gnome/gcr/gcr_4.0.0.bb b/meta/recipes-gnome/gcr=
/gcr_4.0.0.bb
new file mode 100644
index 0000000000..ff2f7978a9
--- /dev/null
+++ b/meta/recipes-gnome/gcr/gcr_4.0.0.bb
@@ -0,0 +1,51 @@
+SUMMARY =3D "A library for bits of crypto UI and parsing etc"
+DESCRIPTION =3D "GCR is a library for displaying certificates, and crypt=
o UI, \
+accessing key stores. It also provides the viewer for crypto files on th=
e \
+GNOME desktop."
+HOMEPAGE =3D "https://gitlab.gnome.org/GNOME/gcr"
+BUGTRACKER =3D "https://gitlab.gnome.org/GNOME/gcr/issues"
+
+LICENSE =3D "GPL-2.0-only"
+LIC_FILES_CHKSUM =3D "file://COPYING;md5=3D55ca817ccb7d5b5b66355690e9abc=
605"
+
+DEPENDS =3D "p11-kit glib-2.0 libgcrypt gnupg-native \
+ ${@bb.utils.contains('GI_DATA_ENABLED', 'True', 'libxslt-nati=
ve', '', d)}"
+
+CACHED_CONFIGUREVARS +=3D "ac_cv_path_GPG=3D'gpg2'"
+
+CFLAGS +=3D "-D_GNU_SOURCE"
+
+GNOMEBASEBUILDCLASS =3D "meson"
+GTKDOC_MESON_OPTION =3D "gtk_doc"
+inherit gnomebase gtk-icon-cache gtk-doc features_check upstream-version=
-is-even vala gobject-introspection gettext mime mime-xdg
+UPSTREAM_CHECK_REGEX =3D "[^\d\.](?P<pver>\d+\.(?!9\d+)(\d*[02468])+(\.\=
d+)+)\.tar"
+
+SRC_URI +=3D " \
+ file://0001-meson.build-correctly-handle-disabled-ssh_agent-opti.patch =
\
+ file://0001-meson-add-options-to-set-ssh-binary-paths.patch \
+"
+SRC_URI[archive.sha256sum] =3D "c45855924f0ee7bab43e2dd38bfafd2ac815c6e9=
864341c0161e171173dcec7c"
+
+PACKAGECONFIG ??=3D " \
+ ${@bb.utils.filter('DISTRO_FEATURES', 'systemd', d)} \
+ ${@bb.utils.contains('DISTRO_FEATURES', 'x11', 'gtk', '', d)} \
+ ${@bb.utils.contains('DISTRO_FEATURES', 'wayland', 'gtk', '', d)} \
+"
+PACKAGECONFIG[gtk] =3D "-Dgtk4=3Dtrue,-Dgtk4=3Dfalse,gtk4"
+PACKAGECONFIG[ssh_agent] =3D "-Dssh_agent=3Dtrue -Dssh_add_path=3D${bind=
ir}/ssh-add -Dssh_agent_path=3D${bindir}/ssh-agent,-Dssh_agent=3Dfalse,li=
bsecret,openssh"
+#'Use systemd socket activation for server programs'
+PACKAGECONFIG[systemd] =3D "-Dsystemd=3Denabled,-Dsystemd=3Ddisabled,sys=
temd"
+
+FILES:${PN} +=3D " \
+ ${datadir}/dbus-1 \
+ ${datadir}/gcr-4 \
+ ${systemd_user_unitdir}/gcr-ssh-agent.socket \
+ ${systemd_user_unitdir}/gcr-ssh-agent.service \
+"
+
+# http://errors.yoctoproject.org/Errors/Details/20229/
+ARM_INSTRUCTION_SET:armv4 =3D "arm"
+ARM_INSTRUCTION_SET:armv5 =3D "arm"
+ARM_INSTRUCTION_SET:armv6 =3D "arm"
+
+EXTRA_OEMESON +=3D "-Dgpg_path=3D${bindir}/gpg2"
diff --git a/meta/recipes-gnome/gtk+/gtk4_4.6.7.bb b/meta/recipes-gnome/g=
tk+/gtk4_4.6.7.bb
new file mode 100644
index 0000000000..c71be23a7d
--- /dev/null
+++ b/meta/recipes-gnome/gtk+/gtk4_4.6.7.bb
@@ -0,0 +1,142 @@
+SUMMARY =3D "Multi-platform toolkit for creating GUIs"
+DESCRIPTION =3D "GTK is a multi-platform toolkit for creating graphical =
user interfaces. Offering a complete \
+set of widgets, GTK is suitable for projects ranging from small one-off =
projects to complete application suites."
+HOMEPAGE =3D "http://www.gtk.org"
+BUGTRACKER =3D "https://bugzilla.gnome.org/"
+SECTION =3D "libs"
+
+DEPENDS =3D " \
+ sassc-native \
+ glib-2.0 \
+ libepoxy \
+ graphene \
+ cairo \
+ pango \
+ atk \
+ jpeg \
+ libpng \
+ librsvg \
+ tiff \
+ gdk-pixbuf-native gdk-pixbuf \
+"
+
+LICENSE =3D "LGPL-2.0-only & LGPL-2.0-or-later & LGPL-2.1-or-later"
+LIC_FILES_CHKSUM =3D " \
+ file://COPYING;md5=3D5f30f0716dfdd0d91eb439ebec522ec2 \
+ file://gtk/gtk.h;endline=3D25;md5=3D1d8dc0fccdbfa26287a271dce88af737=
\
+ file://gdk/gdk.h;endline=3D25;md5=3Dc920ce39dc88c6f06d3e7c50e08086f2=
\
+ file://tests/testgtk.c;endline=3D25;md5=3D49d06770681b8322466b52ed19=
d29fb2 \
+"
+
+MAJ_VER =3D "${@oe.utils.trim_version("${PV}", 2)}"
+
+UPSTREAM_CHECK_REGEX =3D "gtk-(?P<pver>\d+\.(\d*[02468])+(\.\d+)+)\.tar.=
xz"
+
+SRC_URI =3D "http://ftp.gnome.org/pub/gnome/sources/gtk/${MAJ_VER}/gtk-$=
{PV}.tar.xz"
+SRC_URI[sha256sum] =3D "effd2e7c4b5e2a5c7fad43e0f24adea68baa4092abb0b752=
caff278e6bb010e8"
+
+S =3D "${WORKDIR}/gtk-${PV}"
+
+inherit meson gettext pkgconfig gtk-doc update-alternatives gsettings fe=
atures_check gobject-introspection
+
+# TBD: nativesdk
+# gobject-introspection.bbclass pins introspection off for nativesk. As =
long as
+# we do not remove this wisdom or hack gtk4, it is not possible to build
+# nativesdk-gtk4
+BBCLASSEXTEND =3D "native"
+
+GSETTINGS_PACKAGE:class-native =3D ""
+
+ANY_OF_DISTRO_FEATURES =3D "${GTK3DISTROFEATURES}"
+REQUIRED_DISTRO_FEATURES =3D "opengl"
+
+GIR_MESON_ENABLE_FLAG =3D 'enabled'
+GIR_MESON_DISABLE_FLAG =3D 'disabled'
+GTKDOC_MESON_OPTION =3D 'gtk_doc'
+
+EXTRA_OEMESON =3D " -Dbuild-tests=3Dfalse"
+
+PACKAGECONFIG ??=3D "${@bb.utils.filter('DISTRO_FEATURES', 'wayland x11'=
, d)}"
+PACKAGECONFIG:class-native =3D "${@bb.utils.filter('DISTRO_FEATURES', 'x=
11', d)}"
+PACKAGECONFIG:class-nativesdk =3D "${@bb.utils.filter('DISTRO_FEATURES',=
'x11', d)}"
+
+PACKAGECONFIG[x11] =3D "-Dx11-backend=3Dtrue,-Dx11-backend=3Dfalse,at-sp=
i2-atk fontconfig libx11 libxext libxcursor libxi libxdamage libxrandr li=
bxrender libxcomposite libxfixes xinerama"
+PACKAGECONFIG[wayland] =3D "-Dwayland-backend=3Dtrue,-Dwayland-backend=3D=
false,wayland wayland-protocols libxkbcommon virtual/egl virtual/libgles2=
wayland-native"
+PACKAGECONFIG[cups] =3D "-Dprint-cups=3Denabled,-Dprint-cups=3Ddisabled,=
cups"
+PACKAGECONFIG[colord] =3D "-Dcolord=3Denabled,-Dcolord=3Ddisabled,colord=
"
+# gtk4 wants gstreamer-player-1.0 -> gstreamer1.0-plugins-bad
+PACKAGECONFIG[gstreamer] =3D "-Dmedia-gstreamer=3Denabled,-Dmedia-gstrea=
mer=3Ddisabled,gstreamer1.0-plugins-bad"
+PACKAGECONFIG[tracker] =3D "-Dtracker=3Denabled,-Dtracker=3Ddisabled,tra=
cker"
+
+
+do_compile:prepend() {
+ export GIR_EXTRA_LIBS_PATH=3D"${B}/gdk/.libs"
+}
+
+
+PACKAGES =3D+ "${PN}-demo"
+LIBV =3D "4.0.0"
+
+FILES:${PN}-demo =3D " \
+ ${datadir}/applications/org.gtk.Demo4.desktop \
+ ${datadir}/applications/org.gtk.IconBrowser4.desktop \
+ ${datadir}/applications/org.gtk.WidgetFactory4.desktop \
+ ${datadir}/icons/hicolor/*/apps/org.gtk.Demo4*.* \
+ ${datadir}/icons/hicolor/*/apps/org.gtk.IconBrowser4*.* \
+ ${datadir}/icons/hicolor/*/apps/org.gtk.WidgetFactory4*.* \
+ ${bindir}/gtk4-demo \
+ ${bindir}/gtk4-demo-application \
+ ${bindir}/gtk4-icon-browser \
+ ${bindir}/gtk4-widget-factory \
+"
+
+FILES:${PN}:append =3D " \
+ ${datadir}/glib-2.0/schemas/ \
+ ${datadir}/gtk-4.0/emoji/ \
+ ${datadir}/metainfo/ \
+ ${datadir}/icons/hicolor/*/apps/org.gtk.PrintEditor4*.* \
+ ${libdir}/gtk-4.0/${LIBV}/printbackends \
+ ${bindir}/gtk4-update-icon-cache \
+ ${bindir}/gtk4-launch \
+"
+
+FILES:${PN}-dev +=3D " \
+ ${datadir}/gtk-4.0/gtk4builder.rng \
+ ${datadir}/gtk-4.0/include \
+ ${datadir}/gtk-4.0/valgrind \
+ ${datadir}/gettext/its \
+ ${bindir}/gtk4-builder-tool \
+ ${bindir}/gtk4-encode-symbolic-svg \
+ ${bindir}/gtk4-query-settings \
+"
+
+GTKBASE_RRECOMMENDS ?=3D " \
+ liberation-fonts \
+ gdk-pixbuf-loader-png \
+ gdk-pixbuf-loader-jpeg \
+ gdk-pixbuf-loader-gif \
+ gdk-pixbuf-loader-xpm \
+ shared-mime-info \
+ adwaita-icon-theme-symbolic \
+"
+
+GTKBASE_RRECOMMENDS:class-native ?=3D ""
+
+GTKGLIBC_RRECOMMENDS ?=3D "${GTKBASE_RRECOMMENDS} glibc-gconv-iso8859-1"
+
+RRECOMMENDS:${PN} =3D "${GTKBASE_RRECOMMENDS}"
+RRECOMMENDS:${PN}:libc-glibc =3D "${GTKGLIBC_RRECOMMENDS}"
+RDEPENDS:${PN}-dev +=3D "${@bb.utils.contains("PACKAGECONFIG", "wayland"=
, "wayland-protocols", "", d)}"
+
+PACKAGES_DYNAMIC +=3D "^gtk4-printbackend-.*"
+python populate_packages:prepend () {
+ import os.path
+
+ gtk_libdir =3D d.expand('${libdir}/gtk-3.0/${LIBV}')
+ printmodules_root =3D os.path.join(gtk_libdir, 'printbackends');
+
+ do_split_packages(d, printmodules_root, r'^libprintbackend-(.*)\.so$=
', 'gtk4-printbackend-%s', 'GTK printbackend module for %s')
+
+ if (d.getVar('DEBIAN_NAMES')):
+ d.setVar(d.expand('PKG:${PN}'), '${MLPREFIX}libgtk-4.0')
+}
--=20
2.34.1
name to gcr3.
- Move gtk4 recipe from meta-gnome
Signed-off-by: Markus Volk <f_l_k@...>
---
...-add-options-to-set-ssh-binary-paths.patch | 60 ++++++++
...ectly-handle-disabled-ssh_agent-opti.patch | 49 ++++++
...build-fix-one-parallel-build-failure.patch | 0
...1d02bb0148ca787ac4aead164d7c8ce2c4d8.patch | 0
.../gcr/{gcr_3.40.0.bb =3D> gcr3_3.40.0.bb} | 8 +-
meta/recipes-gnome/gcr/gcr_4.0.0.bb | 51 +++++++
meta/recipes-gnome/gtk+/gtk4_4.6.7.bb | 142 ++++++++++++++++++
7 files changed, 308 insertions(+), 2 deletions(-)
create mode 100644 meta/recipes-gnome/gcr/gcr/0001-meson-add-options-to-=
set-ssh-binary-paths.patch
create mode 100644 meta/recipes-gnome/gcr/gcr/0001-meson.build-correctly=
-handle-disabled-ssh_agent-opti.patch
rename meta/recipes-gnome/gcr/{gcr =3D> gcr3}/0001-gcr-meson.build-fix-o=
ne-parallel-build-failure.patch (100%)
rename meta/recipes-gnome/gcr/{gcr =3D> gcr3}/b3ca1d02bb0148ca787ac4aead=
164d7c8ce2c4d8.patch (100%)
rename meta/recipes-gnome/gcr/{gcr_3.40.0.bb =3D> gcr3_3.40.0.bb} (87%)
create mode 100644 meta/recipes-gnome/gcr/gcr_4.0.0.bb
create mode 100644 meta/recipes-gnome/gtk+/gtk4_4.6.7.bb
diff --git a/meta/recipes-gnome/gcr/gcr/0001-meson-add-options-to-set-ssh=
-binary-paths.patch b/meta/recipes-gnome/gcr/gcr/0001-meson-add-options-t=
o-set-ssh-binary-paths.patch
new file mode 100644
index 0000000000..cd3552464a
--- /dev/null
+++ b/meta/recipes-gnome/gcr/gcr/0001-meson-add-options-to-set-ssh-binary=
-paths.patch
@@ -0,0 +1,60 @@
+From 89992bde916fe53dd737a5d678bc66dd51cd1f45 Mon Sep 17 00:00:00 2001
+From: Markus Volk <f_l_k@...>
+Date: Mon, 28 Nov 2022 15:47:50 +0100
+Subject: [PATCH] meson: add options to set ssh binary paths
+
+Signed-off-by: Markus Volk <f_l_k@...>
+
+Upstream-Status: Submitted [ https://gitlab.gnome.org/GNOME/gcr/-/merge_=
requests/115/diffs?commit_id=3Df19dfa4fe0986f3f75b29f9c05cead59fe87cd19 ]
+---
+ meson.build | 11 +++++++++--
+ meson_options.txt | 10 ++++++++++
+ 2 files changed, 19 insertions(+), 2 deletions(-)
+
+diff --git a/meson.build b/meson.build
+index 11d7fa7..231d7e2 100644
+--- a/meson.build
++++ b/meson.build
+@@ -58,9 +58,16 @@ if p11_system_config_modules =3D=3D ''
+ error('Couldn\'t find location for pkcs11 module config')
+ endif
+ libsecret_dep =3D dependency('libsecret-1', version: '>=3D 0.20', requi=
red: get_option('ssh_agent'))
++
+ if get_option('ssh_agent')
+- ssh_add_path =3D find_program('ssh-add').full_path()
+- ssh_agent_path =3D find_program('ssh-agent').full_path()
++ ssh_add_path =3D get_option('ssh_add_path')
++ ssh_agent_path =3D get_option('ssh_agent_path')
++ if ssh_add_path =3D=3D ''
++ ssh_add_path =3D find_program('ssh-add').full_path()
++ endif
++ if ssh_agent_path =3D=3D ''
++ ssh_agent_path =3D find_program('ssh-agent').full_path()
++ endif
+ endif
+=20
+ with_systemd =3D false
+diff --git a/meson_options.txt b/meson_options.txt
+index 6840e44..5355940 100644
+--- a/meson_options.txt
++++ b/meson_options.txt
+@@ -23,6 +23,16 @@ option('gpg_path',
+ value: '',
+ description: 'Path to gpg, autodetected if not set',
+ )
++option('ssh_add_path',
++ type: 'string',
++ value: '',
++ description: 'Path to ssh-add, autodetected if not set',
++)
++option('ssh_agent_path',
++ type: 'string',
++ value: '',
++ description: 'Path to ssh-agent, autodetected if not set',
++)
+ option('ssh_agent',
+ type: 'boolean',
+ value: true,
+--=20
+2.34.1
+
diff --git a/meta/recipes-gnome/gcr/gcr/0001-meson.build-correctly-handle=
-disabled-ssh_agent-opti.patch b/meta/recipes-gnome/gcr/gcr/0001-meson.bu=
ild-correctly-handle-disabled-ssh_agent-opti.patch
new file mode 100644
index 0000000000..940f78ebab
--- /dev/null
+++ b/meta/recipes-gnome/gcr/gcr/0001-meson.build-correctly-handle-disabl=
ed-ssh_agent-opti.patch
@@ -0,0 +1,49 @@
+From 9b67bb18d8409e0e693cc6000507acbd73a30eab Mon Sep 17 00:00:00 2001
+From: Alexander Kanavin <alex@...>
+Date: Wed, 16 Nov 2022 11:27:24 +0100
+Subject: [PATCH 1/2] meson.build: correctly handle disabled ssh_agent op=
tion
+
+Existing code produces these errors:
+| gcr/meson.build:61:0: ERROR: Unable to get the path of a not-found ext=
ernal program
+| gcr/meson.build:101:5: ERROR: Unknown variable "ssh_add_path".
+
+Signed-off-by: Alexander Kanavin <alex@...>
+
+Upstream-Status: Backport [ https://gitlab.gnome.org/GNOME/gcr/-/commit/=
9b67bb18d8409e0e693cc6000507acbd73a30eab ]
+---
+ meson.build | 12 ++++++++----
+ 1 file changed, 8 insertions(+), 4 deletions(-)
+
+diff --git a/meson.build b/meson.build
+index 3f35173..11d7fa7 100644
+--- a/meson.build
++++ b/meson.build
+@@ -58,8 +58,10 @@ if p11_system_config_modules =3D=3D ''
+ error('Couldn\'t find location for pkcs11 module config')
+ endif
+ libsecret_dep =3D dependency('libsecret-1', version: '>=3D 0.20', requi=
red: get_option('ssh_agent'))
+-ssh_add_path =3D find_program('ssh-add', required: get_option('ssh_agen=
t')).full_path()
+-ssh_agent_path =3D find_program('ssh-agent', required: get_option('ssh_=
agent')).full_path()
++if get_option('ssh_agent')
++ ssh_add_path =3D find_program('ssh-add').full_path()
++ ssh_agent_path =3D find_program('ssh-agent').full_path()
++endif
+=20
+ with_systemd =3D false
+ libsystemd_deps =3D []
+@@ -96,8 +98,10 @@ conf.set('HAVE_TIMEGM', cc.has_function('timegm'))
+ conf.set('HAVE_MLOCK', cc.has_function('mlock'))
+ conf.set_quoted('GPG_EXECUTABLE', gpg_path)
+ conf.set_quoted('LIBGCRYPT_VERSION', libgcrypt_dep.version())
+-conf.set_quoted('SSH_ADD_EXECUTABLE', ssh_add_path)
+-conf.set_quoted('SSH_AGENT_EXECUTABLE', ssh_agent_path)
++if get_option('ssh_agent')
++ conf.set_quoted('SSH_ADD_EXECUTABLE', ssh_add_path)
++ conf.set_quoted('SSH_AGENT_EXECUTABLE', ssh_agent_path)
++endif
+ conf.set10('WITH_SYSTEMD', with_systemd)
+ config_file =3D configure_file(
+ output: 'config.h',
+--=20
+2.34.1
+
diff --git a/meta/recipes-gnome/gcr/gcr/0001-gcr-meson.build-fix-one-para=
llel-build-failure.patch b/meta/recipes-gnome/gcr/gcr3/0001-gcr-meson.bui=
ld-fix-one-parallel-build-failure.patch
similarity index 100%
rename from meta/recipes-gnome/gcr/gcr/0001-gcr-meson.build-fix-one-paral=
lel-build-failure.patch
rename to meta/recipes-gnome/gcr/gcr3/0001-gcr-meson.build-fix-one-parall=
el-build-failure.patch
diff --git a/meta/recipes-gnome/gcr/gcr/b3ca1d02bb0148ca787ac4aead164d7c8=
ce2c4d8.patch b/meta/recipes-gnome/gcr/gcr3/b3ca1d02bb0148ca787ac4aead164=
d7c8ce2c4d8.patch
similarity index 100%
rename from meta/recipes-gnome/gcr/gcr/b3ca1d02bb0148ca787ac4aead164d7c8c=
e2c4d8.patch
rename to meta/recipes-gnome/gcr/gcr3/b3ca1d02bb0148ca787ac4aead164d7c8ce=
2c4d8.patch
diff --git a/meta/recipes-gnome/gcr/gcr_3.40.0.bb b/meta/recipes-gnome/gc=
r/gcr3_3.40.0.bb
similarity index 87%
rename from meta/recipes-gnome/gcr/gcr_3.40.0.bb
rename to meta/recipes-gnome/gcr/gcr3_3.40.0.bb
index 917be5938b..5318768db6 100644
--- a/meta/recipes-gnome/gcr/gcr_3.40.0.bb
+++ b/meta/recipes-gnome/gcr/gcr3_3.40.0.bb
@@ -20,11 +20,15 @@ GTKDOC_MESON_OPTION =3D "gtk_doc"
inherit gnomebase gtk-icon-cache gtk-doc features_check upstream-version=
-is-even vala gobject-introspection gettext mime mime-xdg
UPSTREAM_CHECK_REGEX =3D "[^\d\.](?P<pver>\d+\.(?!9\d+)(\d*[02468])+(\.\=
d+)+)\.tar"
=20
-SRC_URI +=3D "file://0001-gcr-meson.build-fix-one-parallel-build-failure=
.patch \=20
- file://b3ca1d02bb0148ca787ac4aead164d7c8ce2c4d8.patch"
+SRC_URI =3D " \
+ https://download.gnome.org/sources/gcr/3.40/gcr-${PV}.tar.xz;name=3Darc=
hive \
+ file://0001-gcr-meson.build-fix-one-parallel-build-failure.patch \
+ file://b3ca1d02bb0148ca787ac4aead164d7c8ce2c4d8.patch"
=20
SRC_URI[archive.sha256sum] =3D "b9d3645a5fd953a54285cc64d4fc046736463dbd=
4dcc25caf5c7b59bed3027f5"
=20
+S =3D "${WORKDIR}/gcr-${PV}"
+
PACKAGECONFIG ??=3D " \
${@bb.utils.contains('DISTRO_FEATURES', 'x11', 'gtk', '', d)} \
${@bb.utils.contains('DISTRO_FEATURES', 'wayland', 'gtk', '', d)} \
diff --git a/meta/recipes-gnome/gcr/gcr_4.0.0.bb b/meta/recipes-gnome/gcr=
/gcr_4.0.0.bb
new file mode 100644
index 0000000000..ff2f7978a9
--- /dev/null
+++ b/meta/recipes-gnome/gcr/gcr_4.0.0.bb
@@ -0,0 +1,51 @@
+SUMMARY =3D "A library for bits of crypto UI and parsing etc"
+DESCRIPTION =3D "GCR is a library for displaying certificates, and crypt=
o UI, \
+accessing key stores. It also provides the viewer for crypto files on th=
e \
+GNOME desktop."
+HOMEPAGE =3D "https://gitlab.gnome.org/GNOME/gcr"
+BUGTRACKER =3D "https://gitlab.gnome.org/GNOME/gcr/issues"
+
+LICENSE =3D "GPL-2.0-only"
+LIC_FILES_CHKSUM =3D "file://COPYING;md5=3D55ca817ccb7d5b5b66355690e9abc=
605"
+
+DEPENDS =3D "p11-kit glib-2.0 libgcrypt gnupg-native \
+ ${@bb.utils.contains('GI_DATA_ENABLED', 'True', 'libxslt-nati=
ve', '', d)}"
+
+CACHED_CONFIGUREVARS +=3D "ac_cv_path_GPG=3D'gpg2'"
+
+CFLAGS +=3D "-D_GNU_SOURCE"
+
+GNOMEBASEBUILDCLASS =3D "meson"
+GTKDOC_MESON_OPTION =3D "gtk_doc"
+inherit gnomebase gtk-icon-cache gtk-doc features_check upstream-version=
-is-even vala gobject-introspection gettext mime mime-xdg
+UPSTREAM_CHECK_REGEX =3D "[^\d\.](?P<pver>\d+\.(?!9\d+)(\d*[02468])+(\.\=
d+)+)\.tar"
+
+SRC_URI +=3D " \
+ file://0001-meson.build-correctly-handle-disabled-ssh_agent-opti.patch =
\
+ file://0001-meson-add-options-to-set-ssh-binary-paths.patch \
+"
+SRC_URI[archive.sha256sum] =3D "c45855924f0ee7bab43e2dd38bfafd2ac815c6e9=
864341c0161e171173dcec7c"
+
+PACKAGECONFIG ??=3D " \
+ ${@bb.utils.filter('DISTRO_FEATURES', 'systemd', d)} \
+ ${@bb.utils.contains('DISTRO_FEATURES', 'x11', 'gtk', '', d)} \
+ ${@bb.utils.contains('DISTRO_FEATURES', 'wayland', 'gtk', '', d)} \
+"
+PACKAGECONFIG[gtk] =3D "-Dgtk4=3Dtrue,-Dgtk4=3Dfalse,gtk4"
+PACKAGECONFIG[ssh_agent] =3D "-Dssh_agent=3Dtrue -Dssh_add_path=3D${bind=
ir}/ssh-add -Dssh_agent_path=3D${bindir}/ssh-agent,-Dssh_agent=3Dfalse,li=
bsecret,openssh"
+#'Use systemd socket activation for server programs'
+PACKAGECONFIG[systemd] =3D "-Dsystemd=3Denabled,-Dsystemd=3Ddisabled,sys=
temd"
+
+FILES:${PN} +=3D " \
+ ${datadir}/dbus-1 \
+ ${datadir}/gcr-4 \
+ ${systemd_user_unitdir}/gcr-ssh-agent.socket \
+ ${systemd_user_unitdir}/gcr-ssh-agent.service \
+"
+
+# http://errors.yoctoproject.org/Errors/Details/20229/
+ARM_INSTRUCTION_SET:armv4 =3D "arm"
+ARM_INSTRUCTION_SET:armv5 =3D "arm"
+ARM_INSTRUCTION_SET:armv6 =3D "arm"
+
+EXTRA_OEMESON +=3D "-Dgpg_path=3D${bindir}/gpg2"
diff --git a/meta/recipes-gnome/gtk+/gtk4_4.6.7.bb b/meta/recipes-gnome/g=
tk+/gtk4_4.6.7.bb
new file mode 100644
index 0000000000..c71be23a7d
--- /dev/null
+++ b/meta/recipes-gnome/gtk+/gtk4_4.6.7.bb
@@ -0,0 +1,142 @@
+SUMMARY =3D "Multi-platform toolkit for creating GUIs"
+DESCRIPTION =3D "GTK is a multi-platform toolkit for creating graphical =
user interfaces. Offering a complete \
+set of widgets, GTK is suitable for projects ranging from small one-off =
projects to complete application suites."
+HOMEPAGE =3D "http://www.gtk.org"
+BUGTRACKER =3D "https://bugzilla.gnome.org/"
+SECTION =3D "libs"
+
+DEPENDS =3D " \
+ sassc-native \
+ glib-2.0 \
+ libepoxy \
+ graphene \
+ cairo \
+ pango \
+ atk \
+ jpeg \
+ libpng \
+ librsvg \
+ tiff \
+ gdk-pixbuf-native gdk-pixbuf \
+"
+
+LICENSE =3D "LGPL-2.0-only & LGPL-2.0-or-later & LGPL-2.1-or-later"
+LIC_FILES_CHKSUM =3D " \
+ file://COPYING;md5=3D5f30f0716dfdd0d91eb439ebec522ec2 \
+ file://gtk/gtk.h;endline=3D25;md5=3D1d8dc0fccdbfa26287a271dce88af737=
\
+ file://gdk/gdk.h;endline=3D25;md5=3Dc920ce39dc88c6f06d3e7c50e08086f2=
\
+ file://tests/testgtk.c;endline=3D25;md5=3D49d06770681b8322466b52ed19=
d29fb2 \
+"
+
+MAJ_VER =3D "${@oe.utils.trim_version("${PV}", 2)}"
+
+UPSTREAM_CHECK_REGEX =3D "gtk-(?P<pver>\d+\.(\d*[02468])+(\.\d+)+)\.tar.=
xz"
+
+SRC_URI =3D "http://ftp.gnome.org/pub/gnome/sources/gtk/${MAJ_VER}/gtk-$=
{PV}.tar.xz"
+SRC_URI[sha256sum] =3D "effd2e7c4b5e2a5c7fad43e0f24adea68baa4092abb0b752=
caff278e6bb010e8"
+
+S =3D "${WORKDIR}/gtk-${PV}"
+
+inherit meson gettext pkgconfig gtk-doc update-alternatives gsettings fe=
atures_check gobject-introspection
+
+# TBD: nativesdk
+# gobject-introspection.bbclass pins introspection off for nativesk. As =
long as
+# we do not remove this wisdom or hack gtk4, it is not possible to build
+# nativesdk-gtk4
+BBCLASSEXTEND =3D "native"
+
+GSETTINGS_PACKAGE:class-native =3D ""
+
+ANY_OF_DISTRO_FEATURES =3D "${GTK3DISTROFEATURES}"
+REQUIRED_DISTRO_FEATURES =3D "opengl"
+
+GIR_MESON_ENABLE_FLAG =3D 'enabled'
+GIR_MESON_DISABLE_FLAG =3D 'disabled'
+GTKDOC_MESON_OPTION =3D 'gtk_doc'
+
+EXTRA_OEMESON =3D " -Dbuild-tests=3Dfalse"
+
+PACKAGECONFIG ??=3D "${@bb.utils.filter('DISTRO_FEATURES', 'wayland x11'=
, d)}"
+PACKAGECONFIG:class-native =3D "${@bb.utils.filter('DISTRO_FEATURES', 'x=
11', d)}"
+PACKAGECONFIG:class-nativesdk =3D "${@bb.utils.filter('DISTRO_FEATURES',=
'x11', d)}"
+
+PACKAGECONFIG[x11] =3D "-Dx11-backend=3Dtrue,-Dx11-backend=3Dfalse,at-sp=
i2-atk fontconfig libx11 libxext libxcursor libxi libxdamage libxrandr li=
bxrender libxcomposite libxfixes xinerama"
+PACKAGECONFIG[wayland] =3D "-Dwayland-backend=3Dtrue,-Dwayland-backend=3D=
false,wayland wayland-protocols libxkbcommon virtual/egl virtual/libgles2=
wayland-native"
+PACKAGECONFIG[cups] =3D "-Dprint-cups=3Denabled,-Dprint-cups=3Ddisabled,=
cups"
+PACKAGECONFIG[colord] =3D "-Dcolord=3Denabled,-Dcolord=3Ddisabled,colord=
"
+# gtk4 wants gstreamer-player-1.0 -> gstreamer1.0-plugins-bad
+PACKAGECONFIG[gstreamer] =3D "-Dmedia-gstreamer=3Denabled,-Dmedia-gstrea=
mer=3Ddisabled,gstreamer1.0-plugins-bad"
+PACKAGECONFIG[tracker] =3D "-Dtracker=3Denabled,-Dtracker=3Ddisabled,tra=
cker"
+
+
+do_compile:prepend() {
+ export GIR_EXTRA_LIBS_PATH=3D"${B}/gdk/.libs"
+}
+
+
+PACKAGES =3D+ "${PN}-demo"
+LIBV =3D "4.0.0"
+
+FILES:${PN}-demo =3D " \
+ ${datadir}/applications/org.gtk.Demo4.desktop \
+ ${datadir}/applications/org.gtk.IconBrowser4.desktop \
+ ${datadir}/applications/org.gtk.WidgetFactory4.desktop \
+ ${datadir}/icons/hicolor/*/apps/org.gtk.Demo4*.* \
+ ${datadir}/icons/hicolor/*/apps/org.gtk.IconBrowser4*.* \
+ ${datadir}/icons/hicolor/*/apps/org.gtk.WidgetFactory4*.* \
+ ${bindir}/gtk4-demo \
+ ${bindir}/gtk4-demo-application \
+ ${bindir}/gtk4-icon-browser \
+ ${bindir}/gtk4-widget-factory \
+"
+
+FILES:${PN}:append =3D " \
+ ${datadir}/glib-2.0/schemas/ \
+ ${datadir}/gtk-4.0/emoji/ \
+ ${datadir}/metainfo/ \
+ ${datadir}/icons/hicolor/*/apps/org.gtk.PrintEditor4*.* \
+ ${libdir}/gtk-4.0/${LIBV}/printbackends \
+ ${bindir}/gtk4-update-icon-cache \
+ ${bindir}/gtk4-launch \
+"
+
+FILES:${PN}-dev +=3D " \
+ ${datadir}/gtk-4.0/gtk4builder.rng \
+ ${datadir}/gtk-4.0/include \
+ ${datadir}/gtk-4.0/valgrind \
+ ${datadir}/gettext/its \
+ ${bindir}/gtk4-builder-tool \
+ ${bindir}/gtk4-encode-symbolic-svg \
+ ${bindir}/gtk4-query-settings \
+"
+
+GTKBASE_RRECOMMENDS ?=3D " \
+ liberation-fonts \
+ gdk-pixbuf-loader-png \
+ gdk-pixbuf-loader-jpeg \
+ gdk-pixbuf-loader-gif \
+ gdk-pixbuf-loader-xpm \
+ shared-mime-info \
+ adwaita-icon-theme-symbolic \
+"
+
+GTKBASE_RRECOMMENDS:class-native ?=3D ""
+
+GTKGLIBC_RRECOMMENDS ?=3D "${GTKBASE_RRECOMMENDS} glibc-gconv-iso8859-1"
+
+RRECOMMENDS:${PN} =3D "${GTKBASE_RRECOMMENDS}"
+RRECOMMENDS:${PN}:libc-glibc =3D "${GTKGLIBC_RRECOMMENDS}"
+RDEPENDS:${PN}-dev +=3D "${@bb.utils.contains("PACKAGECONFIG", "wayland"=
, "wayland-protocols", "", d)}"
+
+PACKAGES_DYNAMIC +=3D "^gtk4-printbackend-.*"
+python populate_packages:prepend () {
+ import os.path
+
+ gtk_libdir =3D d.expand('${libdir}/gtk-3.0/${LIBV}')
+ printmodules_root =3D os.path.join(gtk_libdir, 'printbackends');
+
+ do_split_packages(d, printmodules_root, r'^libprintbackend-(.*)\.so$=
', 'gtk4-printbackend-%s', 'GTK printbackend module for %s')
+
+ if (d.getVar('DEBIAN_NAMES')):
+ d.setVar(d.expand('PKG:${PN}'), '${MLPREFIX}libgtk-4.0')
+}
--=20
2.34.1