[PATCHv2] gcr: add recipe for gcr-4, needed to build with gtk4


Markus Volk
 

Am Mo, 28. Nov 2022 um 14:13:36 +0100 schrieb Alexander Kanavin <alex.kanavin@...>:
We have plenty of options everywhere that are disabled specifically because there is no easy way to activate them.

Fair enough. I've sent a v3 that completely removes the ssh_agent settings and includes your patch


Alexander Kanavin
 

It won’t if you add the patch. I have tested that:

We have plenty of options everywhere that are disabled specifically because there is no easy way to activate them. There is no promise to fulfil requirements for every upstream option out there.

If you feel that this one in particular fulfills an important use case then you need to add a patch that allows setting the location of ssh items with meson options and submit it upstream.

Alex

On Mon 28. Nov 2022 at 13.07, Markus Volk <f_l_k@...> wrote:
Am Mo, 28. Nov 2022 um 12:45:54 +0100 schrieb Alexander Kanavin <alex.kanavin@...>:
For gcr I suppose we can just disable the ssh stuff if it's not strictly required.

I've noticed that you sent a patch to gcr that would fix it but 4.0.0 will presumably still search for the external ssh programs even if ssh_agent is disabled.

It's an optional feature, but not being able to activate it feels like a hack as well to me.


Markus Volk
 

Am Mo, 28. Nov 2022 um 12:45:54 +0100 schrieb Alexander Kanavin <alex.kanavin@...>:
For gcr I suppose we can just disable the ssh stuff if it's not strictly required.

I've noticed that you sent a patch to gcr that would fix it but 4.0.0 will presumably still search for the external ssh programs even if ssh_agent is disabled.

It's an optional feature, but not being able to activate it feels like a hack as well to me.


Alexander Kanavin
 

For gcr I suppose we can just disable the ssh stuff if it's not
strictly required.

Alex

On Mon, 28 Nov 2022 at 12:42, Markus Volk <f_l_k@...> wrote:

Am Mo, 28. Nov 2022 um 12:28:31 +0100 schrieb Alexander Kanavin <alex.kanavin@...>:

This needs to be explained. And we need to find a better way to do it, preferably one that is acceptable upstream.


Now thats somehow problematic. I had this issue also with seahorse, that wants to know at build time what targets ssh-keygen path would be. We need a way to look for the targets ssh binary paths but since openssh for whatever reason doesn't support pkgconfig i guess we are forced to hack it.
Another possibility would be to add an openssh-native recipe. I sent a patch for that but it was rejected for valid reasons.


Markus Volk
 

Am Mo, 28. Nov 2022 um 12:28:31 +0100 schrieb Alexander Kanavin <alex.kanavin@...>:
This needs to be explained. And we need to find a better way to do it, preferably one that is acceptable upstream.

Now thats somehow problematic. I had this issue also with seahorse, that wants to know at build time what targets ssh-keygen path would be. We need a way to look for the targets ssh binary paths but since openssh for whatever reason doesn't  support pkgconfig i guess we are forced to hack it.
Another possibility would be to add an openssh-native recipe. I sent a patch for that but it was rejected for valid reasons.  


Alexander Kanavin
 

Ah is it the same issue? Then please backport.
https://gitlab.gnome.org/GNOME/gcr/-/merge_requests/114

Alex

On Mon, 28 Nov 2022 at 12:28, Alexander Kanavin via
lists.openembedded.org <alex.kanavin=gmail.com@...>
wrote:


On Mon, 28 Nov 2022 at 12:22, Markus Volk <f_l_k@...> wrote:

+do_configure:prepend() {
+ sed -i "s|ssh_add_path = find_program('ssh-add', required: get_option('ssh_agent')).full_path()|ssh_add_path = '${bindir}/ssh-add'|" ${S}/meson.build
+ sed -i "s|ssh_agent_path = find_program('ssh-agent', required: get_option('ssh_agent')).full_path()|ssh_agent_path = '${bindir}/ssh-agent'|" ${S}/meson.build
+}
This needs to be explained. And we need to find a better way to do it,
preferably one that is acceptable upstream.

Alex



Alexander Kanavin
 

On Mon, 28 Nov 2022 at 12:22, Markus Volk <f_l_k@...> wrote:

