diff options
author | Richard Hughes <richard@hughsie.com> | 2016-07-31 18:34:34 +0100 |
---|---|---|
committer | Richard Hughes <richard@hughsie.com> | 2016-07-31 21:33:04 +0100 |
commit | d181287379025919d007e3dd16127bcb9d10cf83 (patch) | |
tree | b78d5fd2c7a1400fb466f668785e0c619cd37762 /libappstream-glib | |
parent | 2df0a81b92c56041f570e3bcb1e976ccaba33a67 (diff) | |
download | appstream-glib-d181287379025919d007e3dd16127bcb9d10cf83.tar.gz |
Include the distribution system in the equality check
Diffstat (limited to 'libappstream-glib')
-rw-r--r-- | libappstream-glib/as-app.c | 25 | ||||
-rw-r--r-- | libappstream-glib/as-self-test.c | 4 |
2 files changed, 25 insertions, 4 deletions
diff --git a/libappstream-glib/as-app.c b/libappstream-glib/as-app.c index 804e3db..d8f1d0d 100644 --- a/libappstream-glib/as-app.c +++ b/libappstream-glib/as-app.c @@ -518,13 +518,33 @@ as_app_fix_unique_nullable (const gchar *tmp) return tmp; } +static const gchar * +as_app_get_unique_id_system (AsApp *app) +{ + AsAppPrivate *priv = GET_PRIVATE (app); + + /* prefer bundle */ + if (priv->bundles->len > 0) { + AsBundle *bundle = g_ptr_array_index (priv->bundles, 0); + if (as_bundle_get_kind (bundle) != AS_BUNDLE_KIND_UNKNOWN) + return as_bundle_kind_to_string (as_bundle_get_kind (bundle)); + } + + /* fallback to packages */ + if (priv->pkgnames->len > 0) + return "package"; + + /* nothing */ + return "*"; +} + /** * as_app_get_unique_id: * @app: a #AsApp instance. * * Gets the unique ID value to represent the component. * - * Returns: the unique ID, e.g. "system/fedora/desktop/gimp.desktop/i386/master" + * Returns: the unique ID, e.g. "system/package/fedora/desktop/gimp.desktop/i386/master" * * Since: 0.6.1 **/ @@ -544,8 +564,9 @@ as_app_get_unique_id (AsApp *app) id_str = as_app_get_id_no_prefix (app); if (priv->architectures->len == 1) arch_str = g_ptr_array_index (priv->architectures, 0); - priv->unique_id = g_strdup_printf ("%s/%s/%s/%s/%s/%s", + priv->unique_id = g_strdup_printf ("%s/%s/%s/%s/%s/%s/%s", as_app_fix_unique_nullable (scope_str), + as_app_get_unique_id_system (app), as_app_fix_unique_nullable (priv->origin), as_app_fix_unique_nullable (kind_str), as_app_fix_unique_nullable (id_str), diff --git a/libappstream-glib/as-self-test.c b/libappstream-glib/as-self-test.c index d8e31d6..c251e34 100644 --- a/libappstream-glib/as-self-test.c +++ b/libappstream-glib/as-self-test.c @@ -1537,7 +1537,7 @@ as_test_app_func (void) /* verify */ g_assert_cmpstr (as_app_get_id (app), ==, "org.gnome.Software.desktop"); g_assert_cmpstr (as_app_get_id_filename (app), ==, "org.gnome.Software"); - g_assert_cmpstr (as_app_get_unique_id (app), ==, "*/*/desktop/org.gnome.Software.desktop/i386/master"); + g_assert_cmpstr (as_app_get_unique_id (app), ==, "*/flatpak/*/desktop/org.gnome.Software.desktop/i386/master"); g_assert_cmpstr (as_app_get_name (app, "pl"), ==, "Oprogramowanie"); g_assert_cmpstr (as_app_get_comment (app, NULL), ==, "Application manager"); g_assert_cmpstr (as_app_get_description (app, NULL), ==, "<p>Software allows you to find stuff</p>"); @@ -3025,7 +3025,7 @@ as_test_store_flatpak_func (void) g_assert_cmpint (apps->len, ==, 1); app = g_ptr_array_index (apps, 0); g_assert_cmpstr (as_app_get_id (app), ==, "flatpak:test.desktop"); - g_assert_cmpstr (as_app_get_unique_id (app), ==, "*/flatpak_remote-name/desktop/test.desktop/x86_64/master"); + g_assert_cmpstr (as_app_get_unique_id (app), ==, "*/flatpak/flatpak_remote-name/desktop/test.desktop/x86_64/master"); g_assert_cmpstr (as_app_get_id_filename (app), ==, "test"); g_assert_cmpstr (as_app_get_origin (app), ==, "flatpak_remote-name"); g_assert_cmpstr (as_app_get_source_file (app), ==, filename); |