[oe-commits] org.oe.dev opkg: update to 0.1.4

koen commit oe at amethyst.openembedded.net
Sat May 31 10:33:52 UTC 2008


opkg: update to 0.1.4
packagekit: update to 0.2.1 to match opkg API (with addional patch from openmoko)

Author: koen at openembedded.org
Branch: org.openembedded.dev
Revision: 870d6ff572b3672311229555638ff02998a6a411
ViewMTN: http://monotone.openembedded.org/revision/info/870d6ff572b3672311229555638ff02998a6a411
Files:
1
packages/packagekit/files/d1e096c3267c1c9492041382b954e9327bc8bbec.patch
packages/packagekit/files/pk-nodocs.patch
conf/distro/include/sane-srcrevs.inc
packages/opkg/opkg-native_svn.bb
packages/opkg/opkg-nogpg_svn.bb
packages/opkg/opkg.inc
packages/packagekit/packagekit_git.bb
Diffs:

#
# mt diff -r07f17fd7e5d8577328e92a0fd79dc3020fa7c5be -r870d6ff572b3672311229555638ff02998a6a411
#
#
#
# add_file "packages/packagekit/files/d1e096c3267c1c9492041382b954e9327bc8bbec.patch"
#  content [3f6aeebb5d160701e6668a69f935978eca1ce3e5]
# 
# add_file "packages/packagekit/files/pk-nodocs.patch"
#  content [b3b9eebcecc52c62f52efb37d0750215812f9682]
# 
# patch "conf/distro/include/sane-srcrevs.inc"
#  from [22d6b2f31d778185db83a16fe867bc5cb9379c49]
#    to [a880059b64104df8e4727d952eede20708b5044b]
# 
# patch "packages/opkg/opkg-native_svn.bb"
#  from [7ec178fa2741f4880831408c2c1c976c71054742]
#    to [420b4102caa19ab8b18616eafcc931683bda822f]
# 
# patch "packages/opkg/opkg-nogpg_svn.bb"
#  from [6a28b7179459ce3aa52c1ac8cb85a9de1743d5f2]
#    to [68997feeb7d58e7849771bafe6c507b13c98797c]
# 
# patch "packages/opkg/opkg.inc"
#  from [9ac4436f02a39427f0758392d16f4eb7661a64da]
#    to [73c2d4cf20c0434a094b2f11fdf8df4745304ee6]
# 
# patch "packages/packagekit/packagekit_git.bb"
#  from [360888f913726f29b6299c269b64f58b48fe5834]
#    to [3a16f8cf1f8e4923cf19ff3b75a9a0391258ba0a]
#
============================================================
--- packages/packagekit/files/d1e096c3267c1c9492041382b954e9327bc8bbec.patch	3f6aeebb5d160701e6668a69f935978eca1ce3e5
+++ packages/packagekit/files/d1e096c3267c1c9492041382b954e9327bc8bbec.patch	3f6aeebb5d160701e6668a69f935978eca1ce3e5
@@ -0,0 +1,2938 @@
+diff --git a/backends/alpm/pk-backend-alpm.c b/backends/alpm/pk-backend-alpm.c
+index 3270e42..45e7a44 100644
+--- a/backends/alpm/pk-backend-alpm.c
++++ b/backends/alpm/pk-backend-alpm.c
+@@ -895,7 +895,7 @@ backend_get_repo_list (PkBackend *backend, PkFilterEnum filters)
+ static gboolean
+ backend_install_files_thread (PkBackend *backend)
+ {
+-	pk_backend_no_percentage_updates (backend);
++	pk_backend_set_percentage (backend, PK_BACKEND_PERCENTAGE_INVALID);
+ 
+ 	gchar **full_paths = pk_backend_get_strv (backend, "full_paths");
+ 
+@@ -1050,7 +1050,7 @@ backend_install_packages (PkBackend *backend, gchar **package_ids)
+ static gboolean
+ backend_refresh_cache_thread (PkBackend *backend)
+ {
+-	pk_backend_no_percentage_updates (backend);
++	pk_backend_set_percentage (backend, PK_BACKEND_PERCENTAGE_INVALID);
+ 
+ 	if (alpm_trans_init (PM_TRANS_TYPE_SYNC, PM_TRANS_FLAG_NOSCRIPTLET, cb_trans_evt, cb_trans_conv, cb_trans_progress) != 0) {
+ 		pk_backend_error_code (backend, PK_ERROR_ENUM_TRANSACTION_ERROR, alpm_strerror (pm_errno));
+diff --git a/backends/apt/pk-apt-build-db.cpp b/backends/apt/pk-apt-build-db.cpp
+index d47c348..885275d 100644
+--- a/backends/apt/pk-apt-build-db.cpp
++++ b/backends/apt/pk-apt-build-db.cpp
+@@ -40,7 +40,7 @@ void apt_build_db(PkBackend * backend, sqlite3 *db)
+ 	sqlite3_stmt *package = NULL;
+ 
+ 	pk_backend_set_status(backend, PK_STATUS_ENUM_QUERY);
+-	pk_backend_no_percentage_updates(backend);
++	pk_backend_set_percentage (backend, PK_BACKEND_PERCENTAGE_INVALID);
+ 
+ 	sdir = g_build_filename(_config->Find("Dir").c_str(),_config->Find("Dir::State").c_str(),_config->Find("Dir::State::lists").c_str(), NULL);
+ 	dir = g_dir_open(sdir,0,&error);
+diff --git a/backends/apt/pk-sqlite-pkg-cache.cpp b/backends/apt/pk-sqlite-pkg-cache.cpp
+index 770fcdf..1bf9a50 100644
+--- a/backends/apt/pk-sqlite-pkg-cache.cpp
++++ b/backends/apt/pk-sqlite-pkg-cache.cpp
+@@ -81,7 +81,7 @@ sqlite_search_packages_thread (PkBackend *backend)
+ 	const gchar *search;
+ 
+ 	pk_backend_set_status(backend, PK_STATUS_ENUM_QUERY);
+-	pk_backend_no_percentage_updates(backend);
++	pk_backend_set_percentage (backend, PK_BACKEND_PERCENTAGE_INVALID);
+ 	type = pk_backend_get_uint (backend, "type");
+ 	search = pk_backend_get_string (backend, "search");
+ 
+@@ -176,7 +176,7 @@ sqlite_get_details_thread (PkBackend *backend)
+ 	}
+ 
+ 	pk_backend_set_status(backend, PK_STATUS_ENUM_QUERY);
+-	pk_backend_no_percentage_updates(backend);
++	pk_backend_set_percentage (backend, PK_BACKEND_PERCENTAGE_INVALID);
+ 
+ 	pk_debug("finding %s", pi->name);
+ 
+diff --git a/backends/box/pk-backend-box.c b/backends/box/pk-backend-box.c
+index b7b8167..9263781 100644
+--- a/backends/box/pk-backend-box.c
++++ b/backends/box/pk-backend-box.c
+@@ -138,7 +138,7 @@ backend_find_packages_thread (PkBackend *backend)
+ 		filter_box = filter_box | PKG_SEARCH_DETAILS;
+ 	}
+ 
+-	pk_backend_no_percentage_updates (backend);
++	pk_backend_set_percentage (backend, PK_BACKEND_PERCENTAGE_INVALID);
+ 
+ 	db = db_open();
+ 
+diff --git a/backends/dummy/pk-backend-dummy.c b/backends/dummy/pk-backend-dummy.c
+index 49d4e5a..2df445e 100644
+--- a/backends/dummy/pk-backend-dummy.c
++++ b/backends/dummy/pk-backend-dummy.c
+@@ -254,7 +254,7 @@ static void
+ backend_get_updates (PkBackend *backend, PkFilterEnum filters)
+ {
+ 	pk_backend_set_status (backend, PK_STATUS_ENUM_QUERY);
+-	pk_backend_no_percentage_updates (backend);
++	pk_backend_set_percentage (backend, PK_BACKEND_PERCENTAGE_INVALID);
+ 	/* check network state */
+ 	if (!pk_backend_is_online (backend)) {
+ 		pk_backend_error_code (backend, PK_ERROR_ENUM_NO_NETWORK, "Cannot check when offline");
+@@ -268,6 +268,8 @@ static gboolean
+ backend_install_timeout (gpointer data)
+ {
+ 	PkBackend *backend = (PkBackend *) data;
++	guint sub_percent;
++
+ 	if (_progress_percentage == 100) {
+ 		pk_backend_finished (backend);
+ 		return FALSE;
+@@ -283,9 +285,18 @@ backend_install_timeout (gpointer data)
+ 		pk_backend_package (backend, PK_INFO_ENUM_INSTALLING,
+ 				    "gtkhtml2-devel;2.19.1-0.fc8;i386;fedora",
+ 				    "Devel files for gtkhtml");
++		/* this duplicate package should be ignored */
++		pk_backend_package (backend, PK_INFO_ENUM_INSTALLING,
++				    "gtkhtml2-devel;2.19.1-0.fc8;i386;fedora", NULL);
+ 		pk_backend_set_status (backend, PK_STATUS_ENUM_INSTALL);
+ 	}
+-	_progress_percentage += 10;
++	if (_progress_percentage > 30 && _progress_percentage < 50) {
++		sub_percent = ((gfloat) (_progress_percentage - 30.0f) / 20.0f) * 100.0f;
++		pk_backend_set_sub_percentage (backend, sub_percent);
++	} else {
++		pk_backend_set_sub_percentage (backend, PK_BACKEND_PERCENTAGE_INVALID);
++	}
++	_progress_percentage += 1;
+ 	pk_backend_set_percentage (backend, _progress_percentage);
+ 	return TRUE;
+ }
+@@ -348,7 +359,7 @@ backend_install_packages (PkBackend *backend, gchar **package_ids)
+ 	pk_backend_package (backend, PK_INFO_ENUM_DOWNLOADING,
+ 			    "gtkhtml2;2.19.1-4.fc8;i386;fedora",
+ 			    "An HTML widget for GTK+ 2.0");
+-	_signal_timeout = g_timeout_add (1000, backend_install_timeout, backend);
++	_signal_timeout = g_timeout_add (100, backend_install_timeout, backend);
+ }
+ 
+ /**
+@@ -526,7 +537,7 @@ backend_search_name_timeout (gpointer data)
+ static void
+ backend_search_name (PkBackend *backend, PkFilterEnum filters, const gchar *search)
+ {
+-	pk_backend_no_percentage_updates (backend);
++	pk_backend_set_percentage (backend, PK_BACKEND_PERCENTAGE_INVALID);
+ 	pk_backend_set_allow_cancel (backend, TRUE);
+ 	pk_backend_set_status (backend, PK_STATUS_ENUM_QUERY);
+ 	_signal_timeout = g_timeout_add (2000, backend_search_name_timeout, backend);
+diff --git a/backends/opkg/pk-backend-opkg.c b/backends/opkg/pk-backend-opkg.c
+index ecc97be..7649bab 100644
+--- a/backends/opkg/pk-backend-opkg.c
++++ b/backends/opkg/pk-backend-opkg.c
+@@ -155,6 +155,38 @@ pk_opkg_progress_cb (opkg_t *opkg, const opkg_progress_data_t *pdata, void *data
+ 		return;
+ 
+ 	pk_backend_set_percentage (backend, pdata->percentage);
++	if (pdata->package)
++	{
++		gchar *uid;
++		opkg_package_t *pkg = pdata->package;
++		gint status = PK_INFO_ENUM_UNKNOWN;
++
++		uid = g_strdup_printf ("%s;%s;%s;",
++			pkg->name, pkg->version, pkg->architecture);
++
++		if (pdata->action == OPKG_DOWNLOAD)
++			status = PK_INFO_ENUM_DOWNLOADING;
++		else if (pdata->action == OPKG_INSTALL)
++			status = PK_INFO_ENUM_INSTALLING;
++		else if (pdata->action == OPKG_REMOVE)
++			status = PK_INFO_ENUM_REMOVING;
++
++		pk_backend_package (backend, status, uid, pkg->description);
++		g_free (uid);
++	}
++
++	switch (pdata->action)
++	{
++	case OPKG_DOWNLOAD:
++		pk_backend_set_status (backend, PK_STATUS_ENUM_DOWNLOAD);
++		break;
++	case OPKG_INSTALL:
++		pk_backend_set_status (backend, PK_STATUS_ENUM_INSTALL);
++		break;
++	case OPKG_REMOVE:
++		pk_backend_set_status (backend, PK_STATUS_ENUM_REMOVE);
++		break;
++	}
+ }
+ 
+ static gboolean
+@@ -163,8 +195,12 @@ backend_refresh_cache_thread (PkBackend *backend)
+ 	int ret;
+ 
+ 	ret = opkg_update_package_lists (opkg, pk_opkg_progress_cb, backend);
++
+ 	if (ret) {
+-		opkg_unknown_error (backend, ret, "Refreshing cache");
++		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);
+ 
+@@ -178,7 +214,7 @@ static void
+ backend_refresh_cache (PkBackend *backend, gboolean force)
+ {
+ 	pk_backend_set_status (backend, PK_STATUS_ENUM_REFRESH_CACHE);
+-	pk_backend_no_percentage_updates (backend);
++	pk_backend_set_percentage (backend, PK_BACKEND_PERCENTAGE_INVALID);
+ 
+ 
+ 	pk_backend_thread_create (backend, backend_refresh_cache_thread);
+@@ -279,7 +315,7 @@ backend_search_name (PkBackend *backend, PkFilterEnum filters, const gchar *sear
+ 
+ 
+ 	pk_backend_set_status (backend, PK_STATUS_ENUM_QUERY);
+-	pk_backend_no_percentage_updates (backend);
++	pk_backend_set_percentage (backend, PK_BACKEND_PERCENTAGE_INVALID);
+ 
+ 	params = g_new0 (SearchParams, 1);
+ 	params->filters = filters;
+@@ -301,7 +337,7 @@ backend_search_description (PkBackend *backend, PkFilterEnum filters, const gcha
+ 
+ 
+ 	pk_backend_set_status (backend, PK_STATUS_ENUM_QUERY);
+-	pk_backend_no_percentage_updates (backend);
++	pk_backend_set_percentage (backend, PK_BACKEND_PERCENTAGE_INVALID);
+ 
+ 	params = g_new0 (SearchParams, 1);
+ 	params->filters = filters;
+@@ -320,7 +356,7 @@ backend_search_group (PkBackend *backend, PkFilterEnum filters, const gchar *sea
+ 
+ 
+ 	pk_backend_set_status (backend, PK_STATUS_ENUM_QUERY);
+-	pk_backend_no_percentage_updates (backend);
++	pk_backend_set_percentage (backend, PK_BACKEND_PERCENTAGE_INVALID);
+ 
+ 	params = g_new0 (SearchParams, 1);
+ 	params->filters = filters;
+@@ -337,30 +373,52 @@ static gboolean
+ backend_install_packages_thread (PkBackend *backend)
+ {
+ 	PkPackageId *pi;
+-	gint err;
+-	const gchar *package_id;
++	gint err, i;
++	gchar **package_ids;
+ 
+-	package_id = pk_backend_get_string (backend, "pkid");
+-	pk_backend_package (backend, PK_INFO_ENUM_INSTALLING, package_id, NULL);
++	package_ids = pk_backend_get_strv (backend, "pkids");
+ 
+-	pi = pk_package_id_new_from_string (package_id);
++	err = 0;
++
++	for (i = 0; package_ids[i]; i++)
++	{
++		pk_backend_package (backend, PK_INFO_ENUM_INSTALLING, package_ids[0], NULL);
+ 
+-	err = opkg_install_package (opkg, pi->name, pk_opkg_progress_cb, backend);
+-	if (err != 0)
+-		opkg_unknown_error (backend, err, "Install");
++		pi = pk_package_id_new_from_string (package_ids[0]);
++
++		err = opkg_install_package (opkg, pi->name, pk_opkg_progress_cb, backend);
++		switch (err)
++		{
++		case OPKG_NO_ERROR:
++			break;
++		case OPKG_DEPENDANCIES_FAILED:
++			pk_backend_error_code (backend, PK_ERROR_ENUM_DEP_RESOLUTION_FAILED, NULL);
++			break;
++		case OPKG_PACKAGE_ALREADY_INSTALLED:
++			pk_backend_error_code (backend, PK_ERROR_ENUM_PACKAGE_ALREADY_INSTALLED, NULL);
++			break;
++		case OPKG_PACKAGE_NOT_AVAILABLE:
++			pk_backend_error_code (backend, PK_ERROR_ENUM_PACKAGE_NOT_FOUND, NULL);
++			break;
++		default:
++			opkg_unknown_error (backend, err, "Install");
++		}
++		pk_package_id_free (pi);
++		if (err != 0)
++			break;
++	}
+ 
+-	pk_package_id_free (pi);
+ 	pk_backend_finished (backend);
+ 	return (err == 0);
+ }
+ 
+ static void
+-backend_install_packages (PkBackend *backend, gchar **package_id)
++backend_install_packages (PkBackend *backend, gchar **package_ids)
+ {
+-	pk_backend_no_percentage_updates (backend);
++	pk_backend_set_percentage (backend, PK_BACKEND_PERCENTAGE_INVALID);
+ 	pk_backend_set_status (backend, PK_STATUS_ENUM_INSTALL);
+ 
+-	pk_backend_set_string (backend, "pkid", package_id[0]);
++	pk_backend_set_strv (backend, "pkids", package_ids);
+ 
+ 	pk_backend_thread_create (backend, backend_install_packages_thread);
+ }
+@@ -369,7 +427,7 @@ static gboolean
+ backend_remove_packages_thread (PkBackend *backend)
+ {
+ 	PkPackageId *pi;
+-	gint err;
++	gint err, i;
+ 	gchar **package_ids;
+ 	gboolean allow_deps;
+ 	gboolean autoremove;
+@@ -382,19 +440,34 @@ backend_remove_packages_thread (PkBackend *backend)
+ 	autoremove = GPOINTER_TO_INT (data[2]);
+ 	g_free (data);
+ 
+-	pi = pk_package_id_new_from_string (package_ids[0]);
+-	pk_backend_package (backend, PK_INFO_ENUM_REMOVING, package_ids[0], NULL);
+-
+ 	opkg_set_option (opkg, "autoremove", &autoremove);
+ 	opkg_set_option (opkg, "force_removal_of_dependent_packages", &allow_deps);
+ 
+-	err = opkg_remove_package (opkg, pi->name, pk_opkg_progress_cb, backend);
++	err = 0;
+ 
+-	/* TODO: improve error reporting */
+-	if (err != 0)
+-		opkg_unknown_error (backend, err, "Remove");
++	for (i = 0; package_ids[i]; i++)
++	{
++		pi = pk_package_id_new_from_string (package_ids[0]);
++		pk_backend_package (backend, PK_INFO_ENUM_REMOVING, package_ids[0], NULL);
++
++		err = opkg_remove_package (opkg, pi->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;
++		default:
++			opkg_unknown_error (backend, err, "Remove");
++		}
++		pk_package_id_free (pi);
++
++		if (err != 0)
++			break;
++	}
+ 
+-	pk_package_id_free (pi);
+ 	pk_backend_finished (backend);
+ 	return (err == 0);
+ }
+@@ -405,7 +478,7 @@ backend_remove_packages (PkBackend *backend, gchar **package_ids, gboolean allow
+ 	gpointer *params;
+ 
+ 	pk_backend_set_status (backend, PK_STATUS_ENUM_REMOVE);
+-	pk_backend_no_percentage_updates (backend);
++	pk_backend_set_percentage (backend, PK_BACKEND_PERCENTAGE_INVALID);
+ 
+ 	/* params is a small array we can pack our thread parameters into */
+ 	params = g_new0 (gpointer, 2);
+@@ -450,7 +523,7 @@ static void
+ backend_update_system (PkBackend *backend)
+ {
+ 	pk_backend_set_status (backend, PK_STATUS_ENUM_UPDATE);
+-	pk_backend_no_percentage_updates (backend);
++	pk_backend_set_percentage (backend, PK_BACKEND_PERCENTAGE_INVALID);
+ 
+ 	pk_backend_thread_create (backend, backend_update_system_thread);
+ }
+@@ -478,8 +551,14 @@ backend_update_package_thread (PkBackend *backend)
+ 	}
+ 
+ 	err = opkg_upgrade_package (opkg, pi->name, pk_opkg_progress_cb, backend);
+-
+-	if (err != 0) {
++	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;
++	default:
+ 		opkg_unknown_error (backend, err, "Update package");
+ 	}
+ 
+@@ -494,7 +573,7 @@ backend_update_packages (PkBackend *backend, gchar **package_ids)
+ 	gint i;
+ 
+ 	pk_backend_set_status (backend, PK_STATUS_ENUM_UPDATE);
+-	pk_backend_no_percentage_updates (backend);
++	pk_backend_set_percentage (backend, PK_BACKEND_PERCENTAGE_INVALID);
+ 
+ 	for (i = 0; package_ids[i]; i++) {
+ 		pk_backend_set_string (backend, "pkgid", package_ids[i]);
+@@ -536,7 +615,7 @@ static void
+ backend_get_updates (PkBackend *backend, PkFilterEnum filters)
+ {
+ 	pk_backend_set_status (backend, PK_STATUS_ENUM_UPDATE);
+-	pk_backend_no_percentage_updates (backend);
++	pk_backend_set_percentage (backend, PK_BACKEND_PERCENTAGE_INVALID);
+ 
+ 	pk_backend_thread_create (backend, backend_get_updates_thread);
+ }
+@@ -572,19 +651,26 @@ backend_get_details_thread (PkBackend *backend)
+ 	if (pi == NULL)
+ 	{
+ 		pk_backend_error_code (backend, PK_ERROR_ENUM_PACKAGE_ID_INVALID, "invalid package id");
+-		pk_package_id_free (pi);
++		pk_backend_finished (backend);
+ 		return FALSE;
+ 	}
+ 
+ 
+ 	pkg = opkg_find_package (opkg, pi->name, pi->version, pi->arch, pi->data);
++	pk_package_id_free (pi);
++
++	if (!pkg)
++	{
++		pk_backend_error_code (backend, PK_ERROR_ENUM_PACKAGE_NOT_FOUND, NULL);
++		pk_backend_finished (backend);
++		return FALSE;
++	}
+ 
+ 	newid = g_strdup_printf ("%s;%s;%s;%s", pkg->name, pkg->version, pkg->architecture, pkg->repository);
+ 
+ 	pk_backend_details (backend, newid, NULL, 0, pkg->description, pkg->url, pkg->size);
%s
>>> DIFF TRUNCATED @ 16K






More information about the Openembedded-commits mailing list