Index: PackageKit-0.6.0/backends/opkg/pk-backend-opkg.c =================================================================== --- PackageKit-0.6.0.orig/backends/opkg/pk-backend-opkg.c 2010-01-29 09:39:33.000000000 +0000 +++ PackageKit-0.6.0/backends/opkg/pk-backend-opkg.c 2010-01-29 11:30:51.000000000 +0000 @@ -29,8 +29,7 @@ +#include #include -static opkg_t *opkg; - enum { SEARCH_NAME, SEARCH_DESCRIPTION, @@ -62,7 +60,7 @@ * check an opkg package for known GUI dependancies */ static gboolean -opkg_is_gui_pkg (opkg_package_t *pkg) +opkg_is_gui_pkg (pkg_t *pkg) { /* TODO: check appropriate tag */ @@ -84,7 +82,7 @@ * check an opkg package to determine if it is a development package */ static gboolean -opkg_is_devel_pkg (opkg_package_t *pkg) +opkg_is_devel_pkg (pkg_t *pkg) { if (g_strrstr (pkg->name, "-dev")) return TRUE; @@ -105,7 +103,7 @@ * returns true if the tag is present */ static gboolean -opkg_check_tag (opkg_package_t *pkg, const gchar *tag) +opkg_check_tag (pkg_t *pkg, const gchar *tag) { if (pkg->tags && tag) return (g_strrstr (pkg->tags, tag) != NULL); @@ -118,7 +116,7 @@ { switch (err) { - case OPKG_NO_ERROR: +/* case OPKG_NO_ERROR: break; case OPKG_PACKAGE_NOT_INSTALLED: pk_backend_error_code (backend, PK_ERROR_ENUM_PACKAGE_NOT_INSTALLED, NULL); @@ -140,7 +138,7 @@ break; case OPKG_PACKAGE_NOT_AVAILABLE: pk_backend_error_code (backend, PK_ERROR_ENUM_PACKAGE_NOT_FOUND, NULL); - break; + break;*/ default: opkg_unknown_error (backend, err, "Update package"); } @@ -152,7 +150,7 @@ static void backend_initialize (PkBackend *backend) { - opkg = opkg_new (); + int opkg = opkg_new (); if (!opkg) { pk_backend_error_code (backend, @@ -162,8 +160,8 @@ } #ifdef OPKG_OFFLINE_ROOT - opkg_set_option (opkg, (char *) "offline_root", OPKG_OFFLINE_ROOT); - opkg_re_read_config_files (opkg); + opkg_set_option ((char *) "offline_root", OPKG_OFFLINE_ROOT); + opkg_re_read_config_files (); #endif } @@ -174,22 +172,22 @@ static void backend_destroy (PkBackend *backend) { - opkg_free (opkg); + opkg_free (); } static void -pk_opkg_progress_cb (opkg_t *_opkg, const opkg_progress_data_t *pdata, void *data) +pk_opkg_progress_cb (const opkg_progress_data_t *pdata, void *data) { - PkBackend *backend = PK_BACKEND (data); + PkBackend *backend = (PkBackend*) data; if (!backend) return; pk_backend_set_percentage (backend, pdata->percentage); - if (pdata->package) + if (pdata->pkg) { gchar *uid; - opkg_package_t *pkg = pdata->package; + pkg_t *pkg = pdata->pkg; gint status = PK_INFO_ENUM_UNKNOWN; uid = g_strdup_printf ("%s;%s;%s;", @@ -225,12 +223,12 @@ { int ret; - ret = opkg_update_package_lists (opkg, pk_opkg_progress_cb, backend); + ret = opkg_update_package_lists (pk_opkg_progress_cb, backend); if (ret) { - if (ret == OPKG_DOWNLOAD_FAILED) - pk_backend_error_code (backend, PK_ERROR_ENUM_REPO_NOT_AVAILABLE, NULL); - else +// if (ret == OPKG_DOWNLOAD_FAILED) +// pk_backend_error_code (backend, PK_ERROR_ENUM_REPO_NOT_AVAILABLE, NULL); +// else opkg_unknown_error (backend, ret, "Refreshing cache"); } pk_backend_finished (backend); @@ -256,7 +254,7 @@ */ static void -pk_opkg_package_list_cb (opkg_t *_opkg, opkg_package_t *pkg, void *data) +pk_opkg_package_list_cb (pkg_t *pkg, void *data) { SearchParams *params = (SearchParams*) data; gchar *uid; @@ -298,7 +296,7 @@ uid = g_strdup_printf ("%s;%s;%s;", pkg->name, pkg->version, pkg->architecture); - if (pkg->installed) + if (pkg->state_status == SS_INSTALLED) status = PK_INFO_ENUM_INSTALLED; else status = PK_INFO_ENUM_AVAILABLE; @@ -318,10 +316,10 @@ opkg_is_gui_pkg (pkg)) goto end_handle; if (pk_bitfield_contain(filters, PK_FILTER_ENUM_INSTALLED) && - (!pkg->installed)) + (pkg->state_status != SS_INSTALLED)) goto end_handle; if (pk_bitfield_contain(filters, PK_FILTER_ENUM_NOT_INSTALLED) && - (pkg->installed)) + (pkg->state_status == SS_INSTALLED)) goto end_handle; pk_backend_package (params->backend, status, uid, pkg->description); @@ -338,7 +336,7 @@ params = pk_backend_get_pointer (backend, "search-params"); - opkg_list_packages (opkg, pk_opkg_package_list_cb, params); + opkg_list_packages (pk_opkg_package_list_cb, params); pk_backend_finished (params->backend); @@ -349,7 +347,7 @@ } static void -backend_search_name (PkBackend *backend, PkBitfield filters, const gchar *search) +backend_search_name (PkBackend *backend, PkBitfield filters, gchar **search) { SearchParams *params; @@ -360,7 +358,7 @@ params = g_new0 (SearchParams, 1); params->filters = filters; params->search_type = SEARCH_NAME; - params->needle = g_utf8_strdown (search, -1); + params->needle = g_utf8_strdown (search[0], -1); params->backend = backend; pk_backend_set_pointer (backend, "search-params", params); @@ -371,7 +369,7 @@ * backend_search_description: */ static void -backend_search_description (PkBackend *backend, PkBitfield filters, const gchar *search) +backend_search_description (PkBackend *backend, PkBitfield filters, gchar **search) { SearchParams *params; @@ -382,7 +380,7 @@ params = g_new0 (SearchParams, 1); params->filters = filters; params->search_type = SEARCH_DESCRIPTION; - params->needle = g_utf8_strdown (search, -1); + params->needle = g_utf8_strdown (search[0], -1); params->backend = backend; pk_backend_set_pointer (backend, "search-params", params); @@ -390,7 +388,7 @@ } static void -backend_search_group (PkBackend *backend, PkBitfield filters, const gchar *search) +backend_search_group (PkBackend *backend, PkBitfield filters, gchar **search) { SearchParams *params; @@ -401,7 +399,7 @@ params = g_new0 (SearchParams, 1); params->filters = filters; params->search_type = SEARCH_TAG; - params->needle = g_strdup_printf ("group::%s", search); + params->needle = g_strdup_printf ("group::%s", search[0]); params->backend = backend; pk_backend_set_pointer (backend, "search-params", params); @@ -412,9 +410,9 @@ static gboolean backend_install_packages_thread (PkBackend *backend) { - PkPackageId *pi; gint err, i; gchar **package_ids; + gchar **parts; package_ids = pk_backend_get_strv (backend, "pkids"); @@ -424,13 +422,13 @@ { pk_backend_package (backend, PK_INFO_ENUM_INSTALLING, package_ids[i], NULL); - pi = pk_package_id_new_from_string (package_ids[i]); + parts = pk_package_id_split (package_ids[i]); - err = opkg_install_package (opkg, pi->name, pk_opkg_progress_cb, backend); + err = opkg_install_package (parts[PK_PACKAGE_ID_NAME], pk_opkg_progress_cb, backend); if (err) handle_install_error (backend, err); - pk_package_id_free (pi); + g_strfreev (parts); if (err != 0) break; } @@ -453,9 +451,9 @@ static gboolean backend_remove_packages_thread (PkBackend *backend) { - PkPackageId *pi; gint err, i; gchar **package_ids; + gchar **parts; gboolean allow_deps; gboolean autoremove; gpointer *data; @@ -467,29 +465,30 @@ autoremove = GPOINTER_TO_INT (data[2]); g_free (data); - opkg_set_option (opkg, (char *)"autoremove", &autoremove); - opkg_set_option (opkg, (char *)"force_removal_of_dependent_packages", &allow_deps); + opkg_set_option ((char *)"autoremove", &autoremove); + opkg_set_option ((char *)"force_removal_of_dependent_packages", &allow_deps); err = 0; for (i = 0; package_ids[i]; i++) { - pi = pk_package_id_new_from_string (package_ids[i]); pk_backend_package (backend, PK_INFO_ENUM_REMOVING, package_ids[i], NULL); - err = opkg_remove_package (opkg, pi->name, pk_opkg_progress_cb, backend); + parts = pk_package_id_split (package_ids[i]); + + err = opkg_remove_package (parts[PK_PACKAGE_ID_NAME], pk_opkg_progress_cb, backend); switch (err) { - case OPKG_NO_ERROR: - break; - case OPKG_PACKAGE_NOT_INSTALLED: - pk_backend_error_code (backend, PK_ERROR_ENUM_PACKAGE_NOT_INSTALLED, NULL); - break; + //case OPKG_NO_ERROR: + // break; + //case OPKG_PACKAGE_NOT_INSTALLED: + // pk_backend_error_code (backend, PK_ERROR_ENUM_PACKAGE_NOT_INSTALLED, NULL); + // break; default: opkg_unknown_error (backend, err, "Remove"); } - pk_package_id_free (pi); + g_strfreev (parts); if (err != 0) break; @@ -540,7 +539,7 @@ gint err; /* FIXME: support only_trusted */ - err = opkg_upgrade_all (opkg, pk_opkg_progress_cb, backend); + err = opkg_upgrade_all (pk_opkg_progress_cb, backend); if (err) opkg_unknown_error (backend, err, "Upgrading system"); @@ -564,29 +563,28 @@ static gboolean backend_update_package_thread (PkBackend *backend) { - PkPackageId *pi; + gchar **parts; gint err = 0; const gchar *package_id; /* FIXME: support only_trusted */ package_id = pk_backend_get_string (backend, "pkgid"); - pi = pk_package_id_new_from_string (package_id); + parts = pk_package_id_split (package_id); - if (!pi->name || !pi->version) + if (!parts) { pk_backend_error_code (backend, PK_ERROR_ENUM_PACKAGE_NOT_FOUND, "Package not found"); - pk_package_id_free (pi); pk_backend_finished (backend); return FALSE; } - err = opkg_upgrade_package (opkg, pi->name, pk_opkg_progress_cb, backend); + err = opkg_upgrade_package (parts[PK_PACKAGE_ID_NAME], pk_opkg_progress_cb, backend); if (err) handle_install_error (backend, err); - pk_package_id_free (pi); + g_strfreev (parts); pk_backend_finished (backend); return (err != 0); } @@ -610,13 +608,13 @@ */ static void -pk_opkg_list_upgradable_cb (opkg_t *_opkg, opkg_package_t *pkg, void *data) +pk_opkg_list_upgradable_cb (pkg_t *pkg, void *data) { - PkBackend *backend = PK_BACKEND (data); + PkBackend *backend = (PkBackend*) data; gchar *uid; gint status; - if (pkg->installed) + if (pkg->state_status == SS_INSTALLED) status = PK_INFO_ENUM_INSTALLED; else status = PK_INFO_ENUM_AVAILABLE; @@ -631,7 +629,7 @@ static gboolean backend_get_updates_thread (PkBackend *backend) { - opkg_list_upgradable_packages (opkg, pk_opkg_list_upgradable_cb, backend); + opkg_list_upgradable_packages (pk_opkg_list_upgradable_cb, backend); pk_backend_finished (backend); return TRUE; } @@ -668,16 +666,18 @@ static gboolean backend_get_details_thread (PkBackend *backend) { - PkPackageId *pi; gchar **package_ids; + gchar **parts; int group_index; PkGroupEnum group = 0; - opkg_package_t *pkg; + pkg_t *pkg; gchar *newid; package_ids = pk_backend_get_strv(backend, "package_ids"); - pi = pk_package_id_new_from_string (package_ids[0]); - if (pi == NULL) + parts = pk_package_id_split (package_ids[0]); + + + if (!parts) { pk_backend_error_code (backend, PK_ERROR_ENUM_PACKAGE_ID_INVALID, "invalid package id"); pk_backend_finished (backend); @@ -685,8 +685,8 @@ } - pkg = opkg_find_package (opkg, pi->name, pi->version, pi->arch, pi->data); - pk_package_id_free (pi); + pkg = opkg_find_package (parts[PK_PACKAGE_ID_NAME], parts[PK_PACKAGE_ID_VERSION], parts[PK_PACKAGE_ID_ARCH], parts[PK_PACKAGE_ID_DATA]); + g_strfreev (parts); if (!pkg) { @@ -695,7 +695,7 @@ return FALSE; } - newid = g_strdup_printf ("%s;%s;%s;%s", pkg->name, pkg->version, pkg->architecture, pkg->repository); + newid = g_strdup_printf ("%s;%s;%s;%s", pkg->name, pkg->version, pkg->architecture, pkg->src->name); if (pkg->tags) { for (group_index = 0; group < PK_GROUP_ENUM_LAST; group_index++) { @@ -706,9 +706,8 @@ } } - pk_backend_details (backend, newid, NULL, group, pkg->description, pkg->url, pkg->size); + pk_backend_details (backend, newid, NULL, group, pkg->description, NULL, pkg->size); g_free (newid); - opkg_package_free(pkg); pk_backend_finished (backend); return TRUE; }