summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Hughes <richard@hughsie.com>2016-08-09 08:33:58 +0100
committerRichard Hughes <richard@hughsie.com>2016-08-09 11:09:54 +0100
commit6d2a83b382e7ea48d3235809687e72a1cc780030 (patch)
tree1f5bf91436aa35e18b6039fc04d532f53b275bef
parentca6a57ef996c770fce2088b722f07325a18f9384 (diff)
downloadappstream-glib-6d2a83b382e7ea48d3235809687e72a1cc780030.tar.gz
Don't include the version in the unique ID
We have releases; different versions should be merged.
-rw-r--r--libappstream-glib/as-app.c49
-rw-r--r--libappstream-glib/as-app.h3
-rw-r--r--libappstream-glib/as-self-test.c52
-rw-r--r--libappstream-glib/as-store.c4
-rw-r--r--libappstream-glib/as-utils-private.h2
-rw-r--r--libappstream-glib/as-utils.c13
-rw-r--r--libappstream-glib/as-utils.h3
7 files changed, 37 insertions, 89 deletions
diff --git a/libappstream-glib/as-app.c b/libappstream-glib/as-app.c
index d5897ff..5ba2254 100644
--- a/libappstream-glib/as-app.c
+++ b/libappstream-glib/as-app.c
@@ -102,7 +102,6 @@ typedef struct
gchar *unique_id;
gchar *source_file;
gchar *branch;
- gchar *version;
gint priority;
gsize token_cache_valid;
GHashTable *token_cache; /* of string:AsAppTokenType* */
@@ -414,7 +413,6 @@ as_app_finalize (GObject *object)
g_free (priv->unique_id);
g_free (priv->source_file);
g_free (priv->branch);
- g_free (priv->version);
g_hash_table_unref (priv->comments);
g_hash_table_unref (priv->developer_names);
g_hash_table_unref (priv->descriptions);
@@ -552,7 +550,6 @@ as_app_get_bundle_kind (AsApp *app)
* 5. AppStream ID, e.g. `gimp.desktop`
* 6. arch, e.g. `x86_64` or `i386`
* 7. branch, e.g. `stable` or `master`
- * 8. version, e.g. `3.20.3` or `0.0.1`
*
* Returns: %TRUE if the applications are equal
*
@@ -579,8 +576,6 @@ as_app_equal (AsApp *app1, AsApp *app2)
return FALSE;
if (!as_app_equal_str (priv1->branch, priv2->branch))
return FALSE;
- if (!as_app_equal_str (priv1->version, priv2->version))
- return FALSE;
if (!as_app_equal_array_str (priv1->architectures,
priv2->architectures))
return FALSE;
@@ -596,7 +591,7 @@ as_app_equal (AsApp *app1, AsApp *app2)
*
* Gets the unique ID value to represent the component.
*
- * Returns: the unique ID, e.g. "system/package/fedora/desktop/gimp.desktop/i386/master/1.2.3"
+ * Returns: the unique ID, e.g. `system/package/fedora/desktop/gimp.desktop/i386/master`
*
* Since: 0.6.1
**/
@@ -612,7 +607,6 @@ as_app_get_unique_id (AsApp *app)
priv->kind,
as_app_get_id_no_prefix (app),
NULL,
- NULL,
NULL);
} else {
const gchar *arch_str = NULL;
@@ -624,8 +618,7 @@ as_app_get_unique_id (AsApp *app)
priv->kind,
as_app_get_id_no_prefix (app),
arch_str,
- priv->branch,
- priv->version);
+ priv->branch);
}
}
return priv->unique_id;
@@ -1841,23 +1834,6 @@ as_app_get_branch (AsApp *app)
return priv->branch;
}
-/**
- * as_app_get_version:
- * @app: a #AsApp instance.
- *
- * Gets the version for the application.
- *
- * Returns: string, or %NULL if unset
- *
- * Since: 0.6.1
- **/
-const gchar *
-as_app_get_version (AsApp *app)
-{
- AsAppPrivate *priv = GET_PRIVATE (app);
- return priv->version;
-}
-
static gboolean
as_app_validate_utf8 (const gchar *text)
{
@@ -2204,23 +2180,6 @@ as_app_set_branch (AsApp *app, const gchar *branch)
}
/**
- * as_app_set_version:
- * @app: a #AsApp instance.
- * @version: the version, e.g. "1.2.3".
- *
- * Set the version number of this application.
- *
- * Since: 0.6.1
- **/
-void
-as_app_set_version (AsApp *app, const gchar *version)
-{
- AsAppPrivate *priv = GET_PRIVATE (app);
- g_free (priv->version);
- priv->version = g_strdup (version);
-}
-
-/**
* as_app_set_update_contact:
* @app: a #AsApp instance.
* @update_contact: the project license string.
@@ -3528,10 +3487,6 @@ as_app_subsume_private (AsApp *app, AsApp *donor, AsAppSubsumeFlags flags)
if (priv->branch != NULL)
as_app_set_branch (app, priv->branch);
- /* version */
- if (priv->version != NULL)
- as_app_set_version (app, priv->version);
-
/* source_pkgname */
if (priv->source_pkgname != NULL)
as_app_set_source_pkgname (app, priv->source_pkgname);
diff --git a/libappstream-glib/as-app.h b/libappstream-glib/as-app.h
index f9c6f90..d0b3ba3 100644
--- a/libappstream-glib/as-app.h
+++ b/libappstream-glib/as-app.h
@@ -353,7 +353,6 @@ const gchar *as_app_get_metadata_license (AsApp *app);
const gchar *as_app_get_update_contact (AsApp *app);
const gchar *as_app_get_source_file (AsApp *app);
const gchar *as_app_get_branch (AsApp *app);
-const gchar *as_app_get_version (AsApp *app);
const gchar *as_app_get_name (AsApp *app,
const gchar *locale);
const gchar *as_app_get_comment (AsApp *app,
@@ -425,8 +424,6 @@ void as_app_set_source_file (AsApp *app,
const gchar *source_file);
void as_app_set_branch (AsApp *app,
const gchar *branch);
-void as_app_set_version (AsApp *app,
- const gchar *version);
void as_app_set_priority (AsApp *app,
gint priority);
void as_app_add_category (AsApp *app,
diff --git a/libappstream-glib/as-self-test.c b/libappstream-glib/as-self-test.c
index 6729b24..e6dbff2 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), ==, "*/flatpak/*/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>");
@@ -2989,19 +2989,19 @@ as_test_store_prefix_func (void)
"flatpak-user:org.gnome.Software.desktop");
/* exact unique match */
- app_tmp = as_store_get_app_by_unique_id (store, "*/*/*/*/test/*/*/*",
+ app_tmp = as_store_get_app_by_unique_id (store, "*/*/*/*/test/*/*",
AS_STORE_SEARCH_FLAG_NONE);
g_assert (app_tmp == NULL);
- app_tmp = as_store_get_app_by_unique_id (store, "*/*/*/*/test/*/*/*",
+ app_tmp = as_store_get_app_by_unique_id (store, "*/*/*/*/test/*/*",
AS_STORE_SEARCH_FLAG_USE_WILDCARDS);
g_assert (app_tmp == NULL);
- app_tmp = as_store_get_app_by_unique_id (store, "*/*/*/*/org.gnome.Software.desktop/*/*/*",
+ app_tmp = as_store_get_app_by_unique_id (store, "*/*/*/*/org.gnome.Software.desktop/*/*",
AS_STORE_SEARCH_FLAG_NONE);
g_assert (app_tmp != NULL);
- app_tmp = as_store_get_app_by_unique_id (store, "*/*/*/*/org.gnome.Software.desktop/*/*/*",
+ app_tmp = as_store_get_app_by_unique_id (store, "*/*/*/*/org.gnome.Software.desktop/*/*",
AS_STORE_SEARCH_FLAG_USE_WILDCARDS);
g_assert (app_tmp != NULL);
- app_tmp = as_store_get_app_by_unique_id (store, "*/*/*/*/*/*/*/*",
+ app_tmp = as_store_get_app_by_unique_id (store, "*/*/*/*/*/*/*",
AS_STORE_SEARCH_FLAG_USE_WILDCARDS);
g_assert (app_tmp != NULL);
}
@@ -3027,10 +3027,10 @@ as_test_store_wildcard_func (void)
as_store_add_app (store, app2);
/* check negative match */
- app_tmp = as_store_get_app_by_unique_id (store, "*/*/xxx/*/gimp.desktop/*/*/*",
+ app_tmp = as_store_get_app_by_unique_id (store, "*/*/xxx/*/gimp.desktop/*/*",
AS_STORE_SEARCH_FLAG_USE_WILDCARDS);
g_assert (app_tmp == NULL);
- app_tmp = as_store_get_app_by_unique_id (store, "*/snap/*/*/gimp.desktop/*/*/*",
+ app_tmp = as_store_get_app_by_unique_id (store, "*/snap/*/*/gimp.desktop/*/*",
AS_STORE_SEARCH_FLAG_USE_WILDCARDS);
g_assert (app_tmp == NULL);
}
@@ -3071,7 +3071,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), ==, "system/flatpak/remote-name/desktop/test.desktop/x86_64/master/*");
+ g_assert_cmpstr (as_app_get_unique_id (app), ==, "system/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), ==, "remote-name");
g_assert_cmpstr (as_app_get_source_file (app), ==, filename);
@@ -3457,16 +3457,16 @@ as_test_store_unique_func (void)
g_assert_cmpint (apps->len, ==, 3);
app = g_ptr_array_index (apps, 0);
g_assert_cmpstr (as_app_get_unique_id (app), ==,
- "*/package/*/desktop/org.gnome.Software.desktop/*/*/*");
+ "*/package/*/desktop/org.gnome.Software.desktop/*/*");
app = g_ptr_array_index (apps, 1);
g_assert_cmpstr (as_app_get_unique_id (app), ==,
- "*/flatpak/*/desktop/org.gnome.Software.desktop/i386/3-18/*");
+ "*/flatpak/*/desktop/org.gnome.Software.desktop/i386/3-18");
app = g_ptr_array_index (apps, 2);
g_assert_cmpstr (as_app_get_unique_id (app), ==,
- "*/flatpak/*/desktop/org.gnome.Software.desktop/i386/master/*");
+ "*/flatpak/*/desktop/org.gnome.Software.desktop/i386/master");
app = as_store_get_app_by_unique_id (store,
"*/flatpak/*/desktop/"
- "org.gnome.Software.desktop/i386/master/*",
+ "org.gnome.Software.desktop/i386/master",
AS_STORE_SEARCH_FLAG_NONE);
g_assert (app != NULL);
}
@@ -5059,16 +5059,16 @@ as_test_utils_unique_id_func (void)
g_assert (!as_utils_unique_id_equal ("foo/bar/baz", "foo/bar"));
for (i = 0; i < loops; i++) {
- g_assert (as_utils_unique_id_equal ("aa/bb/cc/dd/ee/ff/gg/hh",
- "aa/bb/cc/dd/ee/ff/gg/hh"));
- g_assert (as_utils_unique_id_equal ("aa/bb/cc/dd/ee/ff/gg/hh",
- "aa/*/cc/dd/ee/ff/gg/hh"));
- g_assert (as_utils_unique_id_equal ("user/flatpak/utopia/desktop/gimp.desktop/i386/master/1.2.3",
- "*/*/*/*/*/*/*/*"));
- g_assert (!as_utils_unique_id_equal ("zz/zz/zz/zz/zz/zz/zz/zz",
- "aa/bb/cc/dd/ee/ff/gg/hh"));
- g_assert (!as_utils_unique_id_equal ("user/*/*/shell-extension/gmail_notify@jablona123.pl.shell-extension/*/*/*",
- "*/*/*/desktop/org.gnome.accerciser.desktop/*/*/*"));
+ g_assert (as_utils_unique_id_equal ("aa/bb/cc/dd/ee/ff/gg",
+ "aa/bb/cc/dd/ee/ff/gg"));
+ g_assert (as_utils_unique_id_equal ("aa/bb/cc/dd/ee/ff/gg",
+ "aa/*/cc/dd/ee/ff/gg"));
+ g_assert (as_utils_unique_id_equal ("user/flatpak/utopia/desktop/gimp.desktop/i386/master",
+ "*/*/*/*/*/*/*"));
+ g_assert (!as_utils_unique_id_equal ("zz/zz/zz/zz/zz/zz/zz",
+ "aa/bb/cc/dd/ee/ff/gg"));
+ g_assert (!as_utils_unique_id_equal ("user/*/*/shell-extension/gmail_notify@jablona123.pl.shell-extension/*/*",
+ "*/*/*/desktop/org.gnome.accerciser.desktop/*/*"));
}
duration_ns = g_timer_elapsed (timer, NULL) * 1000000000.f;
g_print ("%.0f ns: ", duration_ns / (loops * 4));
@@ -5094,7 +5094,7 @@ as_test_store_merge_func (void)
as_app_set_source_kind (app1, AS_APP_SOURCE_KIND_APPDATA);
as_app_add_pkgname (app1, "gnome-software");
g_assert_cmpstr (as_app_get_unique_id (app1), ==,
- "*/package/*/*/org.gnome.Software.desktop/*/master/*");
+ "*/package/*/*/org.gnome.Software.desktop/*/master");
as_store_add_app (store, app1);
/* add merge component */
@@ -5108,7 +5108,7 @@ as_test_store_merge_func (void)
as_app_set_source_file (app_merge, "DO-NOT-SUBSUME.xml");
as_store_add_app (store, app_merge);
g_assert_cmpstr (as_app_get_unique_id (app_merge), ==,
- "*/*/*/desktop/org.gnome.Software.desktop/*/*/*");
+ "*/*/*/desktop/org.gnome.Software.desktop/*/*");
/* add app */
app2 = as_app_new ();
@@ -5117,7 +5117,7 @@ as_test_store_merge_func (void)
as_app_set_source_kind (app2, AS_APP_SOURCE_KIND_APPSTREAM);
as_app_add_pkgname (app2, "gnome-software");
g_assert_cmpstr (as_app_get_unique_id (app2), ==,
- "*/package/*/*/org.gnome.Software.desktop/*/stable/*");
+ "*/package/*/*/org.gnome.Software.desktop/*/stable");
as_store_add_app (store, app2);
/* verify that both apps have the category */
diff --git a/libappstream-glib/as-store.c b/libappstream-glib/as-store.c
index 7a87bd1..732d1df 100644
--- a/libappstream-glib/as-store.c
+++ b/libappstream-glib/as-store.c
@@ -465,7 +465,7 @@ _as_app_new_from_unique_id (const gchar *unique_id)
g_autoptr(AsApp) app = as_app_new ();
split = g_strsplit (unique_id, "/", -1);
- if (g_strv_length (split) != 8)
+ if (g_strv_length (split) != AS_UTILS_UNIQUE_ID_PARTS)
return NULL;
if (g_strcmp0 (split[0], AS_APP_UNIQUE_WILDCARD) != 0)
as_app_set_scope (app, as_app_scope_from_string (split[0]));
@@ -491,8 +491,6 @@ _as_app_new_from_unique_id (const gchar *unique_id)
as_app_add_arch (app, split[5]);
if (g_strcmp0 (split[6], AS_APP_UNIQUE_WILDCARD) != 0)
as_app_set_branch (app, split[6]);
- if (g_strcmp0 (split[7], AS_APP_UNIQUE_WILDCARD) != 0)
- as_app_set_version (app, split[7]);
return g_steal_pointer (&app);
}
diff --git a/libappstream-glib/as-utils-private.h b/libappstream-glib/as-utils-private.h
index ebf6fbf..a3bef1a 100644
--- a/libappstream-glib/as-utils-private.h
+++ b/libappstream-glib/as-utils-private.h
@@ -32,6 +32,8 @@
G_BEGIN_DECLS
+#define AS_UTILS_UNIQUE_ID_PARTS 7
+
const gchar *as_hash_lookup_by_locale (GHashTable *hash,
const gchar *locale);
void as_pixbuf_sharpen (GdkPixbuf *src,
diff --git a/libappstream-glib/as-utils.c b/libappstream-glib/as-utils.c
index 80633d6..ece8c3e 100644
--- a/libappstream-glib/as-utils.c
+++ b/libappstream-glib/as-utils.c
@@ -1723,7 +1723,6 @@ _as_utils_fix_unique_id_part (const gchar *tmp)
* @id: AppStream ID, e.g. 'gimp.desktop'
* @arch: Arch, e.g. 'x86_64' or 'i386'
* @branch: Branch, e.g. '3-20' or 'master'
- * @version: Version, e.g. '1.2.3'
*
* Builds a valid unique ID using available data.
*
@@ -1738,8 +1737,7 @@ as_utils_unique_id_build (AsAppScope scope,
AsAppKind kind,
const gchar *id,
const gchar *arch,
- const gchar *branch,
- const gchar *version)
+ const gchar *branch)
{
const gchar *bundle_str = NULL;
const gchar *kind_str = NULL;
@@ -1753,15 +1751,14 @@ as_utils_unique_id_build (AsAppScope scope,
scope_str = as_app_scope_to_string (scope);
if (bundle_kind != AS_BUNDLE_KIND_UNKNOWN)
bundle_str = as_bundle_kind_to_string (bundle_kind);
- return g_strdup_printf ("%s/%s/%s/%s/%s/%s/%s/%s",
+ return g_strdup_printf ("%s/%s/%s/%s/%s/%s/%s",
_as_utils_fix_unique_id_part (scope_str),
_as_utils_fix_unique_id_part (bundle_str),
_as_utils_fix_unique_id_part (origin),
_as_utils_fix_unique_id_part (kind_str),
_as_utils_fix_unique_id_part (id),
_as_utils_fix_unique_id_part (arch),
- _as_utils_fix_unique_id_part (branch),
- _as_utils_fix_unique_id_part (version));
+ _as_utils_fix_unique_id_part (branch));
}
static inline guint
@@ -1794,7 +1791,7 @@ as_utils_unique_id_valid (const gchar *unique_id)
if (unique_id[i] == '/')
sections++;
}
- return sections == 8;
+ return sections == AS_UTILS_UNIQUE_ID_PARTS;
}
static inline gboolean
@@ -1833,7 +1830,7 @@ as_utils_unique_id_equal (const gchar *unique_id1, const gchar *unique_id2)
return FALSE;
/* look at each part */
- for (i = 0; i < 8; i++) {
+ for (i = 0; i < AS_UTILS_UNIQUE_ID_PARTS; i++) {
const gchar *tmp1 = unique_id1 + last1;
const gchar *tmp2 = unique_id2 + last2;
diff --git a/libappstream-glib/as-utils.h b/libappstream-glib/as-utils.h
index a648c13..95fdc47 100644
--- a/libappstream-glib/as-utils.h
+++ b/libappstream-glib/as-utils.h
@@ -138,8 +138,7 @@ gchar *as_utils_unique_id_build (AsAppScope scope,
AsAppKind kind,
const gchar *id,
const gchar *arch,
- const gchar *branch,
- const gchar *version);
+ const gchar *branch);
gboolean as_utils_unique_id_equal (const gchar *unique_id1,
const gchar *unique_id2);
gboolean as_utils_unique_id_valid (const gchar *unique_id);