423 lines
12 KiB
Diff
423 lines
12 KiB
Diff
|
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 <stdio.h>
|
||
|
#include <libopkg/opkg.h>
|
||
|
|
||
|
-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;
|
||
|
}
|