diff --git a/temp/geary/0001-Geary.Imap.FolderSession-Don-t-crash-on-empty-preview.patch b/temp/geary/0001-Geary.Imap.FolderSession-Don-t-crash-on-empty-preview.patch new file mode 100644 index 000000000..5dbd25535 --- /dev/null +++ b/temp/geary/0001-Geary.Imap.FolderSession-Don-t-crash-on-empty-preview.patch @@ -0,0 +1,55 @@ +From: =?utf-8?q?Guido_G=C3=BCnther?= +Date: Tue, 23 Feb 2021 19:33:35 +0100 +Subject: Geary.Imap.FolderSession: Don't crash on empty preview + +If we didn't set a preview we crash like + + *[wrn] 12:54:59.0908 geary:application-certificate-manager.vala:74: No GCR slot URIs found, GCR certificate pinning unavailable + *[wrn] 12:55:10.0501 Geary: [goa_account_1614080076_2] [imap] [GearyImapClientSession(selected:INBOX selected RW, GearyImapClientConnection(0001/imap.example.com:993/up)), Imap.Folder(>INBOX), ro: false, permanent_flags: \Answered \Flagged \* \Seen \Deleted \Draft, accepts_user_flags: true] GearyImapFolderSession: No preview specifiers "body.peek[1]<0.256>" and "body.peek[1.mime]" found + *[wrn] 12:55:10.0502 Geary: [goa_account_1614080076_2] [imap] [GearyImapClientSession(selected:INBOX selected RW, GearyImapClientConnection(0001/imap.example.com:993/up)), Imap.Folder(>INBOX), ro: false, permanent_flags: \Answered \Flagged \* \Seen \Deleted \Draft, accepts_user_flags: true] GearyImapFolderSession: - has body[1.mime] + *[wrn] 12:55:10.0502 Geary: [goa_account_1614080076_2] [imap] [GearyImapClientSession(selected:INBOX selected RW, GearyImapClientConnection(0001/imap.example.com:993/up)), Imap.Folder(>INBOX), ro: false, permanent_flags: \Answered \Flagged \* \Seen \Deleted \Draft, accepts_user_flags: true] GearyImapFolderSession: - has body[header.fields (references)] + *[wrn] 12:55:10.0502 Geary: [goa_account_1614080076_2] [imap] [GearyImapClientSession(selected:INBOX selected RW, GearyImapClientConnection(0001/imap.example.com:993/up)), Imap.Folder(>INBOX), ro: false, permanent_flags: \Answered \Flagged \* \Seen \Deleted \Draft, accepts_user_flags: true] GearyImapFolderSession: - has body[1]<0> + ![crt] 12:55:10.0502 GLib:Did not see expected message GLib-GObject-WARNING **: g_object_weak_unref: couldn't find weak ref * + ![crt] 12:55:10.0502 geary:geary_email_set_message_preview: assertion 'GEARY_RF_C822_IS_PREVIEW_TEXT (preview)' failed + + (gdb) bt + #0 __GI_raise (sig=sig@entry=5) at ../sysdeps/unix/sysv/linux/raise.c:50 + #1 0x0000ffff919a71d8 in _g_log_abort (breakpoint=1) at ../../../glib/gmessages.c:554 + #2 g_logvPython Exception Cannot access memory at address 0x8: + (log_domain=0xffff91f1d908 "geary", log_level=10, format=, args=#3 0x0000ffff919a7440 in g_log (log_domain=, log_level=, format=) + at ../../../glib/gmessages.c:1415 + #4 0x0000ffff91eabaf8 in geary_imap_folder_session_fetched_data_to_email + (error=0xffff11aeb2f0, preview_charset_specifier=0xaaaafe108120 [GearyImapFetchBodyDataSpecifier], preview_specifier=0xaaaafe0ec070 [GearyImapFetchBodyDataSpecifier], body_specifier=0x0, header_specifiers_length1=, header_specifiers=0x0, required_fields=927, fetched_data=, uid=0xaaaafe48de90 [GearyImapUID], self=0xaaaafe1059b0 [GearyImapFolderSession]) + at src/engine/libgeary-engine.a.p/imap/api/imap-folder-session.c:6795 + #5 __lambda103_ (error=0xffff11aeb360, _data28_=0xaaaafdf2d760) at src/engine/libgeary-engine.a.p/imap/api/imap-folder-session.c:4541 + #6 ___lambda103__geary_nonblocking_concurrent_concurrent_callback (cancellable=, self=0xaaaafdf2d760, error=0xffff11aeb360) at src/engine/libgeary-engine.a.p/imap/api/imap-folder-session.c:4640 + #7 0x0000ffff91e412d0 in geary_nonblocking_concurrent_concurrent_operation_execute (self=0xaaaafe48f6d0 [GearyNonblockingConcurrentConcurrentOperation]) + at src/engine/libgeary-engine.a.p/nonblocking/nonblocking-concurrent.c:672 + #8 geary_nonblocking_concurrent_on_work_ready (op=0xaaaafe48f6d0 [GearyNonblockingConcurrentConcurrentOperation], self=) + at src/engine/libgeary-engine.a.p/nonblocking/nonblocking-concurrent.c:501 + #9 _geary_nonblocking_concurrent_on_work_ready_gfunc (data=0xaaaafe48f6d0, self=) at src/engine/libgeary-engine.a.p/nonblocking/nonblocking-concurrent.c:296 + #10 0x0000ffff919ca3c8 in g_thread_pool_thread_proxy (data=) at ../../../glib/gthreadpool.c:354 + #11 0x0000ffff919c98f4 in g_thread_proxy (data=0xaaaafde2e120) at ../../../glib/gthread.c:820 + #12 0x0000ffff8b437628 in start_thread (arg=0xffff11aeb520) at pthread_create.c:477 + #13 0x0000ffff916a801c in thread_start () at ../sysdeps/unix/sysv/linux/aarch64/clone.S:78 + +Create an empty preview to avoid that. + +(cherry picked from commit b57567ff9eb746e71975cf1e2bbd8dcd9d62f0f1) +--- + src/engine/imap/api/imap-folder-session.vala | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/engine/imap/api/imap-folder-session.vala b/src/engine/imap/api/imap-folder-session.vala +index 3b777ee..bf4cd2b 100644 +--- a/src/engine/imap/api/imap-folder-session.vala ++++ b/src/engine/imap/api/imap-folder-session.vala +@@ -1037,7 +1037,7 @@ private class Geary.Imap.FolderSession : Geary.Imap.SessionObject { + preview_specifier + ); + +- RFC822.PreviewText? preview = null; ++ RFC822.PreviewText preview = new RFC822.PreviewText(new Memory.StringBuffer("")); + if (preview_headers != null && preview_headers.size > 0 && + preview_body != null && preview_body.size > 0) { + preview = new RFC822.PreviewText.with_header( diff --git a/temp/geary/0002-Bump-version-of-libhandy-to-1.0-in-order-to-fix-issu.patch b/temp/geary/0002-Bump-version-of-libhandy-to-1.0-in-order-to-fix-issu.patch new file mode 100644 index 000000000..005b6b75e --- /dev/null +++ b/temp/geary/0002-Bump-version-of-libhandy-to-1.0-in-order-to-fix-issu.patch @@ -0,0 +1,26 @@ +From 0475949ee1a41e3a2b24681c6799f584c508ca0d Mon Sep 17 00:00:00 2001 +From: Yuri Edward +Date: Sat, 9 Jan 2021 22:24:11 +0100 +Subject: [PATCH 1/3] Bump version of libhandy to 1.0 in order to fix issue + #305 + +--- + meson.build | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/meson.build b/meson.build +index 85f256e9..3f2772d8 100644 +--- a/meson.build ++++ b/meson.build +@@ -88,7 +88,7 @@ gthread = dependency('gthread-2.0', version: '>=' + target_glib) + iso_codes = dependency('iso-codes') + javascriptcoregtk = dependency('javascriptcoregtk-4.0', version: '>=' + target_webkit) + json_glib = dependency('json-glib-1.0', version: '>= 1.0') +-libhandy = dependency('libhandy-1', version: '>= 0.90') ++libhandy = dependency('libhandy-1', version: '>= 1.0') + libmath = cc.find_library('m') + libpeas = dependency('libpeas-1.0', version: '>= 1.24.0') + libpeas_gtk = dependency('libpeas-gtk-1.0', version: '>= 1.24.0') +-- +2.30.2 + diff --git a/temp/geary/0003-Removed-hack-workarround-for-libhandy-issue-305.patch b/temp/geary/0003-Removed-hack-workarround-for-libhandy-issue-305.patch new file mode 100644 index 000000000..d4966a721 --- /dev/null +++ b/temp/geary/0003-Removed-hack-workarround-for-libhandy-issue-305.patch @@ -0,0 +1,32 @@ +From b815ddf37030d7674a6cc5459af33d0bde4cf922 Mon Sep 17 00:00:00 2001 +From: Yuri Edward +Date: Sat, 9 Jan 2021 22:24:43 +0100 +Subject: [PATCH 2/3] Removed hack/workarround for libhandy issue #305 + +--- + src/client/application/application-client.vala | 9 --------- + 1 file changed, 9 deletions(-) + +diff --git a/src/client/application/application-client.vala b/src/client/application/application-client.vala +index 0bd704fc..85af509f 100644 +--- a/src/client/application/application-client.vala ++++ b/src/client/application/application-client.vala +@@ -935,15 +935,6 @@ public class Application.Client : Gtk.Application { + } + + private MainWindow new_main_window(bool select_first_inbox) { +- // Work around warning caused by GNOME/libhandy#305 which +- // makes it a pita to run with G_DEBUG=fatal-warnings. Remove +- // once the fix for that issue has been released and packaged. +- GLib.Test.expect_message( +- "GLib-GObject", +- LEVEL_WARNING, +- "g_object_weak_unref: couldn't find weak ref *" +- ); +- + MainWindow window = new MainWindow(this); + this.controller.register_window(window); + window.focus_in_event.connect(on_main_window_focus_in); +-- +2.30.2 + diff --git a/temp/geary/0004-Bumped-version-of-libhandy-to-1.0.1.patch b/temp/geary/0004-Bumped-version-of-libhandy-to-1.0.1.patch new file mode 100644 index 000000000..7b7f523ee --- /dev/null +++ b/temp/geary/0004-Bumped-version-of-libhandy-to-1.0.1.patch @@ -0,0 +1,25 @@ +From f31164cc9bd71a5ba613b2323a462a829dea83aa Mon Sep 17 00:00:00 2001 +From: Yuri Edward +Date: Sun, 10 Jan 2021 23:54:46 +0100 +Subject: [PATCH 3/3] Bumped version of libhandy to 1.0.1 + +--- + meson.build | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/meson.build b/meson.build +index 3f2772d8..2ce78816 100644 +--- a/meson.build ++++ b/meson.build +@@ -88,7 +88,7 @@ gthread = dependency('gthread-2.0', version: '>=' + target_glib) + iso_codes = dependency('iso-codes') + javascriptcoregtk = dependency('javascriptcoregtk-4.0', version: '>=' + target_webkit) + json_glib = dependency('json-glib-1.0', version: '>= 1.0') +-libhandy = dependency('libhandy-1', version: '>= 1.0') ++libhandy = dependency('libhandy-1', version: '>= 1.0.1') + libmath = cc.find_library('m') + libpeas = dependency('libpeas-1.0', version: '>= 1.24.0') + libpeas_gtk = dependency('libpeas-gtk-1.0', version: '>= 1.24.0') +-- +2.30.2 + diff --git a/temp/geary/0005-web-process-extension-register-GearyWebExtension-JS-in-the.patch b/temp/geary/0005-web-process-extension-register-GearyWebExtension-JS-in-the.patch new file mode 100644 index 000000000..fa2bbcbdc --- /dev/null +++ b/temp/geary/0005-web-process-extension-register-GearyWebExtension-JS-in-the.patch @@ -0,0 +1,100 @@ +From 6a0ad7218249e8f5b6ab13840ea973a8270bd4fb Mon Sep 17 00:00:00 2001 +From: Michael Catanzaro +Date: Thu, 4 Mar 2021 17:25:41 -0600 +Subject: [PATCH] web-process-extension: register GearyWebExtension JS in the + right place + +We need to register our JS when the window-object-cleared signal is +emitted. Previously we did this when the WebPage object is created, but +this only worked due to luck. Since WebKit r271642, it no longer works. +window-object-cleared is emitted right after page-created, meaning that +right after Geary registers its JS, it all gets wiped away. Oops. + +Fixes #1168 +--- + .../web-process/web-process-extension.vala | 57 ++++++++++--------- + 1 file changed, 31 insertions(+), 26 deletions(-) + +diff --git a/src/client/web-process/web-process-extension.vala b/src/client/web-process/web-process-extension.vala +index 6785903e0..5a7599e68 100644 +--- a/src/client/web-process/web-process-extension.vala ++++ b/src/client/web-process/web-process-extension.vala +@@ -48,6 +48,7 @@ public class GearyWebExtension : Object { + public GearyWebExtension(WebKit.WebExtension extension) { + this.extension = extension; + extension.page_created.connect(on_page_created); ++ WebKit.ScriptWorld.get_default().window_object_cleared.connect(on_window_object_cleared); + } + + private void on_console_message(WebKit.WebPage page, +@@ -134,32 +135,6 @@ public class GearyWebExtension : Object { + + private void on_page_created(WebKit.WebExtension extension, + WebKit.WebPage page) { +- WebKit.Frame frame = page.get_main_frame(); +- JSC.Context context = frame.get_js_context(); +- +- var extension_class = context.register_class( +- this.get_type().name(), +- null, +- null, +- null +- ); +- extension_class.add_method( +- EXTENSION_CLASS_SEND, +- (instance, values) => { +- return this.on_page_send_message(page, values); +- }, +- GLib.Type.NONE +- ); +- context.set_value( +- EXTENSION_CLASS_VAR, +- new JSC.Value.object(context, extension_class, extension_class) +- ); +- +- context.set_value( +- REMOTE_LOAD_VAR, +- new JSC.Value.boolean(context, false) +- ); +- + page.console_message_sent.connect(on_console_message); + page.send_request.connect(on_send_request); + page.user_message_received.connect(on_page_message_received); +@@ -269,4 +244,34 @@ public class GearyWebExtension : Object { + return true; + } + ++ private void on_window_object_cleared(WebKit.ScriptWorld world, ++ WebKit.WebPage page, ++ WebKit.Frame frame) ++ { ++ JSC.Context context = frame.get_js_context(); ++ ++ var extension_class = context.register_class( ++ this.get_type().name(), ++ null, ++ null, ++ null ++ ); ++ extension_class.add_method( ++ EXTENSION_CLASS_SEND, ++ (instance, values) => { ++ return this.on_page_send_message(page, values); ++ }, ++ GLib.Type.NONE ++ ); ++ context.set_value( ++ EXTENSION_CLASS_VAR, ++ new JSC.Value.object(context, extension_class, extension_class) ++ ); ++ ++ context.set_value( ++ REMOTE_LOAD_VAR, ++ new JSC.Value.boolean(context, false) ++ ); ++ } ++ + } +-- +GitLab + diff --git a/temp/geary/APKBUILD b/temp/geary/APKBUILD index 37b32fe71..98151e291 100644 --- a/temp/geary/APKBUILD +++ b/temp/geary/APKBUILD @@ -1,8 +1,10 @@ # Forked from Alpine to apply Purism's mobile patches pkgname=geary -pkgver=9999_git20201210 +pkgver=9999_git20210412 pkgrel=0 -_commit="dd971251d7fd85c7b73f2e153beef9939354cec7" +# https://source.puri.sm/Librem5/geary +# 3.38.2+git20210118+7bb025-0pureos3 +_commit="33d9c90f0846d15dd3f31880ac5b3ffaf0badf61" pkgdesc="Geary is an email application built around conversations" url="https://wiki.gnome.org/Apps/Geary" # libhandy is not available on s390x or mips @@ -30,6 +32,7 @@ makedepends=" libnotify-dev libpeas-dev libsecret-dev + libstemmer-dev libunwind-dev libxml2-dev meson @@ -45,19 +48,28 @@ checkdepends=" " options="!check" # https://gitlab.gnome.org/GNOME/geary/-/issues/776 subpackages="$pkgname-lang $pkgname-doc" -source="https://source.puri.sm/Librem5/geary/-/archive/$_commit/geary-$_commit.tar.gz" +source=" + https://source.puri.sm/Librem5/geary/-/archive/$_commit/geary-$_commit.tar.gz + 0001-Geary.Imap.FolderSession-Don-t-crash-on-empty-preview.patch + 0002-Bump-version-of-libhandy-to-1.0-in-order-to-fix-issu.patch + 0003-Removed-hack-workarround-for-libhandy-issue-305.patch + 0004-Bumped-version-of-libhandy-to-1.0.1.patch + 0005-web-process-extension-register-GearyWebExtension-JS-in-the.patch + purism_patches.series + $_commit.series::https://source.puri.sm/Librem5/geary/-/raw/$_commit/debian/patches/series + " builddir="$srcdir/$pkgname-$_commit" prepare() { + # NOTE: patches are kept in this repo, since they are no longer available in + # the tarball from purism's repo. This check will cause an error if the list + # of patches in purism's repo is different than the list in this repo. The + # list in this repo should be kept in sync when this package is upgrades! + if ! diff -q $srcdir/purism_patches.series $srcdir/$_commit.series; then + echo "Included patch list does not match patch list from $_commit" + exit 1 + fi default_prepare - # The branch of geary is from Purism's fork, which has all adaptive - # patches in the /debian dir in this branch for generating a debian - # package. There are dozens of patches, so we apply them here manually - # (the location is not compatible with what abuild expects for package - # patches). - # Patches have to be applied in the order they are listed in - # debian/pathes/series - grep "\.patch$" debian/patches/series |xargs -I {} -t -r -n1 patch -p1 -i debian/patches/{} } build() { @@ -76,4 +88,11 @@ package() { DESTDIR="$pkgdir" meson install --no-rebuild -C output } -sha512sums="f88317a690e8ea54572a3550738ccc1cec6f071e939c5cb857923c213db506ed16f249c980a2fc4a53af389ea5ebf001cfef60700623b7c9cc83f5baa79b3821 geary-dd971251d7fd85c7b73f2e153beef9939354cec7.tar.gz" +sha512sums="fc5bc6651113c9874c0118dd35e2c2994d13392fa1c50d0ce15495e31fc7c051c4c4dc639fd4a63db55d32c5ddd46c85c8e2c56c76be3c3a1c05453a5c12fdbf geary-33d9c90f0846d15dd3f31880ac5b3ffaf0badf61.tar.gz +c5ccfbf647ba145ae590611d94e4ded0ae3b5781372fd189bf40e7ed208ba4f309646b1807598dfab80f49c8a46b204953ac9affe4c5c2e3d70e9f3778a0ec7e 0001-Geary.Imap.FolderSession-Don-t-crash-on-empty-preview.patch +0db6b44e7a1a64ac96120f956d5e59ef73f9ca8b28a8797b309060e42e063586a8de076b84487729aa20337b8acf9cf0eb4d1ca5cf3bde5b866133ad5d026c40 0002-Bump-version-of-libhandy-to-1.0-in-order-to-fix-issu.patch +7ff94be3ea24e1685251f1bf4c89363991aa4936ffff95f8d6aef752a7854dc171b513340ecb31a729fa20efa0580107cf268daa134f010fb4eb7cb038f34e79 0003-Removed-hack-workarround-for-libhandy-issue-305.patch +4d77cf8273635493d7c0ede84eb0013a5cc0fc78c82eb32e97a1b5fcb966fea7641078e1cb10087639b835cf91cfc27fb1290f97ea301d5074e4dbbe5b120558 0004-Bumped-version-of-libhandy-to-1.0.1.patch +0ae3131b736f1530b0a07493a2bcb36eb41ced2cc60629509872949887ae1770936992c90914004d9c5900e32c88772a007a835bc49f8aaf6a6553ae2daa2ce7 0005-web-process-extension-register-GearyWebExtension-JS-in-the.patch +a540fba131de46eede657f83cd2d59a932aec094cd5f1861208eab94190fae2ed3320068e9267ece151336a30577b91bd3ae1850338f6f70b9a5e5c535cd53c0 purism_patches.series +a540fba131de46eede657f83cd2d59a932aec094cd5f1861208eab94190fae2ed3320068e9267ece151336a30577b91bd3ae1850338f6f70b9a5e5c535cd53c0 33d9c90f0846d15dd3f31880ac5b3ffaf0badf61.series" diff --git a/temp/geary/purism_patches.series b/temp/geary/purism_patches.series new file mode 100644 index 000000000..eb408ca83 --- /dev/null +++ b/temp/geary/purism_patches.series @@ -0,0 +1,6 @@ +pureos/backport/Geary.Imap.FolderSession-Don-t-crash-on-empty-preview.patch +pureos/backport/Bump-version-of-libhandy-to-1.0-in-order-to-fix-issu.patch +pureos/backport/Removed-hack-workarround-for-libhandy-issue-305.patch +pureos/backport/Bumped-version-of-libhandy-to-1.0.1.patch +pureos/mr/Geary.RFC822.Message-Handle-0-size-of-body-and-header-in-.patch +pureos/mr/tests-Use-longer-timeout-for-client-tests.patch