me
/
guix
Archived
1
0
Fork 0

gnu: appstream: Load stemmer in all circumstances.

If the default stemmer language is computed to be "en", such as in a Guix
build container, then the stemmer would not be loaded.

* gnu/packages/patches/appstream-load-stemmer-early.patch: New patch.
* gnu/local.mk (dist_patch_DATA): Register it here.
* gnu/packages/freedesktop.scm (appstream) [patches]: Use it here.
[#:phases]<disable-failing-tests>: Remove.

Change-Id: Iddd6ce5887247df46f670c49f9efc66772c82ff0
Signed-off-by: Liliana Marie Prikler <liliana.prikler@gmail.com>
master
Vivien Kraus 2023-11-16 00:12:44 +01:00 committed by Liliana Marie Prikler
parent 93fd21717f
commit 7b95445865
No known key found for this signature in database
GPG Key ID: 442A84B8C70E2F87
3 changed files with 93 additions and 6 deletions

View File

@ -918,6 +918,7 @@ dist_patch_DATA = \
%D%/packages/patches/antlr3-3_1-fix-java8-compilation.patch \
%D%/packages/patches/antlr3-3_3-fix-java8-compilation.patch \
%D%/packages/patches/aoflagger-use-system-provided-pybind11.patch \
%D%/packages/patches/appstream-force-reload-stemmer.patch \
%D%/packages/patches/apr-fix-atomics.patch \
%D%/packages/patches/apr-skip-getservbyname-test.patch \
%D%/packages/patches/ark-skip-xar-test.patch \

View File

@ -148,7 +148,9 @@
"appstream/releases/"
"AppStream-" version ".tar.xz"))
(sha256
(base32 "1val1b3dggn9g33q2r9q7wsl75a64x4lcvswvkcjjbvakkbj5xyl"))))
(base32 "1val1b3dggn9g33q2r9q7wsl75a64x4lcvswvkcjjbvakkbj5xyl"))
(patches
(search-patches "appstream-force-reload-stemmer.patch"))))
(build-system meson-build-system)
(arguments
(list
@ -163,11 +165,6 @@
(substitute* "meson.build"
(("/usr/include")
(dirname libstemmer.h))))))
(add-after 'unpack 'disable-failing-tests
(lambda _
(substitute* "tests/test-pool.c"
(("[ \t]*g_test_add_func \\(\"/AppStream/Stemming.*;")
""))))
(add-before 'check 'check-setup
(lambda _
(setenv "HOME" (getcwd)))))))

View File

@ -0,0 +1,89 @@
From 32182d7a7a67d0d204cd0a37bd211bfd0177bc27 Mon Sep 17 00:00:00 2001
Message-ID: <32182d7a7a67d0d204cd0a37bd211bfd0177bc27.1700093066.git.vivien@planete-kraus.eu>
From: Matthias Klumpp <matthias@tenstral.net>
Date: Thu, 16 Nov 2023 00:59:15 +0100
Subject: [PATCH] stemmer: Resolve potential issue where stemmer may never be
initialized
If the initial locale was equal to the current stemming language, we may
never have initialized the stemmer (which could lead to crashes or
stemming being disabled).
So we force the reload to always happen on initialization.
CC: #558
---
src/as-stemmer.c | 33 +++++++++++++++++++++------------
1 file changed, 21 insertions(+), 12 deletions(-)
diff --git a/src/as-stemmer.c b/src/as-stemmer.c
index 63d45267..16ebd09b 100644
--- a/src/as-stemmer.c
+++ b/src/as-stemmer.c
@@ -47,6 +47,8 @@ G_DEFINE_TYPE (AsStemmer, as_stemmer, G_TYPE_OBJECT)
static gpointer as_stemmer_object = NULL;
+static void as_stemmer_reload_internal (AsStemmer *stemmer, const gchar *locale, gboolean force);
+
/**
* as_stemmer_finalize:
**/
@@ -76,21 +78,14 @@ as_stemmer_init (AsStemmer *stemmer)
/* we don't use the locale in XML, so it can be POSIX */
locale = as_get_current_locale_posix ();
- stemmer->current_lang = as_utils_locale_to_language (locale);
- as_stemmer_reload (stemmer, stemmer->current_lang);
+ /* force a reload for initialization */
+ as_stemmer_reload_internal (stemmer, locale, TRUE);
#endif
}
-/**
- * as_stemmer_reload:
- * @stemmer: A #AsStemmer
- * @locale: The stemming language as POSIX locale.
- *
- * Allows realoading the #AsStemmer with a different language.
- */
-void
-as_stemmer_reload (AsStemmer *stemmer, const gchar *locale)
+static void
+as_stemmer_reload_internal (AsStemmer *stemmer, const gchar *locale, gboolean force)
{
#ifdef HAVE_STEMMING
g_autofree gchar *lang = NULL;
@@ -99,7 +94,7 @@ as_stemmer_reload (AsStemmer *stemmer, const gchar *locale)
/* check if we need to reload */
lang = as_utils_locale_to_language (locale);
locker = g_mutex_locker_new (&stemmer->mutex);
- if (as_str_equal0 (lang, stemmer->current_lang)) {
+ if (!force && as_str_equal0 (lang, stemmer->current_lang)) {
g_mutex_locker_free (locker);
return;
}
@@ -119,6 +114,20 @@ as_stemmer_reload (AsStemmer *stemmer, const gchar *locale)
#endif
}
+/**
+ * as_stemmer_reload:
+ * @stemmer: A #AsStemmer
+ * @locale: The stemming language as POSIX locale.
+ *
+ * Allows realoading the #AsStemmer with a different language.
+ * Does nothing if the stemmer is already using the selected language.
+ */
+void
+as_stemmer_reload (AsStemmer *stemmer, const gchar *locale)
+{
+ as_stemmer_reload_internal (stemmer, locale, FALSE);
+}
+
/**
* as_stemmer_stem:
* @stemmer: A #AsStemmer
--
2.41.0