diff options
| -rw-r--r-- | meta-gnome/recipes-gnome/gnome-software/gnome-software/0655f358ed0e8455e12d9634f60bc4dbaee434e3.patch | 504 | ||||
| -rw-r--r-- | meta-gnome/recipes-gnome/gnome-software/gnome-software/e431ab003f3fabf616b6eb7dc93f8967bc9473e5.patch | 31 | ||||
| -rw-r--r-- | meta-gnome/recipes-gnome/gnome-software/gnome-software_45.2.bb (renamed from meta-gnome/recipes-gnome/gnome-software/gnome-software_45.1.bb) | 6 |
3 files changed, 540 insertions, 1 deletions
diff --git a/meta-gnome/recipes-gnome/gnome-software/gnome-software/0655f358ed0e8455e12d9634f60bc4dbaee434e3.patch b/meta-gnome/recipes-gnome/gnome-software/gnome-software/0655f358ed0e8455e12d9634f60bc4dbaee434e3.patch new file mode 100644 index 0000000000..5e051be15a --- /dev/null +++ b/meta-gnome/recipes-gnome/gnome-software/gnome-software/0655f358ed0e8455e12d9634f60bc4dbaee434e3.patch | |||
| @@ -0,0 +1,504 @@ | |||
| 1 | From 0655f358ed0e8455e12d9634f60bc4dbaee434e3 Mon Sep 17 00:00:00 2001 | ||
| 2 | From: Matthias Klumpp <matthias@tenstral.net> | ||
| 3 | Date: Sun, 8 Oct 2023 20:22:44 +0200 | ||
| 4 | Subject: [PATCH] Adjust to build with AppStream 1.0 as well as 0.16.x | ||
| 5 | |||
| 6 | Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/gnome-software/-/commit/0655f358ed0e8455e12d9634f60bc4dbaee434e3] | ||
| 7 | --- | ||
| 8 | lib/gs-app.c | 4 ++ | ||
| 9 | lib/gs-appstream.c | 61 +++++++++++++++++++----- | ||
| 10 | lib/gs-utils.c | 8 ++-- | ||
| 11 | meson.build | 22 +-------- | ||
| 12 | plugins/core/gs-plugin-appstream.c | 8 ---- | ||
| 13 | plugins/fwupd/gs-fwupd-app.c | 8 ++++ | ||
| 14 | plugins/fwupd/gs-plugin-fwupd.c | 4 ++ | ||
| 15 | src/gs-hardware-support-context-dialog.c | 6 +++ | ||
| 16 | src/gs-repos-dialog.c | 4 ++ | ||
| 17 | src/gs-screenshot-carousel.c | 4 +- | ||
| 18 | src/gs-screenshot-image.c | 41 ++++++++++++---- | ||
| 19 | src/gs-screenshot-image.h | 7 +++ | ||
| 20 | subprojects/appstream.wrap | 2 +- | ||
| 21 | 13 files changed, 122 insertions(+), 57 deletions(-) | ||
| 22 | |||
| 23 | diff --git a/lib/gs-app.c b/lib/gs-app.c | ||
| 24 | index 2308de504d..ea348f8c01 100644 | ||
| 25 | --- a/lib/gs-app.c | ||
| 26 | +++ b/lib/gs-app.c | ||
| 27 | @@ -609,7 +609,11 @@ gs_app_to_string_append (GsApp *app, GString *str) | ||
| 28 | AsScreenshot *ss = g_ptr_array_index (priv->screenshots, i); | ||
| 29 | g_autofree gchar *key = NULL; | ||
| 30 | tmp = as_screenshot_get_caption (ss); | ||
| 31 | +#if AS_CHECK_VERSION(1, 0, 0) | ||
| 32 | + im = as_screenshot_get_image (ss, 0, 0, 1); | ||
| 33 | +#else | ||
| 34 | im = as_screenshot_get_image (ss, 0, 0); | ||
| 35 | +#endif | ||
| 36 | if (im == NULL) | ||
| 37 | continue; | ||
| 38 | key = g_strdup_printf ("screenshot-%02u", i); | ||
| 39 | diff --git a/lib/gs-appstream.c b/lib/gs-appstream.c | ||
| 40 | index deca176dcf..6504d6f25e 100644 | ||
| 41 | --- a/lib/gs-appstream.c | ||
| 42 | +++ b/lib/gs-appstream.c | ||
| 43 | @@ -1011,8 +1011,11 @@ gs_appstream_refine_app_relation (GsApp *app, | ||
| 44 | as_relation_set_item_kind (relation, AS_RELATION_ITEM_KIND_CONTROL); | ||
| 45 | as_relation_set_value_control_kind (relation, as_control_kind_from_string (xb_node_get_text (child))); | ||
| 46 | } else if (g_str_equal (item_kind, "display_length")) { | ||
| 47 | - AsDisplayLengthKind display_length_kind; | ||
| 48 | const gchar *compare; | ||
| 49 | + const gchar *side; | ||
| 50 | +#if !AS_CHECK_VERSION(1, 0, 0) | ||
| 51 | + AsDisplayLengthKind display_length_kind; | ||
| 52 | +#endif | ||
| 53 | |||
| 54 | /* https://www.freedesktop.org/software/appstream/docs/chap-Metadata.html#tag-relations-display_length */ | ||
| 55 | as_relation_set_item_kind (relation, AS_RELATION_ITEM_KIND_DISPLAY_LENGTH); | ||
| 56 | @@ -1020,15 +1023,21 @@ gs_appstream_refine_app_relation (GsApp *app, | ||
| 57 | compare = xb_node_get_attr (child, "compare"); | ||
| 58 | as_relation_set_compare (relation, (compare != NULL) ? as_relation_compare_from_string (compare) : AS_RELATION_COMPARE_GE); | ||
| 59 | |||
| 60 | +#if AS_CHECK_VERSION(1, 0, 0) | ||
| 61 | + side = xb_node_get_attr (child, "side"); | ||
| 62 | + as_relation_set_display_side_kind (relation, (side != NULL) ? as_display_side_kind_from_string (side) : AS_DISPLAY_SIDE_KIND_SHORTEST); | ||
| 63 | + as_relation_set_value_px (relation, xb_node_get_text_as_uint (child)); | ||
| 64 | +#else | ||
| 65 | display_length_kind = as_display_length_kind_from_string (xb_node_get_text (child)); | ||
| 66 | if (display_length_kind != AS_DISPLAY_LENGTH_KIND_UNKNOWN) { | ||
| 67 | /* Ignore the `side` attribute */ | ||
| 68 | as_relation_set_value_display_length_kind (relation, display_length_kind); | ||
| 69 | } else { | ||
| 70 | - const gchar *side = xb_node_get_attr (child, "side"); | ||
| 71 | + side = xb_node_get_attr (child, "side"); | ||
| 72 | as_relation_set_display_side_kind (relation, (side != NULL) ? as_display_side_kind_from_string (side) : AS_DISPLAY_SIDE_KIND_SHORTEST); | ||
| 73 | as_relation_set_value_px (relation, xb_node_get_text_as_uint (child)); | ||
| 74 | } | ||
| 75 | +#endif | ||
| 76 | } else { | ||
| 77 | g_debug ("Relation type ‘%s’ not currently supported for %s; ignoring", | ||
| 78 | item_kind, gs_app_get_id (app)); | ||
| 79 | @@ -1472,7 +1481,7 @@ gs_appstream_refine_app (GsPlugin *plugin, | ||
| 80 | } | ||
| 81 | |||
| 82 | typedef struct { | ||
| 83 | - AsSearchTokenMatch match_value; | ||
| 84 | + guint16 match_value; | ||
| 85 | XbQuery *query; | ||
| 86 | } GsAppstreamSearchHelper; | ||
| 87 | |||
| 88 | @@ -1522,7 +1531,7 @@ gs_appstream_silo_search_component (GPtrArray *array, XbNode *component, const g | ||
| 89 | } | ||
| 90 | |||
| 91 | typedef struct { | ||
| 92 | - AsSearchTokenMatch match_value; | ||
| 93 | + guint16 match_value; | ||
| 94 | const gchar *xpath; | ||
| 95 | } Query; | ||
| 96 | |||
| 97 | @@ -1539,6 +1548,11 @@ gs_appstream_do_search (GsPlugin *plugin, | ||
| 98 | g_autoptr(GPtrArray) array = g_ptr_array_new_with_free_func ((GDestroyNotify) gs_appstream_search_helper_free); | ||
| 99 | g_autoptr(GPtrArray) components = NULL; | ||
| 100 | g_autoptr(GTimer) timer = g_timer_new (); | ||
| 101 | +#if AS_CHECK_VERSION(1, 0, 0) | ||
| 102 | + const guint16 component_id_weight = as_utils_get_tag_search_weight ("id"); | ||
| 103 | +#else | ||
| 104 | + const guint16 component_id_weight = AS_SEARCH_TOKEN_MATCH_ID; | ||
| 105 | +#endif | ||
| 106 | |||
| 107 | g_return_val_if_fail (GS_IS_PLUGIN (plugin), FALSE); | ||
| 108 | g_return_val_if_fail (XB_IS_SILO (silo), FALSE); | ||
| 109 | @@ -1585,7 +1599,7 @@ gs_appstream_do_search (GsPlugin *plugin, | ||
| 110 | * Drop the ID token from it as it’s the highest | ||
| 111 | * numeric value but isn’t visible to the user in the | ||
| 112 | * UI, which leads to confusing results ordering. */ | ||
| 113 | - gs_app_set_match_value (app, match_value & (~AS_SEARCH_TOKEN_MATCH_ID)); | ||
| 114 | + gs_app_set_match_value (app, match_value & (~component_id_weight)); | ||
| 115 | gs_app_list_add (list, app); | ||
| 116 | |||
| 117 | if (gs_app_get_kind (app) == AS_COMPONENT_KIND_ADDON) { | ||
| 118 | @@ -1624,18 +1638,32 @@ gs_appstream_search (GsPlugin *plugin, | ||
| 119 | GCancellable *cancellable, | ||
| 120 | GError **error) | ||
| 121 | { | ||
| 122 | +#if AS_CHECK_VERSION(1, 0, 0) | ||
| 123 | + guint16 pkgname_weight = as_utils_get_tag_search_weight ("pkgname"); | ||
| 124 | + guint16 name_weight = as_utils_get_tag_search_weight ("name"); | ||
| 125 | + guint16 id_weight = as_utils_get_tag_search_weight ("id"); | ||
| 126 | const Query queries[] = { | ||
| 127 | - #ifdef HAVE_AS_SEARCH_TOKEN_MATCH_MEDIATYPE | ||
| 128 | - { AS_SEARCH_TOKEN_MATCH_MEDIATYPE, "mimetypes/mimetype[text()~=stem(?)]" }, | ||
| 129 | - #else | ||
| 130 | - { AS_SEARCH_TOKEN_MATCH_MIMETYPE, "mimetypes/mimetype[text()~=stem(?)]" }, | ||
| 131 | - #endif | ||
| 132 | + { as_utils_get_tag_search_weight ("mediatype"), "provides/mediatype[text()~=stem(?)]" }, | ||
| 133 | /* Search once with a tokenize-and-casefold operator (`~=`) to support casefolded | ||
| 134 | * full-text search, then again using substring matching (`contains()`), to | ||
| 135 | * support prefix matching. Only do the prefix matches on a few fields, and at a | ||
| 136 | * lower priority, otherwise things will get confusing. | ||
| 137 | - * | ||
| 138 | + * | ||
| 139 | * See https://gitlab.gnome.org/GNOME/gnome-software/-/issues/2277 */ | ||
| 140 | + { pkgname_weight, "pkgname[text()~=stem(?)]" }, | ||
| 141 | + { pkgname_weight / 2, "pkgname[contains(text(),stem(?))]" }, | ||
| 142 | + { as_utils_get_tag_search_weight ("summary"), "summary[text()~=stem(?)]" }, | ||
| 143 | + { name_weight, "name[text()~=stem(?)]" }, | ||
| 144 | + { name_weight / 2, "name[contains(text(),stem(?))]" }, | ||
| 145 | + { as_utils_get_tag_search_weight ("keyword"), "keywords/keyword[text()~=stem(?)]" }, | ||
| 146 | + { id_weight, "id[text()~=stem(?)]" }, | ||
| 147 | + { id_weight, "launchable[text()~=stem(?)]" }, | ||
| 148 | + { as_utils_get_tag_search_weight ("origin"), "../components[@origin~=stem(?)]" }, | ||
| 149 | + { 0, NULL } | ||
| 150 | + }; | ||
| 151 | +#else | ||
| 152 | + const Query queries[] = { | ||
| 153 | + { AS_SEARCH_TOKEN_MATCH_MEDIATYPE, "mimetypes/mimetype[text()~=stem(?)]" }, | ||
| 154 | { AS_SEARCH_TOKEN_MATCH_PKGNAME, "pkgname[text()~=stem(?)]" }, | ||
| 155 | { AS_SEARCH_TOKEN_MATCH_PKGNAME / 2, "pkgname[contains(text(),stem(?))]" }, | ||
| 156 | { AS_SEARCH_TOKEN_MATCH_SUMMARY, "summary[text()~=stem(?)]" }, | ||
| 157 | @@ -1647,6 +1675,7 @@ gs_appstream_search (GsPlugin *plugin, | ||
| 158 | { AS_SEARCH_TOKEN_MATCH_ORIGIN, "../components[@origin~=stem(?)]" }, | ||
| 159 | { AS_SEARCH_TOKEN_MATCH_NONE, NULL } | ||
| 160 | }; | ||
| 161 | +#endif | ||
| 162 | |||
| 163 | return gs_appstream_do_search (plugin, silo, values, queries, list, cancellable, error); | ||
| 164 | } | ||
| 165 | @@ -1659,11 +1688,21 @@ gs_appstream_search_developer_apps (GsPlugin *plugin, | ||
| 166 | GCancellable *cancellable, | ||
| 167 | GError **error) | ||
| 168 | { | ||
| 169 | +#if AS_CHECK_VERSION(1, 0, 0) | ||
| 170 | + const Query queries[] = { | ||
| 171 | + { as_utils_get_tag_search_weight ("pkgname"), "developer/name[text()~=stem(?)]" }, | ||
| 172 | + { as_utils_get_tag_search_weight ("summary"), "project_group[text()~=stem(?)]" }, | ||
| 173 | + /* for legacy support */ | ||
| 174 | + { as_utils_get_tag_search_weight ("pkgname"), "developer_name[text()~=stem(?)]" }, | ||
| 175 | + { 0, NULL } | ||
| 176 | + }; | ||
| 177 | +#else | ||
| 178 | const Query queries[] = { | ||
| 179 | { AS_SEARCH_TOKEN_MATCH_PKGNAME, "developer_name[text()~=stem(?)]" }, | ||
| 180 | { AS_SEARCH_TOKEN_MATCH_SUMMARY, "project_group[text()~=stem(?)]" }, | ||
| 181 | { AS_SEARCH_TOKEN_MATCH_NONE, NULL } | ||
| 182 | }; | ||
| 183 | +#endif | ||
| 184 | |||
| 185 | return gs_appstream_do_search (plugin, silo, values, queries, list, cancellable, error); | ||
| 186 | } | ||
| 187 | diff --git a/lib/gs-utils.c b/lib/gs-utils.c | ||
| 188 | index cf9073025f..19e6ebd046 100644 | ||
| 189 | --- a/lib/gs-utils.c | ||
| 190 | +++ b/lib/gs-utils.c | ||
| 191 | @@ -1694,9 +1694,9 @@ gs_utils_gstring_replace (GString *str, | ||
| 192 | const gchar *find, | ||
| 193 | const gchar *replace) | ||
| 194 | { | ||
| 195 | - #ifdef HAVE_AS_GSTRING_REPLACE_WITH_FOUR_ARGS | ||
| 196 | +#if AS_CHECK_VERSION(1, 0, 0) | ||
| 197 | as_gstring_replace (str, find, replace, 0); | ||
| 198 | - #else | ||
| 199 | - as_gstring_replace (str, find, replace); | ||
| 200 | - #endif | ||
| 201 | +#else | ||
| 202 | + as_gstring_replace2 (str, find, replace, 0); | ||
| 203 | +#endif | ||
| 204 | } | ||
| 205 | diff --git a/meson.build b/meson.build | ||
| 206 | index bc19669dd5..8c82464cdb 100644 | ||
| 207 | --- a/meson.build | ||
| 208 | +++ b/meson.build | ||
| 209 | @@ -113,7 +113,7 @@ add_project_arguments('-D_GNU_SOURCE', language : 'c') | ||
| 210 | conf.set('HAVE_LINUX_UNISTD_H', cc.has_header('linux/unistd.h')) | ||
| 211 | |||
| 212 | appstream = dependency('appstream', | ||
| 213 | - version : '>= 0.14.0', | ||
| 214 | + version : '>= 0.16.4', | ||
| 215 | fallback : ['appstream', 'appstream_dep'], | ||
| 216 | default_options : [ | ||
| 217 | 'docs=false', | ||
| 218 | @@ -121,26 +121,6 @@ appstream = dependency('appstream', | ||
| 219 | 'install-docs=false' | ||
| 220 | ] | ||
| 221 | ) | ||
| 222 | -if appstream.type_name() == 'internal' | ||
| 223 | -else | ||
| 224 | - if meson.get_compiler('c').has_header_symbol('appstream.h', 'AS_SEARCH_TOKEN_MATCH_MEDIATYPE', dependencies: appstream) | ||
| 225 | - conf.set('HAVE_AS_SEARCH_TOKEN_MATCH_MEDIATYPE', '1') | ||
| 226 | - endif | ||
| 227 | - if meson.get_compiler('c').has_header_symbol('appstream.h', 'AS_FORMAT_STYLE_CATALOG', dependencies: appstream) | ||
| 228 | - conf.set('HAVE_AS_FORMAT_STYLE_CATALOG', '1') | ||
| 229 | - endif | ||
| 230 | - if meson.get_compiler('c').has_function('as_metadata_components_to_catalog', prefix: '#include <appstream.h>', dependencies: appstream) | ||
| 231 | - conf.set('HAVE_AS_METADATA_COMPONENTS_TO_CATALOG', '1') | ||
| 232 | - endif | ||
| 233 | - if meson.get_compiler('c').links('''#include <appstream.h> | ||
| 234 | - int main (void) | ||
| 235 | - { | ||
| 236 | - as_gstring_replace (NULL, "a", "b", 0); | ||
| 237 | - return 0; | ||
| 238 | - }''', name: 'as_gstring_replace() has four arguments', dependencies: appstream) | ||
| 239 | - conf.set('HAVE_AS_GSTRING_REPLACE_WITH_FOUR_ARGS', '1') | ||
| 240 | - endif | ||
| 241 | -endif | ||
| 242 | |||
| 243 | gdk_pixbuf = dependency('gdk-pixbuf-2.0', version : '>= 2.32.0') | ||
| 244 | libxmlb = dependency('xmlb', version : '>= 0.1.7', fallback : ['libxmlb', 'libxmlb_dep']) | ||
| 245 | diff --git a/plugins/core/gs-plugin-appstream.c b/plugins/core/gs-plugin-appstream.c | ||
| 246 | index cf9f3022b1..ef3226a591 100644 | ||
| 247 | --- a/plugins/core/gs-plugin-appstream.c | ||
| 248 | +++ b/plugins/core/gs-plugin-appstream.c | ||
| 249 | @@ -414,11 +414,7 @@ gs_plugin_appstream_load_dep11_cb (XbBuilderSource *self, | ||
| 250 | if (bytes == NULL) | ||
| 251 | return NULL; | ||
| 252 | |||
| 253 | - #ifdef HAVE_AS_FORMAT_STYLE_CATALOG | ||
| 254 | as_metadata_set_format_style (mdata, AS_FORMAT_STYLE_CATALOG); | ||
| 255 | - #else | ||
| 256 | - as_metadata_set_format_style (mdata, AS_FORMAT_STYLE_COLLECTION); | ||
| 257 | - #endif | ||
| 258 | as_metadata_parse_bytes (mdata, | ||
| 259 | bytes, | ||
| 260 | AS_FORMAT_KIND_YAML, | ||
| 261 | @@ -428,11 +424,7 @@ gs_plugin_appstream_load_dep11_cb (XbBuilderSource *self, | ||
| 262 | return NULL; | ||
| 263 | } | ||
| 264 | |||
| 265 | - #ifdef HAVE_AS_METADATA_COMPONENTS_TO_CATALOG | ||
| 266 | xml = as_metadata_components_to_catalog (mdata, AS_FORMAT_KIND_XML, &tmp_error); | ||
| 267 | - #else | ||
| 268 | - xml = as_metadata_components_to_collection (mdata, AS_FORMAT_KIND_XML, &tmp_error); | ||
| 269 | - #endif | ||
| 270 | if (xml == NULL) { | ||
| 271 | // This API currently returns NULL if there is nothing to serialize, so we | ||
| 272 | // have to test if this is an error or not. | ||
| 273 | diff --git a/plugins/fwupd/gs-fwupd-app.c b/plugins/fwupd/gs-fwupd-app.c | ||
| 274 | index 6dcda6ee92..5d3254da59 100644 | ||
| 275 | --- a/plugins/fwupd/gs-fwupd-app.c | ||
| 276 | +++ b/plugins/fwupd/gs-fwupd-app.c | ||
| 277 | @@ -164,7 +164,11 @@ gs_fwupd_app_set_from_device (GsApp *app, | ||
| 278 | gs_app_set_install_date (app, fwupd_device_get_created (dev)); | ||
| 279 | if (fwupd_device_get_description (dev) != NULL) { | ||
| 280 | g_autofree gchar *tmp = NULL; | ||
| 281 | +#if AS_CHECK_VERSION(1, 0, 0) | ||
| 282 | + tmp = as_markup_convert (fwupd_device_get_description (dev), AS_MARKUP_KIND_TEXT, NULL); | ||
| 283 | +#else | ||
| 284 | tmp = as_markup_convert_simple (fwupd_device_get_description (dev), NULL); | ||
| 285 | +#endif | ||
| 286 | if (tmp != NULL) | ||
| 287 | gs_app_set_description (app, GS_APP_QUALITY_NORMAL, tmp); | ||
| 288 | } | ||
| 289 | @@ -402,7 +406,11 @@ gs_fwupd_app_set_from_release (GsApp *app, FwupdRelease *rel) | ||
| 290 | } | ||
| 291 | if (fwupd_release_get_description (rel) != NULL) { | ||
| 292 | g_autofree gchar *tmp = NULL; | ||
| 293 | +#if AS_CHECK_VERSION(1, 0, 0) | ||
| 294 | + tmp = as_markup_convert (fwupd_release_get_description (rel), AS_MARKUP_KIND_TEXT, NULL); | ||
| 295 | +#else | ||
| 296 | tmp = as_markup_convert_simple (fwupd_release_get_description (rel), NULL); | ||
| 297 | +#endif | ||
| 298 | if (tmp != NULL) | ||
| 299 | gs_app_set_update_details_text (app, tmp); | ||
| 300 | } | ||
| 301 | diff --git a/plugins/fwupd/gs-plugin-fwupd.c b/plugins/fwupd/gs-plugin-fwupd.c | ||
| 302 | index d8c0cd2dd4..a9b05028a0 100644 | ||
| 303 | --- a/plugins/fwupd/gs-plugin-fwupd.c | ||
| 304 | +++ b/plugins/fwupd/gs-plugin-fwupd.c | ||
| 305 | @@ -727,7 +727,11 @@ gs_plugin_add_updates (GsPlugin *plugin, | ||
| 306 | g_autofree gchar *desc = NULL; | ||
| 307 | if (fwupd_release_get_description (rel) == NULL) | ||
| 308 | continue; | ||
| 309 | +#if AS_CHECK_VERSION(1, 0, 0) | ||
| 310 | + desc = as_markup_convert (fwupd_release_get_description (rel), AS_MARKUP_KIND_TEXT, NULL); | ||
| 311 | +#else | ||
| 312 | desc = as_markup_convert_simple (fwupd_release_get_description (rel), NULL); | ||
| 313 | +#endif | ||
| 314 | if (desc == NULL) | ||
| 315 | continue; | ||
| 316 | g_string_append_printf (update_desc, | ||
| 317 | diff --git a/src/gs-hardware-support-context-dialog.c b/src/gs-hardware-support-context-dialog.c | ||
| 318 | index 0e48c8c266..14653401de 100644 | ||
| 319 | --- a/src/gs-hardware-support-context-dialog.c | ||
| 320 | +++ b/src/gs-hardware-support-context-dialog.c | ||
| 321 | @@ -461,6 +461,7 @@ gs_hardware_support_context_dialog_get_display_support (GdkMonitor *monitor, | ||
| 322 | AsRelationCompare comparator = as_relation_get_compare (relation); | ||
| 323 | Range current_display_comparand, relation_comparand; | ||
| 324 | |||
| 325 | +#if !AS_CHECK_VERSION(1, 0, 0) | ||
| 326 | /* From https://www.freedesktop.org/software/appstream/docs/chap-Metadata.html#tag-requires-recommends-display_length */ | ||
| 327 | Range display_lengths[] = { | ||
| 328 | [AS_DISPLAY_LENGTH_KIND_XSMALL] = { 0, 360 }, | ||
| 329 | @@ -469,6 +470,7 @@ gs_hardware_support_context_dialog_get_display_support (GdkMonitor *monitor, | ||
| 330 | [AS_DISPLAY_LENGTH_KIND_LARGE] = { 1024, 3840 }, | ||
| 331 | [AS_DISPLAY_LENGTH_KIND_XLARGE] = { 3840, G_MAXUINT }, | ||
| 332 | }; | ||
| 333 | +#endif | ||
| 334 | |||
| 335 | any_display_relations_set = TRUE; | ||
| 336 | |||
| 337 | @@ -485,11 +487,14 @@ gs_hardware_support_context_dialog_get_display_support (GdkMonitor *monitor, | ||
| 338 | case AS_DISPLAY_SIDE_KIND_LAST: | ||
| 339 | default: | ||
| 340 | current_display_comparand.min = current_display_comparand.max = MAX (current_screen_size.width, current_screen_size.height); | ||
| 341 | +#if !AS_CHECK_VERSION(1, 0, 0) | ||
| 342 | relation_comparand.min = display_lengths[as_relation_get_value_display_length_kind (relation)].min; | ||
| 343 | relation_comparand.max = display_lengths[as_relation_get_value_display_length_kind (relation)].max; | ||
| 344 | +#endif | ||
| 345 | break; | ||
| 346 | } | ||
| 347 | |||
| 348 | +#if !AS_CHECK_VERSION(1, 0, 0) | ||
| 349 | if (evaluate_display_comparison (display_lengths[AS_DISPLAY_LENGTH_KIND_SMALL], comparator, relation_comparand)) { | ||
| 350 | *mobile_relation_kind_out = max_relation_kind (*mobile_relation_kind_out, as_relation_get_kind (relation)); | ||
| 351 | *mobile_match_out = TRUE; | ||
| 352 | @@ -499,6 +504,7 @@ gs_hardware_support_context_dialog_get_display_support (GdkMonitor *monitor, | ||
| 353 | *desktop_relation_kind_out = max_relation_kind (*desktop_relation_kind_out, as_relation_get_kind (relation)); | ||
| 354 | *desktop_match_out = TRUE; | ||
| 355 | } | ||
| 356 | +#endif | ||
| 357 | |||
| 358 | if (evaluate_display_comparison (current_display_comparand, comparator, relation_comparand)) { | ||
| 359 | *current_relation_kind_out = max_relation_kind (*current_relation_kind_out, as_relation_get_kind (relation)); | ||
| 360 | diff --git a/src/gs-repos-dialog.c b/src/gs-repos-dialog.c | ||
| 361 | index c41c4944a1..7dac0416d9 100644 | ||
| 362 | --- a/src/gs-repos-dialog.c | ||
| 363 | +++ b/src/gs-repos-dialog.c | ||
| 364 | @@ -154,7 +154,11 @@ enable_repo (GsReposDialog *dialog, | ||
| 365 | g_autoptr(GError) error = NULL; | ||
| 366 | |||
| 367 | /* convert from AppStream markup */ | ||
| 368 | +#if AS_CHECK_VERSION(1, 0, 0) | ||
| 369 | + message = as_markup_convert (gs_app_get_agreement (repo), AS_MARKUP_KIND_TEXT, &error); | ||
| 370 | +#else | ||
| 371 | message = as_markup_convert_simple (gs_app_get_agreement (repo), &error); | ||
| 372 | +#endif | ||
| 373 | if (message == NULL) { | ||
| 374 | /* failed, so just try and show the original markup */ | ||
| 375 | message = g_strdup (gs_app_get_agreement (repo)); | ||
| 376 | diff --git a/src/gs-screenshot-carousel.c b/src/gs-screenshot-carousel.c | ||
| 377 | index 04bbf86a1e..d269af6605 100644 | ||
| 378 | --- a/src/gs-screenshot-carousel.c | ||
| 379 | +++ b/src/gs-screenshot-carousel.c | ||
| 380 | @@ -141,8 +141,8 @@ gs_screenshot_carousel_load_screenshots (GsScreenshotCarousel *self, GsApp *app, | ||
| 381 | gtk_widget_set_can_focus (gtk_widget_get_first_child (ssimg), FALSE); | ||
| 382 | gs_screenshot_image_set_screenshot (GS_SCREENSHOT_IMAGE (ssimg), ss); | ||
| 383 | gs_screenshot_image_set_size (GS_SCREENSHOT_IMAGE (ssimg), | ||
| 384 | - AS_IMAGE_NORMAL_WIDTH, | ||
| 385 | - AS_IMAGE_NORMAL_HEIGHT); | ||
| 386 | + GS_IMAGE_NORMAL_WIDTH, | ||
| 387 | + GS_IMAGE_NORMAL_HEIGHT); | ||
| 388 | gtk_widget_add_css_class (ssimg, "screenshot-image-main"); | ||
| 389 | gs_screenshot_image_load_async (GS_SCREENSHOT_IMAGE (ssimg), cancellable); | ||
| 390 | |||
| 391 | diff --git a/src/gs-screenshot-image.c b/src/gs-screenshot-image.c | ||
| 392 | index 93dba68f96..6b4db03d06 100644 | ||
| 393 | --- a/src/gs-screenshot-image.c | ||
| 394 | +++ b/src/gs-screenshot-image.c | ||
| 395 | @@ -293,13 +293,13 @@ gs_screenshot_image_save_downloaded_img (GsScreenshotImage *ssimg, | ||
| 396 | if (images->len > 1) | ||
| 397 | return TRUE; | ||
| 398 | |||
| 399 | - if (width == AS_IMAGE_THUMBNAIL_WIDTH && | ||
| 400 | - height == AS_IMAGE_THUMBNAIL_HEIGHT) { | ||
| 401 | - width = AS_IMAGE_NORMAL_WIDTH; | ||
| 402 | - height = AS_IMAGE_NORMAL_HEIGHT; | ||
| 403 | + if (width == GS_IMAGE_THUMBNAIL_WIDTH && | ||
| 404 | + height == GS_IMAGE_THUMBNAIL_HEIGHT) { | ||
| 405 | + width = GS_IMAGE_NORMAL_WIDTH; | ||
| 406 | + height = GS_IMAGE_NORMAL_HEIGHT; | ||
| 407 | } else { | ||
| 408 | - width = AS_IMAGE_THUMBNAIL_WIDTH; | ||
| 409 | - height = AS_IMAGE_THUMBNAIL_HEIGHT; | ||
| 410 | + width = GS_IMAGE_THUMBNAIL_WIDTH; | ||
| 411 | + height = GS_IMAGE_THUMBNAIL_HEIGHT; | ||
| 412 | } | ||
| 413 | |||
| 414 | width *= ssimg->scale; | ||
| 415 | @@ -591,16 +591,30 @@ gs_screenshot_image_get_url (GsScreenshotImage *ssimg) | ||
| 416 | } else if (as_screenshot_get_media_kind (ssimg->screenshot) == AS_SCREENSHOT_MEDIA_KIND_IMAGE) { | ||
| 417 | AsImage *im; | ||
| 418 | |||
| 419 | +#if AS_CHECK_VERSION(1, 0, 0) | ||
| 420 | + im = as_screenshot_get_image (ssimg->screenshot, | ||
| 421 | + ssimg->width, | ||
| 422 | + ssimg->height, | ||
| 423 | + ssimg->scale); | ||
| 424 | +#else | ||
| 425 | im = as_screenshot_get_image (ssimg->screenshot, | ||
| 426 | ssimg->width * ssimg->scale, | ||
| 427 | ssimg->height * ssimg->scale); | ||
| 428 | +#endif | ||
| 429 | |||
| 430 | /* if we've failed to load a HiDPI image, fallback to LoDPI */ | ||
| 431 | if (im == NULL && ssimg->scale > 1) { | ||
| 432 | ssimg->scale = 1; | ||
| 433 | +#if AS_CHECK_VERSION(1, 0, 0) | ||
| 434 | + im = as_screenshot_get_image (ssimg->screenshot, | ||
| 435 | + ssimg->width, | ||
| 436 | + ssimg->height, | ||
| 437 | + 1); | ||
| 438 | +#else | ||
| 439 | im = as_screenshot_get_image (ssimg->screenshot, | ||
| 440 | ssimg->width, | ||
| 441 | ssimg->height); | ||
| 442 | +#endif | ||
| 443 | } | ||
| 444 | |||
| 445 | if (im) | ||
| 446 | @@ -707,15 +721,22 @@ gs_screenshot_image_load_async (GsScreenshotImage *ssimg, | ||
| 447 | * smaller version of it straight away */ | ||
| 448 | if (!ssimg->showing_image && | ||
| 449 | as_screenshot_get_media_kind (ssimg->screenshot) == AS_SCREENSHOT_MEDIA_KIND_IMAGE && | ||
| 450 | - ssimg->width > AS_IMAGE_THUMBNAIL_WIDTH && | ||
| 451 | - ssimg->height > AS_IMAGE_THUMBNAIL_HEIGHT) { | ||
| 452 | + ssimg->width > GS_IMAGE_THUMBNAIL_WIDTH && | ||
| 453 | + ssimg->height > GS_IMAGE_THUMBNAIL_HEIGHT) { | ||
| 454 | const gchar *url_thumb; | ||
| 455 | g_autofree gchar *basename_thumb = NULL; | ||
| 456 | g_autofree gchar *cache_kind_thumb = NULL; | ||
| 457 | AsImage *im; | ||
| 458 | +#if AS_CHECK_VERSION(1, 0, 0) | ||
| 459 | im = as_screenshot_get_image (ssimg->screenshot, | ||
| 460 | - AS_IMAGE_THUMBNAIL_WIDTH * ssimg->scale, | ||
| 461 | - AS_IMAGE_THUMBNAIL_HEIGHT * ssimg->scale); | ||
| 462 | + GS_IMAGE_THUMBNAIL_WIDTH, | ||
| 463 | + GS_IMAGE_THUMBNAIL_HEIGHT, | ||
| 464 | + ssimg->scale); | ||
| 465 | +#else | ||
| 466 | + im = as_screenshot_get_image (ssimg->screenshot, | ||
| 467 | + GS_IMAGE_THUMBNAIL_WIDTH * ssimg->scale, | ||
| 468 | + GS_IMAGE_THUMBNAIL_HEIGHT * ssimg->scale); | ||
| 469 | +#endif | ||
| 470 | url_thumb = as_image_get_url (im); | ||
| 471 | basename_thumb = gs_screenshot_get_cachefn_for_url (url_thumb); | ||
| 472 | cache_kind_thumb = g_build_filename ("screenshots", "112x63", NULL); | ||
| 473 | diff --git a/src/gs-screenshot-image.h b/src/gs-screenshot-image.h | ||
| 474 | index 1f6cf81ce6..6e45f5d20a 100644 | ||
| 475 | --- a/src/gs-screenshot-image.h | ||
| 476 | +++ b/src/gs-screenshot-image.h | ||
| 477 | @@ -21,6 +21,13 @@ G_BEGIN_DECLS | ||
| 478 | |||
| 479 | G_DECLARE_FINAL_TYPE (GsScreenshotImage, gs_screenshot_image, GS, SCREENSHOT_IMAGE, GtkWidget) | ||
| 480 | |||
| 481 | +#define GS_IMAGE_LARGE_HEIGHT 423 | ||
| 482 | +#define GS_IMAGE_LARGE_WIDTH 752 | ||
| 483 | +#define GS_IMAGE_NORMAL_HEIGHT 351 | ||
| 484 | +#define GS_IMAGE_NORMAL_WIDTH 624 | ||
| 485 | +#define GS_IMAGE_THUMBNAIL_HEIGHT 63 | ||
| 486 | +#define GS_IMAGE_THUMBNAIL_WIDTH 112 | ||
| 487 | + | ||
| 488 | GtkWidget *gs_screenshot_image_new (SoupSession *session); | ||
| 489 | |||
| 490 | AsScreenshot *gs_screenshot_image_get_screenshot (GsScreenshotImage *ssimg); | ||
| 491 | diff --git a/subprojects/appstream.wrap b/subprojects/appstream.wrap | ||
| 492 | index 6f0beb0cbc..b9a9c7dbe5 100644 | ||
| 493 | --- a/subprojects/appstream.wrap | ||
| 494 | +++ b/subprojects/appstream.wrap | ||
| 495 | @@ -1,5 +1,5 @@ | ||
| 496 | [wrap-git] | ||
| 497 | directory = appstream | ||
| 498 | url = https://github.com/ximion/appstream.git | ||
| 499 | -revision = v0.14.1 | ||
| 500 | +revision = v0.16.4 | ||
| 501 | depth = 1 | ||
| 502 | -- | ||
| 503 | GitLab | ||
| 504 | |||
diff --git a/meta-gnome/recipes-gnome/gnome-software/gnome-software/e431ab003f3fabf616b6eb7dc93f8967bc9473e5.patch b/meta-gnome/recipes-gnome/gnome-software/gnome-software/e431ab003f3fabf616b6eb7dc93f8967bc9473e5.patch new file mode 100644 index 0000000000..b7bddc3243 --- /dev/null +++ b/meta-gnome/recipes-gnome/gnome-software/gnome-software/e431ab003f3fabf616b6eb7dc93f8967bc9473e5.patch | |||
| @@ -0,0 +1,31 @@ | |||
| 1 | From e431ab003f3fabf616b6eb7dc93f8967bc9473e5 Mon Sep 17 00:00:00 2001 | ||
| 2 | From: Milan Crha <mcrha@redhat.com> | ||
| 3 | Date: Wed, 22 Nov 2023 09:44:40 +0100 | ||
| 4 | Subject: [PATCH] gs-appstream: Remove use of AS_PROVIDED_KIND_PYTHON_2 | ||
| 5 | |||
| 6 | It's dropped in appstream 1.0.0 and it's not used anywhere in the gnome-software | ||
| 7 | code, thus just remove it, rather than have it only for pre-1.0.0 appstream version. | ||
| 8 | |||
| 9 | Closes https://gitlab.gnome.org/GNOME/gnome-software/-/issues/2388 | ||
| 10 | |||
| 11 | Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/gnome-software/-/commit/e431ab003f3fabf616b6eb7dc93f8967bc9473e5] | ||
| 12 | --- | ||
| 13 | lib/gs-appstream.c | 2 -- | ||
| 14 | 1 file changed, 2 deletions(-) | ||
| 15 | |||
| 16 | diff --git a/lib/gs-appstream.c b/lib/gs-appstream.c | ||
| 17 | index 6504d6f25..4fd7f5334 100644 | ||
| 18 | --- a/lib/gs-appstream.c | ||
| 19 | +++ b/lib/gs-appstream.c | ||
| 20 | @@ -587,8 +587,6 @@ gs_appstream_refine_add_provides (GsApp *app, XbNode *component, GError **error) | ||
| 21 | kind = AS_PROVIDED_KIND_FIRMWARE_RUNTIME; | ||
| 22 | else if (g_strcmp0 (fw_type, "flashed") == 0) | ||
| 23 | kind = AS_PROVIDED_KIND_FIRMWARE_FLASHED; | ||
| 24 | - } else if (g_strcmp0 (element_name, "python2") == 0) { | ||
| 25 | - kind = AS_PROVIDED_KIND_PYTHON_2; | ||
| 26 | } else if (g_strcmp0 (element_name, "python3") == 0) { | ||
| 27 | kind = AS_PROVIDED_KIND_PYTHON; | ||
| 28 | } else if (g_strcmp0 (element_name, "dbus") == 0) { | ||
| 29 | -- | ||
| 30 | GitLab | ||
| 31 | |||
diff --git a/meta-gnome/recipes-gnome/gnome-software/gnome-software_45.1.bb b/meta-gnome/recipes-gnome/gnome-software/gnome-software_45.2.bb index f363a2bbee..fc2b696aa0 100644 --- a/meta-gnome/recipes-gnome/gnome-software/gnome-software_45.1.bb +++ b/meta-gnome/recipes-gnome/gnome-software/gnome-software_45.2.bb | |||
| @@ -28,7 +28,11 @@ RDEPENDS:${PN} = "iso-codes" | |||
| 28 | 28 | ||
| 29 | EXTRA_OEMESON += "-Dtests=false -Dsoup2=false" | 29 | EXTRA_OEMESON += "-Dtests=false -Dsoup2=false" |
| 30 | 30 | ||
| 31 | SRC_URI[archive.sha256sum] = "d72485f7a6e0917f64edbedd68fd7b57246c6ebf10c5a45108b63946635778a2" | 31 | SRC_URI += " \ |
| 32 | file://0655f358ed0e8455e12d9634f60bc4dbaee434e3.patch \ | ||
| 33 | file://e431ab003f3fabf616b6eb7dc93f8967bc9473e5.patch \ | ||
| 34 | " | ||
| 35 | SRC_URI[archive.sha256sum] = "0bdd8fc0caecd6eb013c6010dbca93077397118a6ef5eaf264e2a820a292f5b7" | ||
| 32 | 36 | ||
| 33 | PACKAGECONFIG ?= "flatpak" | 37 | PACKAGECONFIG ?= "flatpak" |
| 34 | PACKAGECONFIG[flatpak] = "-Dflatpak=true,-Dflatpak=false,flatpak ostree" | 38 | PACKAGECONFIG[flatpak] = "-Dflatpak=true,-Dflatpak=false,flatpak ostree" |
