[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