i'm attaching my current WIP diff while i was trying to debug this.
note that in my original submission there was a substitute for @gschemasCompiled@ (
https://issues.guix.gnu.org/53072),but it did not reach master when it got pushed (https://git.savannah.gnu.org/cgit/guix.git/commit/gnu/packages/gnome-xyz.scm?id=a485e1e663060e8c62103d81dfffec591f624360).
i tried to reinstate the substitute, as you can see below, but it does not fix the new crash. i added some asserts, even sure-to-fail ones, and that code path seems not yet reached when the sigsegv already happens.
i'm out of ideas, and certainly out of my glib knowledge.
----
2 files changed, 11 insertions(+), 5 deletions(-)
gnu/packages/gnome-xyz.scm | 12 ++++++++----
gnu/packages/patches/gpaste-fix-paths.patch | 4 +++-
modified gnu/packages/gnome-xyz.scm
@@ -819,7 +819,7 @@ (define-public gnome-shell-extension-paperwm
(define-public gpaste
(package
(name "gpaste")
- (version "42.1")
+ (version "42.2")
(source (origin
(method git-fetch)
(uri (git-reference
@@ -828,12 +828,13 @@ (define-public gpaste
(file-name (git-file-name name version))
(sha256
(base32
- "1dlqa69zvzzdxyh21qfrx2nhpfy0fbihxpgkxqmramcgv3h5k4q3"))
+ "0qq2p19p3r3lz8yfynpnf36cipv54bzdbmq1x5zgwhyl4yl41g28"))
(patches
(search-patches "gpaste-fix-paths.patch"))))
(build-system meson-build-system)
(native-inputs
- (list gettext-minimal
+ (list gcr
+ gettext-minimal
gobject-introspection
(list glib "bin") ; for glib-compile-resources
pkg-config
@@ -862,7 +863,10 @@ (define-public gpaste
(substitute* '("src/gnome-shell/extension.js"
"src/gnome-shell/prefs.js")
(("@typelibPath@")
- (string-append #$output "/lib/girepository-1.0/"))))))))
+ (string-append #$output "/lib/girepository-1.0/")))
+ (substitute* '("src/libgpaste/gpaste/gpaste-settings.c")
+ (("@gschemasCompiled@")
+ (string-append #$output "/share/glib-2.0/schemas/"))))))))
(synopsis "Clipboard management system for GNOME Shell")
(description "GPaste is a clipboard manager, a tool which allows you to
modified gnu/packages/patches/gpaste-fix-paths.patch
@@ -30,14 +30,16 @@ diff --git a/src/libgpaste/gpaste/gpaste-settings.c b/src/libgpaste/gpaste/gpast
index 7e53eb64..57c399fc 100644
--- a/src/libgpaste/gpaste/gpaste-settings.c
+++ b/src/libgpaste/gpaste/gpaste-settings.c
-@@ -1013,7 +1013,11 @@ create_g_settings (void)
+@@ -1013,7 +1013,13 @@ create_g_settings (void)
}
else
{
- return g_settings_new (G_PASTE_SETTINGS_NAME);
+ // library used by introspection requires schemas but we cannot set XDG_DATA_DIRS for the library
+ GSettingsSchemaSource *schema_source = g_settings_schema_source_new_from_directory ("@gschemasCompiled@", NULL, FALSE, NULL);
++ g_assert (schema_source);
+ g_autoptr (GSettingsSchema) schema = g_settings_schema_source_lookup (schema_source, G_PASTE_SETTINGS_NAME, FALSE);
++ g_assert (schema);
+ g_settings_schema_source_unref (schema_source);
+ return g_settings_new_full (schema, NULL, NULL);
}