+do_configure:prepend() {
+ sed -i "s|ssh_add_path = find_program('ssh-add', required: get_option('ssh_agent')).full_path()|ssh_add_path = '${bindir}/ssh-add'|" ${S}/meson.build
+ sed -i "s|ssh_agent_path = find_program('ssh-agent', required: get_option('ssh_agent')).full_path()|ssh_agent_path = '${bindir}/ssh-agent'|" ${S}/meson.build
+}
This needs to be explained. And we need to find a better way to do it,
preferably one that is acceptable upstream.

Alex


Markus Volk
 

libsecret dependency has been moved to PACKAGECONFIG since its only needed for the 'ssh_agent'

added the ssh_agent service files to FILES:${PN} to avoid an error if ssh_agent PACKAGECONFIG is selected:

ERROR: gcr-4.0.0-r0 do_package: QA Issue: gcr: Files/directories were installed but not shipped in any package:
  /usr/lib/systemd
  /usr/lib/systemd/user
  /usr/lib/systemd/user/gcr-ssh-agent.socket
  /usr/lib/systemd/user/gcr-ssh-agent.service


Am Mo, 28. Nov 2022 um 12:22:32 +0100 schrieb Markus Volk <f_l_k@...>:

gcr-3 recipe is still needed for gnome projects that stick to gtk+3, rename to gcr3. Signed-off-by: Markus Volk <f_l_k@...> --- ...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 | 58 +++++++++++++++++++ 4 files changed, 64 insertions(+), 2 deletions(-) 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 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..4dede60544 --- /dev/null +++ b/meta/recipes-gnome/gcr/gcr_4.0.0.bb @@ -0,0 +1,58 @@ +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[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_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 += "--cross-file ${WORKDIR}/meson-${PN}.cross" +do_write_config:append() { + cat >${WORKDIR}/meson-${PN}.cross <<EOF +[binaries] +gpg2 = '${bindir}/gpg2' +EOF +} + +do_configure:prepend() { + sed -i "s|ssh_add_path = find_program('ssh-add', required: get_option('ssh_agent')).full_path()|ssh_add_path = '${bindir}/ssh-add'|" ${S}/meson.build + sed -i "s|ssh_agent_path = find_program('ssh-agent', required: get_option('ssh_agent')).full_path()|ssh_agent_path = '${bindir}/ssh-agent'|" ${S}/meson.build +}
--
2.34.1


Markus Volk
 

gcr-3 recipe is still needed for gnome projects that stick to gtk+3, rena=
me to gcr3.

Signed-off-by: Markus Volk <f_l_k@...>
---
...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 | 58 +++++++++++++++++++
4 files changed, 64 insertions(+), 2 deletions(-)
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

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..4dede60544
--- /dev/null
+++ b/meta/recipes-gnome/gcr/gcr_4.0.0.bb
@@ -0,0 +1,58 @@
+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[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_agent=3Dfalse,lib=
secret,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 "--cross-file ${WORKDIR}/meson-${PN}.cross"
+do_write_config:append() {
+ cat >${WORKDIR}/meson-${PN}.cross <<EOF
+[binaries]
+gpg2 =3D '${bindir}/gpg2'
+EOF
+}
+
+do_configure:prepend() {
+ sed -i "s|ssh_add_path =3D find_program('ssh-add', required: get_opt=
ion('ssh_agent')).full_path()|ssh_add_path =3D '${bindir}/ssh-add'|" ${S}=
/meson.build
+ sed -i "s|ssh_agent_path =3D find_program('ssh-agent', required: get=
_option('ssh_agent')).full_path()|ssh_agent_path =3D '${bindir}/ssh-agent=
'|" ${S}/meson.build
+}
--=20
2.34.1


Alexander Kanavin
 

I would suggest that gtk4 is moved to core. The time has come.

Alex

On Sun 27. Nov 2022 at 20.38, Markus Volk <f_l_k@...> wrote:
Am So, 27. Nov 2022 um 20:11:34 +0100 schrieb Alexandre Belloni via lists.openembedded.org <alexandre.belloni=bootlin.com@...>:
stdio: WARNING: Nothing PROVIDES 'gtk4' (but /home/pokybuild/yocto-worker/a-full/build/meta/recipes-gnome/gcr/gcr_4.0.0.bb DEPENDS on or otherwise requires it)

mmh, i guess possible solutions would be to move either gtk4 to oe-core or gcr4 to meta-gnome




Markus Volk
 

Am So, 27. Nov 2022 um 20:11:34 +0100 schrieb Alexandre Belloni via lists.openembedded.org <alexandre.belloni=bootlin.com@...>:
stdio: WARNING: Nothing PROVIDES 'gtk4' (but /home/pokybuild/yocto-worker/a-full/build/meta/recipes-gnome/gcr/gcr_4.0.0.bb DEPENDS on or otherwise requires it)

