[PackageKit-commit] packagekit: Branch 'master' - 9 commits
Richard Hughes
hughsient at kemper.freedesktop.org
Fri Oct 10 10:39:46 PDT 2008
backends/alpm/pk-backend-alpm.c | 127 +++++++++++++++++-----------------------
docs/html/img/gpk-log.png |binary
2 files changed, 56 insertions(+), 71 deletions(-)
New commits:
commit 173a2ba4a020b104450ecf3c8052e5b5d3639e4c
Merge: 89fab58... d4d4c62...
Author: Valeriy Lyasotskiy <onestep at ukr.net>
Date: Fri Oct 10 18:57:05 2008 +0300
Merge branch 'master' of git+ssh://onestep_ua@git.packagekit.org/srv/git/PackageKit
commit 89fab583756527ff4e61b8e300a8de7f9eaae63a
Author: Valeriy Lyasotskiy <onestep at ukr.net>
Date: Fri Oct 10 18:56:25 2008 +0300
alpm: don't list available packages with the same version as installed
diff --git a/backends/alpm/pk-backend-alpm.c b/backends/alpm/pk-backend-alpm.c
index 62a8db2..e9e0f0d 100644
--- a/backends/alpm/pk-backend-alpm.c
+++ b/backends/alpm/pk-backend-alpm.c
@@ -51,6 +51,7 @@
int progress_percentage;
int subprogress_percentage;
PkBackend *backend_instance = NULL;
+alpm_list_t *local_result = NULL;
gchar *dl_file_name;
GHashTable *group_map;
@@ -385,7 +386,7 @@ set_repeating_option(const char *ptr, const char *option, void (*optionfunc) (co
*/
static void
option_add_syncfirst(const char *name) {
- syncfirst = alpm_list_add(syncfirst, strdup(name));
+ syncfirst = alpm_list_add (syncfirst, strdup (name));
}
/**
@@ -832,6 +833,23 @@ backend_get_files (PkBackend *backend, gchar **package_ids)
pk_backend_finished (backend);
}
+int
+backend_pkg_cmp (const void *data1, const void *data2) {
+ int comparison;
+ pmpkg_t *pkg1 = (pmpkg_t *) data1;
+ pmpkg_t *pkg2 = (pmpkg_t *) data2;
+ /* compare package names */
+ comparison = strcmp (alpm_pkg_get_name (pkg1), alpm_pkg_get_name (pkg2));
+ if (comparison != 0)
+ return comparison;
+ /* compare package versions */
+ comparison = alpm_pkg_vercmp (alpm_pkg_get_version (pkg1), alpm_pkg_get_version (pkg2));
+ if (comparison != 0)
+ return comparison;
+ /* packages are equal */
+ return 0;
+}
+
void
backend_search (PkBackend *backend, pmdb_t *repo, const gchar *needle, PkAlpmSearchType search_type) {
/* package cache */
@@ -841,13 +859,16 @@ backend_search (PkBackend *backend, pmdb_t *repo, const gchar *needle, PkAlpmSea
const gchar *repo_name;
PkInfoEnum info;
gboolean match;
+ gboolean repo_is_local;
if (repo == alpm_option_get_localdb ()) {
repo_name = ALPM_LOCAL_DB_ALIAS;
info = PK_INFO_ENUM_INSTALLED;
+ repo_is_local = TRUE;
} else {
repo_name = alpm_db_get_name (repo);
info = PK_INFO_ENUM_AVAILABLE;
+ repo_is_local = FALSE;
}
/* get package cache for specified repo */
@@ -891,9 +912,11 @@ backend_search (PkBackend *backend, pmdb_t *repo, const gchar *needle, PkAlpmSea
match = FALSE;
}
- if (match) {
+ if (match && (repo_is_local || alpm_list_find (local_result, pkg, backend_pkg_cmp) == NULL)) {
/* we found what we wanted */
emit_package (backend, pkg, repo_name, info);
+ if (repo_is_local)
+ local_result = alpm_list_add (local_result, pkg);
}
}
}
@@ -908,6 +931,7 @@ backend_get_packages_thread (PkBackend *backend)
gboolean search_installed = pk_bitfield_contain (filters, PK_FILTER_ENUM_INSTALLED);
gboolean search_not_installed = pk_bitfield_contain (filters, PK_FILTER_ENUM_NOT_INSTALLED);
+ local_result = NULL;
if (!search_not_installed) {
/* search in local db */
@@ -922,6 +946,8 @@ backend_get_packages_thread (PkBackend *backend)
backend_search (backend, alpm_list_getdata (repos), NULL, PK_ALPM_SEARCH_TYPE_NULL);
}
+ alpm_list_free (local_result);
+
pk_backend_finished (backend);
return TRUE;
}
@@ -1300,6 +1326,7 @@ backend_resolve_thread (PkBackend *backend)
for (iterator = 0; iterator < g_strv_length (package_ids); ++iterator) {
gboolean search_installed = pk_bitfield_contain (filters, PK_FILTER_ENUM_INSTALLED);
gboolean search_not_installed = pk_bitfield_contain (filters, PK_FILTER_ENUM_NOT_INSTALLED);
+ local_result = NULL;
if (!search_not_installed) {
/* search in local db */
@@ -1313,6 +1340,8 @@ backend_resolve_thread (PkBackend *backend)
for (repos = alpm_option_get_syncdbs (); repos; repos = alpm_list_next (repos))
backend_search (backend, alpm_list_getdata (repos), package_ids[iterator], PK_ALPM_SEARCH_TYPE_RESOLVE);
}
+
+ alpm_list_free (local_result);
}
pk_backend_finished (backend);
@@ -1332,20 +1361,22 @@ backend_resolve (PkBackend *backend, PkBitfield filters, gchar **package_ids)
}
/**
- * backend_search_details_thread:
+ * backend_search_thread:
*/
static gboolean
-backend_search_details_thread (PkBackend *backend)
+backend_search_thread (PkBackend *backend)
{
const gchar *search = pk_backend_get_string (backend, "search");
PkBitfield filters = pk_backend_get_uint (backend, "filters");
+ PkAlpmSearchType search_type = pk_backend_get_uint (backend, "search-type");
gboolean search_installed = pk_bitfield_contain (filters, PK_FILTER_ENUM_INSTALLED);
gboolean search_not_installed = pk_bitfield_contain (filters, PK_FILTER_ENUM_NOT_INSTALLED);
+ local_result = NULL;
if (!search_not_installed) {
/* search in local db */
- backend_search (backend, alpm_option_get_localdb (), search, PK_ALPM_SEARCH_TYPE_DETAILS);
+ backend_search (backend, alpm_option_get_localdb (), search, search_type);
}
if (!search_installed) {
@@ -1353,9 +1384,11 @@ backend_search_details_thread (PkBackend *backend)
alpm_list_t *repos;
/* iterate repos */
for (repos = alpm_option_get_syncdbs (); repos; repos = alpm_list_next (repos))
- backend_search (backend, alpm_list_getdata (repos), search, PK_ALPM_SEARCH_TYPE_DETAILS);
+ backend_search (backend, alpm_list_getdata (repos), search, search_type);
}
+ alpm_list_free (local_result);
+
pk_backend_finished (backend);
return TRUE;
}
@@ -1368,37 +1401,9 @@ backend_search_details (PkBackend *backend, PkBitfield filters, const gchar *sea
{
pk_backend_set_status (backend, PK_STATUS_ENUM_QUERY);
pk_backend_set_percentage (backend, PK_BACKEND_PERCENTAGE_INVALID);
+ pk_backend_set_uint (backend, "search-type", PK_ALPM_SEARCH_TYPE_DETAILS);
- pk_backend_thread_create (backend, backend_search_details_thread);
-}
-
-/**
- * backend_search_group_thread:
- */
-static gboolean
-backend_search_group_thread (PkBackend *backend)
-{
- const gchar *search = pk_backend_get_string (backend, "search");
- PkBitfield filters = pk_backend_get_uint (backend, "filters");
-
- gboolean search_installed = pk_bitfield_contain (filters, PK_FILTER_ENUM_INSTALLED);
- gboolean search_not_installed = pk_bitfield_contain (filters, PK_FILTER_ENUM_NOT_INSTALLED);
-
- if (!search_not_installed) {
- /* search in local db */
- backend_search (backend, alpm_option_get_localdb (), search, PK_ALPM_SEARCH_TYPE_GROUP);
- }
-
- if (!search_installed) {
- /* search in sync repos */
- alpm_list_t *repos;
- /* iterate repos */
- for (repos = alpm_option_get_syncdbs (); repos; repos = alpm_list_next (repos))
- backend_search (backend, alpm_list_getdata (repos), search, PK_ALPM_SEARCH_TYPE_GROUP);
- }
-
- pk_backend_finished (backend);
- return TRUE;
+ pk_backend_thread_create (backend, backend_search_thread);
}
/**
@@ -1409,37 +1414,9 @@ backend_search_group (PkBackend *backend, PkBitfield filters, const gchar *searc
{
pk_backend_set_status (backend, PK_STATUS_ENUM_QUERY);
pk_backend_set_percentage (backend, PK_BACKEND_PERCENTAGE_INVALID);
+ pk_backend_set_uint (backend, "search-type", PK_ALPM_SEARCH_TYPE_GROUP);
- pk_backend_thread_create (backend, backend_search_group_thread);
-}
-
-/**
- * backend_search_name_thread:
- */
-static gboolean
-backend_search_name_thread (PkBackend *backend)
-{
- const gchar *search = pk_backend_get_string (backend, "search");
- PkBitfield filters = pk_backend_get_uint (backend, "filters");
-
- gboolean search_installed = pk_bitfield_contain (filters, PK_FILTER_ENUM_INSTALLED);
- gboolean search_not_installed = pk_bitfield_contain (filters, PK_FILTER_ENUM_NOT_INSTALLED);
-
- if (!search_not_installed) {
- /* search in local db */
- backend_search (backend, alpm_option_get_localdb (), search, PK_ALPM_SEARCH_TYPE_NAME);
- }
-
- if (!search_installed) {
- /* search in sync repos */
- alpm_list_t *repos;
- /* iterate repos */
- for (repos = alpm_option_get_syncdbs (); repos; repos = alpm_list_next (repos))
- backend_search (backend, alpm_list_getdata (repos), search, PK_ALPM_SEARCH_TYPE_NAME);
- }
-
- pk_backend_finished (backend);
- return TRUE;
+ pk_backend_thread_create (backend, backend_search_thread);
}
/**
@@ -1450,8 +1427,9 @@ backend_search_name (PkBackend *backend, PkBitfield filters, const gchar *search
{
pk_backend_set_status (backend, PK_STATUS_ENUM_QUERY);
pk_backend_set_percentage (backend, PK_BACKEND_PERCENTAGE_INVALID);
+ pk_backend_set_uint (backend, "search-type", PK_ALPM_SEARCH_TYPE_NAME);
- pk_backend_thread_create (backend, backend_search_name_thread);
+ pk_backend_thread_create (backend, backend_search_thread);
}
/**
commit d4d4c62fc8a2b940456415abb664cbe689a49335
Author: Richard Hughes <richard at hughsie.com>
Date: Fri Oct 10 16:37:26 2008 +0100
trivial: screenshot update
diff --git a/docs/html/img/gpk-log.png b/docs/html/img/gpk-log.png
index 467359d..9ae1df9 100644
Binary files a/docs/html/img/gpk-log.png and b/docs/html/img/gpk-log.png differ
commit d41195244de74b0b1ea1254eeb8790a0d497989d
Merge: 06e6982... e086880...
Author: Valeriy Lyasotskiy <onestep at ukr.net>
Date: Fri Oct 10 09:11:09 2008 +0300
Merge branch 'master' of git+ssh://onestep_ua@git.packagekit.org/srv/git/PackageKit
commit 06e6982ad1193e6c532737d2a9653f9574098d42
Author: Valeriy Lyasotskiy <onestep at ukr.net>
Date: Fri Oct 10 09:11:01 2008 +0300
alpm: added get_mime_types
diff --git a/backends/alpm/pk-backend-alpm.c b/backends/alpm/pk-backend-alpm.c
index b31eb4b..38b3d94 100644
--- a/backends/alpm/pk-backend-alpm.c
+++ b/backends/alpm/pk-backend-alpm.c
@@ -665,6 +665,15 @@ backend_get_filters (PkBackend *backend)
}
/**
+ * backend_get_mime_types:
+ */
+static gchar *
+backend_get_mime_types (PkBackend *backend)
+{
+ return g_strdup ("application/x-compressed-tar");
+}
+
+/**
* backend_cancel:
**/
static void
@@ -1451,7 +1460,6 @@ backend_search_name (PkBackend *backend, PkBitfield filters, const gchar *search
static void
backend_update_packages (PkBackend *backend, gchar **package_ids)
{
- /* TODO: process the entire list */
backend_install_packages (backend, package_ids);
}
@@ -1462,7 +1470,7 @@ PK_BACKEND_OPTIONS (
backend_destroy, /* destroy */
backend_get_groups, /* get_groups */
backend_get_filters, /* get_filters */
- NULL, /* get_mime_types */
+ backend_get_mime_types, /* get_mime_types */
backend_cancel, /* cancel */
NULL, /* download_packages */
NULL, /* get_categories */
commit 3a057f2962188038d14c2ce5d0958ee6740a0710
Merge: edc5f22... 77da133...
Author: Valeriy Lyasotskiy <onestep at ukr.net>
Date: Wed Oct 8 16:58:35 2008 +0300
Merge branch 'master' of git+ssh://onestep_ua@git.packagekit.org/srv/git/PackageKit
commit edc5f22f8ba2056e0aa3d6759a7a76dc7721444e
Merge: 68c8a7c... 98bc037...
Author: Valeriy Lyasotskiy <onestep at ukr.net>
Date: Wed Oct 8 14:52:49 2008 +0300
Merge branch 'master' of git+ssh://onestep_ua@git.packagekit.org/srv/git/PackageKit
commit 68c8a7ce310f5e0b919689b5bc99fd41abe32d88
Merge: fd754bc... f8da2ab...
Author: Valeriy Lyasotskiy <onestep at ukr.net>
Date: Tue Oct 7 02:13:45 2008 +0300
Merge branch 'master' of git+ssh://onestep_ua@git.packagekit.org/srv/git/PackageKit
commit fd754bc9cc0b125494bebd59f9a58350621dafe9
Author: Valeriy Lyasotskiy <onestep at ukr.net>
Date: Tue Oct 7 02:13:38 2008 +0300
alpm: remove obsolete comments :)
diff --git a/backends/alpm/pk-backend-alpm.c b/backends/alpm/pk-backend-alpm.c
index 25fbda6..faf6a2a 100644
--- a/backends/alpm/pk-backend-alpm.c
+++ b/backends/alpm/pk-backend-alpm.c
@@ -642,7 +642,6 @@ backend_destroy (PkBackend *backend)
static PkBitfield
backend_get_groups (PkBackend *backend)
{
- // TODO: Provide support for groups in alpm
return pk_bitfield_from_enums (
PK_GROUP_ENUM_DESKTOP_GNOME,
PK_GROUP_ENUM_DESKTOP_KDE,
@@ -861,11 +860,11 @@ backend_search (PkBackend *backend, pmdb_t *repo, const gchar *needle, PkAlpmSea
match = strstr (alpm_pkg_get_name (pkg), needle) != NULL;
break;
case PK_ALPM_SEARCH_TYPE_DETAILS:
- /* TODO: strcasestr() is a non-standard extension, replace it? */
/* workaround for buggy packages with no description */
if (alpm_pkg_get_desc (pkg) == NULL)
match = FALSE;
else
+ /* TODO: strcasestr is a non-standard extension, replace it? */
match = strcasestr (alpm_pkg_get_desc (pkg), needle) != NULL;
break;
case PK_ALPM_SEARCH_TYPE_GROUP:
More information about the PackageKit-commit
mailing list