convey: add recipe

Convey is a fork of geary ported to GTK4, libadwaita, gcr-4 and
webkitgtk 6.0. The patches keep build paths out of the binary, drop
host checks that do not apply when cross-compiling and let the vala-unit
subproject find g-ir-compiler through the cross file.

AI-Generated: Uses Claude Code (Claude Fable 5.1)
Signed-off-by: Markus Volk <f_l_k@t-online.de>
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
This commit is contained in:
Markus Volk
2026-09-23 13:10:18 -07:00
committed by Khem Raj
parent 162f8c3370
commit de96bbd566
4 changed files with 172 additions and 0 deletions
@@ -0,0 +1,40 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Markus Volk <f_l_k@t-online.de>
Date: Tue, 22 Sep 2026 07:43:41 +0200
Subject: [PATCH] meson: do not store build paths in the binary
The build root and source root are only used when convey runs
uninstalled, but storing them puts TMPDIR into the binary and breaks
reproducibility. Point them to /usr/src and the schema directory to the
installed location instead.
AI-Generated: Uses Claude Code (Claude Fable 5.1)
Upstream-Status: Inappropriate [oe-specific]
---
src/meson.build | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/src/meson.build b/src/meson.build
index 87690ada..ce722126 100644
--- a/src/meson.build
+++ b/src/meson.build
@@ -4,8 +4,8 @@ conf = configuration_data()
conf.set_quoted('GETTEXT_PACKAGE', meson.project_name())
conf.set_quoted('G_LOG_DOMAIN', meson.project_name())
conf.set_quoted('APP_ID', convey_id)
-conf.set_quoted('BUILD_ROOT_DIR', meson.project_build_root())
-conf.set_quoted('GSETTINGS_DIR', meson.project_build_root() / 'desktop')
+conf.set_quoted('BUILD_ROOT_DIR', '/usr/src')
+conf.set_quoted('GSETTINGS_DIR', data_dir / 'glib-2.0' / 'schemas')
conf.set_quoted('INSTALL_PREFIX', convey_prefix)
conf.set_quoted('ISO_CODE_3166_XML', iso_3166_xml)
conf.set_quoted('ISO_CODE_639_XML', iso_639_xml)
@@ -14,7 +14,7 @@ conf.set_quoted('NAME_SUFFIX', name_suffix)
conf.set_quoted('PLUGINS_DIR', plugins_dir)
conf.set_quoted('PROFILE', profile)
conf.set_quoted('REVNO', revno)
-conf.set_quoted('SOURCE_ROOT_DIR', meson.project_source_root())
+conf.set_quoted('SOURCE_ROOT_DIR', '/usr/src')
conf.set_quoted('VERSION', convey_version)
conf.set_quoted('WEB_EXTENSIONS_DIR', web_extensions_dir)
config_h = configure_file(output: 'config.h', configuration: conf)
@@ -0,0 +1,39 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Markus Volk <f_l_k@t-online.de>
Date: Tue, 22 Sep 2026 09:15:56 +0200
Subject: [PATCH] meson: do not check for the iso xml files and the C.utf8
locale during build
The iso xml files are needed at runtime and live in the staging area
when cross-compiling, and the locale check runs the host's locale
command against the host's locales. Neither says anything about the
target, so drop both build-time checks.
AI-Generated: Uses Claude Code (Claude Fable 5.1)
Upstream-Status: Pending
---
meson.build | 11 -----------
1 file changed, 11 deletions(-)
diff --git a/meson.build b/meson.build
index dfd919a7..51ab9015 100644
--- a/meson.build
+++ b/meson.build
@@ -195,17 +195,6 @@ if iso_3166_xml == ''
iso_3166_xml = iso_codes_dir / 'iso_3166.xml'
endif
-files(iso_639_xml, iso_3166_xml) # Check to make sure these exist
-
-# Make sure the locale C.UTF-8 is installed on the system
-
-c_utf8_check = run_command('locale', '-a', check: true).stdout()
-have_c_utf8 = 'C.utf8' in c_utf8_check.split('\n')
-
-if not have_c_utf8
- warning('C.utf8 locale not available on this system.')
-endif
-
# Post-install script
gnome.post_install(
gtk_update_icon_cache: true,
@@ -0,0 +1,34 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Markus Volk <f_l_k@t-online.de>
Date: Tue, 22 Sep 2026 09:15:10 +0200
Subject: [PATCH] vala-unit: look up g-ir-compiler with find_program
The path taken from the g_ir_compiler pkg-config variable is the
target path and is not usable when cross-compiling. find_program
honours the cross file, which is where the wrapper is set.
AI-Generated: Uses Claude Code (Claude Fable 5.1)
Upstream-Status: Pending
---
subprojects/vala-unit/meson.build | 8 +-------
1 file changed, 1 insertion(+), 7 deletions(-)
diff --git a/subprojects/vala-unit/meson.build b/subprojects/vala-unit/meson.build
index a1822aa8..d04cc307 100644
--- a/subprojects/vala-unit/meson.build
+++ b/subprojects/vala-unit/meson.build
@@ -31,13 +31,7 @@ gee = dependency('gee-0.8')
gio = dependency('gio-2.0')
glib = dependency('glib-2.0', version: '>=' + target_glib)
gobject = dependency('gobject-2.0')
-gobject_introspection = dependency('gobject-introspection-1.0', required: false)
-
-if gobject_introspection.found()
- g_ir_compiler = gobject_introspection.get_variable('g_ir_compiler')
-else
- g_ir_compiler = find_program('g-ir-compiler')
-endif
+g_ir_compiler = find_program('g-ir-compiler')
if enable_valadoc
valadoc = find_program('valadoc')
endif
@@ -0,0 +1,59 @@
SUMMARY = "Email application built around conversations for the GNOME desktop"
HOMEPAGE = "https://gitlab.gnome.org/donnybeelo/convey"
SECTION = "network"
LICENSE = "LGPL-2.1-only"
LIC_FILES_CHKSUM = "file://COPYING;md5=2a2244d5a13871ad950c55877546a6a2"
DEPENDS = " \
appstream-native \
cairo \
desktop-file-utils-native \
enchant2 \
folks \
gcr \
gmime \
gnome-online-accounts \
gstreamer1.0 \
gstreamer1.0-plugins-bad \
gtk4 \
icu \
iso-codes \
json-glib \
libadwaita \
libpeas \
libsecret \
libsoup \
libstemmer \
libxml2 \
sqlite3 \
webkitgtk \
"
inherit meson pkgconfig mime-xdg gsettings gtk-icon-cache gobject-introspection gnome-help vala features_check
SRC_URI = " \
git://gitlab.gnome.org/donnybeelo/convey.git;protocol=https;branch=main;tag=${PV}-1 \
file://0001-meson-do-not-store-build-paths-in-the-binary.patch \
file://0002-meson-do-not-check-for-the-iso-xml-files-and-the-C.u.patch \
file://0003-vala-unit-look-up-g-ir-compiler-with-find_program.patch \
"
SRCREV = "2a0b661bf1d7fde57b6dfcb7e09ce33d7b4b9f42"
REQUIRED_DISTRO_FEATURES = "gobject-introspection-data opengl"
GTKIC_VERSION = "4"
GIR_MESON_OPTION = ""
EXTRA_OEMESON = " \
-Dprofile=release \
-Drevno=${PV} \
-Diso_639_xml=${datadir}/xml/iso-codes/iso_639.xml \
-Diso_3166_xml=${datadir}/xml/iso-codes/iso_3166.xml \
-Dvaladoc=disabled \
"
PACKAGECONFIG ??= ""
PACKAGECONFIG[libunwind] = "-Dlibunwind=enabled,-Dlibunwind=disabled,libunwind"
PACKAGECONFIG[tnef] = "-Dtnef=enabled,-Dtnef=disabled,libytnef"
FILES:${PN} += "${datadir}"