mmh, i guess possible solutions would be to move either gtk4 to oe-core or gcr4 to meta-gnome


Alexandre Belloni
 

Hello,

This causes:

stdio: WARNING: Nothing PROVIDES 'gtk4' (but /home/pokybuild/yocto-worker/a-full/build/meta/recipes-gnome/gcr/gcr_4.0.0.bb DEPENDS on or otherwise requires it)
stdio: WARNING: Nothing RPROVIDES 'gcr' (but /home/pokybuild/yocto-worker/a-full/build/meta/recipes-gnome/gcr/gcr_4.0.0.bb RDEPENDS on or otherwise requires it)
stdio: WARNING: Nothing RPROVIDES 'gcr-dev' (but /home/pokybuild/yocto-worker/a-full/build/meta/recipes-gnome/gcr/gcr_4.0.0.bb RDEPENDS on or otherwise requires it)

On 27/11/2022 13:27:44+0100, Markus Volk wrote:
gcr-3 recipe is still needed for gnome projects that stick to gtk+3, rename to gcr3.

Signed-off-by: Markus Volk <f_l_k@...>
---
...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 | 56 +++++++++++++++++++
4 files changed, 62 insertions(+), 2 deletions(-)
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

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..fafc85e6a3
--- /dev/null
+++ b/meta/recipes-gnome/gcr/gcr_4.0.0.bb
@@ -0,0 +1,56 @@
+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 libsecret \
+ ${@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[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_agent=false,,openssh"
+#'Use systemd socket activation for server programs'
+PACKAGECONFIG[systemd] = "-Dsystemd=enabled,-Dsystemd=disabled,systemd"
+
+FILES:${PN} += " \
+ ${datadir}/dbus-1 \
+ ${datadir}/gcr-4 \
+"
+
+# http://errors.yoctoproject.org/Errors/Details/20229/
+ARM_INSTRUCTION_SET:armv4 = "arm"
+ARM_INSTRUCTION_SET:armv5 = "arm"
+ARM_INSTRUCTION_SET:armv6 = "arm"
+
+EXTRA_OEMESON += "--cross-file ${WORKDIR}/meson-${PN}.cross"
+do_write_config:append() {
+ cat >${WORKDIR}/meson-${PN}.cross <<EOF
+[binaries]
+gpg2 = '${bindir}/gpg2'
+EOF
+}
+
+do_configure:prepend() {
+ sed -i "s|ssh_add_path = find_program('ssh-add', required: get_option('ssh_agent')).full_path()|ssh_add_path = '${bindir}/ssh-add'|" ${S}/meson.build
+ sed -i "s|ssh_agent_path = find_program('ssh-agent', required: get_option('ssh_agent')).full_path()|ssh_agent_path = '${bindir}/ssh-agent'|" ${S}/meson.build
+}
--
2.34.1


--
Alexandre Belloni, co-owner and COO, Bootlin
Embedded Linux and Kernel engineering
https://bootlin.com


Markus Volk
 

gcr-3 recipe is still needed for gnome projects that stick to gtk+3, rena=
me to gcr3.

Signed-off-by: Markus Volk <f_l_k@...>
---
...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 | 56 +++++++++++++++++++
4 files changed, 62 insertions(+), 2 deletions(-)
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

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..fafc85e6a3
--- /dev/null
+++ b/meta/recipes-gnome/gcr/gcr_4.0.0.bb
@@ -0,0 +1,56 @@
+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 libsecret \
+ ${@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[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_agent=3Dfalse,,op=
enssh"
+#'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 \
+"
+
+# 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 "--cross-file ${WORKDIR}/meson-${PN}.cross"
+do_write_config:append() {
+ cat >${WORKDIR}/meson-${PN}.cross <<EOF
+[binaries]
+gpg2 =3D '${bindir}/gpg2'
+EOF
+}
+
+do_configure:prepend() {
+ sed -i "s|ssh_add_path =3D find_program('ssh-add', required: get_opt=
ion('ssh_agent')).full_path()|ssh_add_path =3D '${bindir}/ssh-add'|" ${S}=
/meson.build
+ sed -i "s|ssh_agent_path =3D find_program('ssh-agent', required: get=
_option('ssh_agent')).full_path()|ssh_agent_path =3D '${bindir}/ssh-agent=
'|" ${S}/meson.build
+}
--=20
2.34.1