summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHolger Hans Peter Freyther <zecke@selfish.org>2008-10-29 13:58:50 +0100
committerHolger Hans Peter Freyther <zecke@selfish.org>2008-10-29 13:58:50 +0100
commit98bdd580d03fa37c9feb16ecb10577c469c873df (patch)
treecea0a9bfe3de25e460b879d66229d876d4aa5685
parent642fe896f9a69051fd9dfe69cffa7809d339a057 (diff)
parent21fb30fa23351a576ebf1246d9c2bd8bb1a95d26 (diff)
Merge branch 'holger/openmoko-merges' into org.openembedded.dev
-rw-r--r--conf/distro/include/preferred-om-2008-versions.inc2
-rw-r--r--conf/distro/include/sane-srcrevs.inc2
-rw-r--r--packages/apmd/apmd_3.2.2.bb6
-rw-r--r--packages/dropbear/dropbear.inc7
-rw-r--r--packages/dropbear/dropbear/openmoko/default1
-rw-r--r--packages/dropbear/dropbear_0.51.bb4
-rw-r--r--packages/hal/hal_0.5.11.bb (renamed from packages/nonworking/hal/hal_0.5.11.bb)0
-rw-r--r--packages/openmoko-tools/app-restarter_svn.bb20
-rw-r--r--packages/openmoko-tools/openmoko-set-root-password.bb26
-rw-r--r--packages/packagekit/files/d1e096c3267c1c9492041382b954e9327bc8bbec.patch2938
-rw-r--r--packages/packagekit/files/force_depends.patch20
-rw-r--r--packages/packagekit/files/modify_summary_and_adding_reposi_info.patch69
-rw-r--r--packages/packagekit/files/pk-nodocs.patch10
-rw-r--r--packages/packagekit/files/racing_condition.patch244
-rw-r--r--packages/packagekit/files/remove_search_memory_leak.patch51
-rw-r--r--packages/packagekit/files/repository-ping.patch243
-rw-r--r--packages/packagekit/packagekit_git.bb18
-rw-r--r--packages/xserver-kdrive-common/xserver-nodm-init.bb2
-rwxr-xr-xpackages/xserver-kdrive-common/xserver-nodm-init/xserver-nodm3
19 files changed, 710 insertions, 2956 deletions
diff --git a/conf/distro/include/preferred-om-2008-versions.inc b/conf/distro/include/preferred-om-2008-versions.inc
index 3d3c3858e0..43bdc8f259 100644
--- a/conf/distro/include/preferred-om-2008-versions.inc
+++ b/conf/distro/include/preferred-om-2008-versions.inc
@@ -648,7 +648,7 @@ PREFERRED_VERSION_gvim ?= "7.0"
PREFERRED_VERSION_gweled ?= "0.5"
PREFERRED_VERSION_gxine ?= "0.4.1enhanced"
PREFERRED_VERSION_gzip ?= "1.3.5"
-PREFERRED_VERSION_hal ?= "0.5.9"
+PREFERRED_VERSION_hal ?= "0.5.11"
PREFERRED_VERSION_hal-info ?= "20080508"
PREFERRED_VERSION_haserl ?= "0.8.0"
PREFERRED_VERSION_havp ?= "0.86"
diff --git a/conf/distro/include/sane-srcrevs.inc b/conf/distro/include/sane-srcrevs.inc
index da791ff4c5..aa0f82322d 100644
--- a/conf/distro/include/sane-srcrevs.inc
+++ b/conf/distro/include/sane-srcrevs.inc
@@ -14,6 +14,7 @@
SRCREV_pn-accelges ?= "206"
SRCREV_pn-aircrack-ng ?= "802"
SRCREV_pn-alsa-scenario ?= "633aaccc37f845146e490090dbd2a1ebb8064fd6"
+SRCREV_pn-app-restarter ?= "4552"
SRCREV_pn-assassin ?= "217"
SRCREV_pn-assassin-thumbnail ?= "4513"
SRCREV_pn-bfin-uclibc ?= "1857"
@@ -146,6 +147,7 @@ SRCREV_pn-openmoko-panel-memory ?= "3903"
SRCREV_pn-openmoko-panel-usb ?= "3360"
SRCREV_pn-openmoko-panel-wifi ?= "4344"
SRCREV_pn-openmoko-sample2 ?= "3537"
+SRCREV_pn-openmoko-set-root-password ?= "4590"
SRCREV_pn-openmoko-sound-theme-standard2 ?= "4271"
SRCREV_pn-openmoko-tasks2 ?= "399"
SRCREV_pn-openmoko-terminal2 ?= "4726"
diff --git a/packages/apmd/apmd_3.2.2.bb b/packages/apmd/apmd_3.2.2.bb
index 503f830bd9..471ee9ca10 100644
--- a/packages/apmd/apmd_3.2.2.bb
+++ b/packages/apmd/apmd_3.2.2.bb
@@ -3,7 +3,7 @@ SECTION = "base"
PRIORITY = "required"
DEPENDS = "libtool-cross"
LICENSE = "GPL"
-PR = "r11"
+PR = "r11.01"
SRC_URI = "${DEBIAN_MIRROR}/main/a/apmd/apmd_${PV}.orig.tar.gz \
file://debian.patch;patch=1 \
@@ -55,6 +55,10 @@ do_install() {
install -m 0644 ${WORKDIR}/default ${D}${sysconfdir}/default/apmd
oe_libinstall -so libapm ${D}${libdir}
install -m 0644 apm.h ${D}${includedir}
+ for i in `find ${D} -name "*.la"` ; do \
+ sed -i -e s:${STAGING_LIBDIR}:${libdir}:g $i
+ sed -i -e s:${STAGING_DIR_HOST}::g $i
+ done
cat ${WORKDIR}/init | sed -e 's,/usr/sbin,${sbindir},g; s,/etc,${sysconfdir},g;' > ${D}${sysconfdir}/init.d/apmd
chmod 755 ${D}${sysconfdir}/init.d/apmd
diff --git a/packages/dropbear/dropbear.inc b/packages/dropbear/dropbear.inc
index 31edd26cc8..168cedbf8a 100644
--- a/packages/dropbear/dropbear.inc
+++ b/packages/dropbear/dropbear.inc
@@ -14,6 +14,9 @@ SRC_URI = "\
file://allow-nopw.patch \
file://init \
"
+SRC_URI_append_openmoko = "\
+ file://default \
+"
inherit autotools update-rc.d
@@ -56,6 +59,8 @@ do_install() {
-e 's,/usr/bin,${bindir},g' \
-e 's,/usr,${prefix},g' > ${D}${sysconfdir}/init.d/dropbear
chmod 755 ${D}${sysconfdir}/init.d/dropbear
+ test -e ${WORKDIR}/default && \
+ install -m 0644 ${WORKDIR}/default ${D}${sysconfdir}/default/dropbear
}
pkg_postinst () {
@@ -73,3 +78,5 @@ pkg_postrm_append () {
update-alternatives --remove ssh ${bindir}/dropbearmulti
update-alternatives --remove scp ${bindir}/dropbearmulti
}
+
+CONFFILES_${PN}_openmoko += "${sysconfdir}/default/dropbear"
diff --git a/packages/dropbear/dropbear/openmoko/default b/packages/dropbear/dropbear/openmoko/default
new file mode 100644
index 0000000000..19816b32a6
--- /dev/null
+++ b/packages/dropbear/dropbear/openmoko/default
@@ -0,0 +1 @@
+DROPBEAR_PORT=`ip addr list usb0 | awk 'BEGIN { FS="[ /]+" } /inet / { print $3 }'`:22
diff --git a/packages/dropbear/dropbear_0.51.bb b/packages/dropbear/dropbear_0.51.bb
index 888819c0e5..2566fbbd9b 100644
--- a/packages/dropbear/dropbear_0.51.bb
+++ b/packages/dropbear/dropbear_0.51.bb
@@ -1,4 +1,4 @@
require dropbear.inc
-PR = "r1"
+PR = "r1.01"
-SRC_URI += "file://no-host-lookup.patch;patch=1" \ No newline at end of file
+SRC_URI += "file://no-host-lookup.patch;patch=1"
diff --git a/packages/nonworking/hal/hal_0.5.11.bb b/packages/hal/hal_0.5.11.bb
index 5408756510..5408756510 100644
--- a/packages/nonworking/hal/hal_0.5.11.bb
+++ b/packages/hal/hal_0.5.11.bb
diff --git a/packages/openmoko-tools/app-restarter_svn.bb b/packages/openmoko-tools/app-restarter_svn.bb
new file mode 100644
index 0000000000..61b68b5173
--- /dev/null
+++ b/packages/openmoko-tools/app-restarter_svn.bb
@@ -0,0 +1,20 @@
+DESCRIPTION = "Small utility to restart a crashing application"
+LICENSE = "GPL"
+DEPENDS = "virtual/libx11"
+
+SRC_URI="svn://svn.openmoko.org/developers/zecke/;module=app_restarter;proto=http"
+S = "${WORKDIR}/app_restarter"
+PV = "1.0+svnr${SRCREV}"
+PE = "2"
+
+inherit pkgconfig
+
+do_compile() {
+ cd ${S}
+ oe_runmake
+}
+
+do_install() {
+ install -d ${D}/${bindir}
+ install -m 0755 ${S}/app_restarter ${D}/${bindir}/${PN}
+}
diff --git a/packages/openmoko-tools/openmoko-set-root-password.bb b/packages/openmoko-tools/openmoko-set-root-password.bb
new file mode 100644
index 0000000000..f64c7031c1
--- /dev/null
+++ b/packages/openmoko-tools/openmoko-set-root-password.bb
@@ -0,0 +1,26 @@
+DESCRIPTION = "Set the root password."
+SUMMARY = "On installation you will be prompted to set a root password. With \
+this password you can then log into the machine."
+LICENSE = "GPL"
+DEPENDS = "gtk+"
+PKG_TAGS_${PN} = "group::programming"
+
+SRC_URI = "svn://svn.openmoko.org/developers/zecke/;module=root-password;proto=http"
+S = "${WORKDIR}/root-password"
+PV = "1.0+svnr${SRCREV}"
+PE = "1"
+
+do_compile () {
+ cd ${S}
+ oe_runmake
+}
+
+do_install() {
+ install -d ${D}/${sbindir}
+ install -m 0755 ${S}/root-password ${D}/${sbindir}/${PN}
+}
+
+pkg_postinst_${PN} () {
+ # assume we use display 0
+ DISPLAY=:0 ${sbindir}/${PN}
+}
diff --git a/packages/packagekit/files/d1e096c3267c1c9492041382b954e9327bc8bbec.patch b/packages/packagekit/files/d1e096c3267c1c9492041382b954e9327bc8bbec.patch
deleted file mode 100644
index f050a50002..0000000000
--- a/packages/packagekit/files/d1e096c3267c1c9492041382b954e9327bc8bbec.patch
+++ /dev/null
@@ -1,2938 +0,0 @@
-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);
-
- g_free (newid);
-- pk_package_id_free (pi);
- pk_backend_finished (backend);
- return TRUE;
- }
-@@ -592,7 +678,7 @@ backend_get_details_thread (PkBackend *backend)
- static void
- backend_get_details (PkBackend *backend, const gchar *package_id)
- {
-- pk_backend_no_percentage_updates (backend);
-+ pk_backend_set_percentage (backend, PK_BACKEND_PERCENTAGE_INVALID);
- pk_backend_thread_create (backend, backend_get_details_thread);
- }
-
-diff --git a/backends/test/pk-backend-test-dbus.c b/backends/test/pk-backend-test-dbus.c
-index 5dfea32..76686dc 100644
---- a/backends/test/pk-backend-test-dbus.c
-+++ b/backends/test/pk-backend-test-dbus.c
-@@ -36,7 +36,7 @@ static void
- backend_search_name (PkBackend *backend, PkFilterEnum filters, const gchar *search)
- {
- pk_backend_set_allow_cancel (backend, TRUE);
-- pk_backend_no_percentage_updates (backend);
-+ pk_backend_set_percentage (backend, PK_BACKEND_PERCENTAGE_INVALID);
- pk_backend_dbus_search_name (dbus, filters, search);
- }
-
-diff --git a/backends/test/pk-backend-test-spawn.c b/backends/test/pk-backend-test-spawn.c
-index 2958c05..584f44c 100644
---- a/backends/test/pk-backend-test-spawn.c
-+++ b/backends/test/pk-backend-test-spawn.c
-@@ -35,7 +35,7 @@ backend_search_name (PkBackend *backend, PkFilterEnum filters, const gchar *sear
- {
- gchar *filters_text;
- pk_backend_set_allow_cancel (backend, TRUE);
-- pk_backend_no_percentage_updates (backend);
-+ pk_backend_set_percentage (backend, PK_BACKEND_PERCENTAGE_INVALID);
- filters_text = pk_filter_enums_to_text (filters);
- pk_backend_spawn_helper (spawn, "search-name.sh", filters_text, search, NULL);
- g_free (filters_text);
-diff --git a/backends/test/pk-backend-test-succeed.c b/backends/test/pk-backend-test-succeed.c
-index 17cdc6e..c046c1d 100644
---- a/backends/test/pk-backend-test-succeed.c
-+++ b/backends/test/pk-backend-test-succeed.c
-@@ -236,7 +236,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);
- g_timeout_add (200000, backend_search_name_timeout, backend);
- }
-
-diff --git a/backends/yum/helpers/yumBackend.py b/backends/yum/helpers/yumBackend.py
-index f76e27c..5b2da8f 100644
---- a/backends/yum/helpers/yumBackend.py
-+++ b/backends/yum/helpers/yumBackend.py
-@@ -801,6 +801,8 @@ class PackageKitYumBackend(PackageKitBaseBackend):
- old_throttle = self.yumbase.conf.throttle
- self.yumbase.conf.throttle = "60%" # Set bandwidth throttle to 60%
- # to avoid taking all the system's bandwidth.
-+ old_skip_broken = self.yumbase.conf.skip_broken
-+ self.yumbase.conf.skip_broken = 1
-
- try:
- txmbr = self.yumbase.update() # Add all updates to Transaction
-@@ -812,6 +814,7 @@ class PackageKitYumBackend(PackageKitBaseBackend):
- self.error(ERROR_NO_PACKAGES_TO_UPDATE,"Nothing to do")
-
- self.yumbase.conf.throttle = old_throttle
-+ self.yumbase.conf.skip_broken = old_skip_broken
-
- def refresh_cache(self):
- '''
-@@ -905,7 +908,7 @@ class PackageKitYumBackend(PackageKitBaseBackend):
- if txmbrs:
- self._runYumTransaction()
- else:
-- self.error(ERROR_PACKAGE_ALREADY_INSTALLED,"This package could not be installed as it is already installed")
-+ self.error(ERROR_PACKAGE_ALREADY_INSTALLED,"The package is already installed")
-
- def _checkForNewer(self,po):
- pkgs = self.yumbase.pkgSack.returnNewestByName(name=po.name)
-@@ -1003,7 +1006,7 @@ class PackageKitYumBackend(PackageKitBaseBackend):
- return False
-
- if self._is_inst(po):
-- self.error(ERROR_PACKAGE_ALREADY_INSTALLED, "%s is already installed" % str(po))
-+ self.error(ERROR_PACKAGE_ALREADY_INSTALLED, "The package %s is already installed" % str(po))
- return False
-
- if len(self.yumbase.conf.exclude) > 0:
-diff --git a/backends/yum2/helpers/testyum2.py b/backends/yum2/helpers/testyum2.py
-index cdec507..85b47f9 100755
---- a/backends/yum2/helpers/testyum2.py
-+++ b/backends/yum2/helpers/testyum2.py
-@@ -80,7 +80,7 @@ try:
- #iface.GetPackages(FILTER_INSTALLED,'no')
- if cmd == 'get-repolist' or cmd == 'all':
- print "Testing GetRepoList()"
-- iface.GetRepoList()
-+ iface.GetRepoList("")
- if cmd == 'get-updatedetail' or cmd == 'all':
- print "Testing GetUpdateDetail(PKG_ID)"
- iface.GetUpdateDetail(PKG_ID)
-diff --git a/backends/yum2/helpers/yumDBUSBackend.py b/backends/yum2/helpers/yumDBUSBackend.py
-index 9cfed94..29f5b03 100755
---- a/backends/yum2/helpers/yumDBUSBackend.py
-+++ b/backends/yum2/helpers/yumDBUSBackend.py
-@@ -434,7 +434,7 @@ class PackageKitYumBackend(PackageKitBaseBackend):
- try:
- pkgGroupDict = self._buildGroupDict()
- fltlist = filters.split(';')
-- found = {}
-+ installed_nevra = [] # yum returns packages as available even when installed
-
- if not FILTER_NOT_INSTALLED in fltlist:
- # Check installed for group
-@@ -450,21 +450,31 @@ class PackageKitYumBackend(PackageKitBaseBackend):
- group = groupMap[cg] # use the pk group name, instead of yum 'category/group'
- if group == key:
- if self._do_extra_filtering(pkg, fltlist):
-- self._show_package(pkg, INFO_INSTALLED)
-+ package_list.append((pkg,INFO_INSTALLED))
-+ installed_nevra.append(self._get_nevra(pkg))
-+
- if not FILTER_INSTALLED in fltlist:
- # Check available for group
- for pkg in self.yumbase.pkgSack:
- if self._cancel_check("Search cancelled."):
- # _cancel_check() sets the error message, unlocks yum, and calls Finished()
- return
-- group = GROUP_OTHER
-- if pkgGroupDict.has_key(pkg.name):
-- cg = pkgGroupDict[pkg.name]
-- if groupMap.has_key(cg):
-- group = groupMap[cg]
-- if group == key:
-- if self._do_extra_filtering(pkg, fltlist):
-- self._show_package(pkg, INFO_AVAILABLE)
-+
-+ nevra = self._get_nevra(pkg)
-+ if nevra not in installed_nevra:
-+ group = GROUP_OTHER
-+ if pkgGroupDict.has_key(pkg.name):
-+ cg = pkgGroupDict[pkg.name]
-+ if groupMap.has_key(cg):
-+ group = groupMap[cg]
-+ if group == key:
-+ if self._do_extra_filtering(pkg, fltlist):
-+ package_list.append((pkg,INFO_AVAILABLE))
-+
-+ except yum.Errors.GroupsError,e:
-+ self._unlock_yum()
-+ self.ErrorCode(ERROR_GROUP_NOT_FOUND, str(e))
-+ self.Finished(EXIT_FAILED)
- except yum.Errors.RepoError,e:
- self.Message(MESSAGE_NOTICE, "The package cache is invalid and is being rebuilt.")
- self._refresh_yum_cache()
-@@ -473,6 +483,14 @@ class PackageKitYumBackend(PackageKitBaseBackend):
-
- return
-
-+ # basename filter if specified
-+ if FILTER_BASENAME in fltlist:
-+ for (pkg,status) in self._basename_filter(package_list):
-+ self._show_package(pkg,status)
-+ else:
-+ for (pkg,status) in package_list:
-+ self._show_package(pkg,status)
-+
- self._unlock_yum()
- self.Finished(EXIT_SUCCESS)
-
-@@ -724,6 +742,11 @@ class PackageKitYumBackend(PackageKitBaseBackend):
- #we might have a rounding error
- self.PercentageChanged(100)
-
-+ except yum.Errors.RepoError,e:
-+ self._unlock_yum()
-+ self.ErrorCode(ERROR_REPO_CONFIGURATION_ERROR,str(e))
-+ self.Finished(EXIT_FAILED)
-+ self.Exit()
- except yum.Errors.YumBaseError, e:
- self._unlock_yum()
- # This should be a better-defined error, but I'm not sure
-@@ -837,6 +860,7 @@ class PackageKitYumBackend(PackageKitBaseBackend):
- Needed to be implemented in a sub class
- '''
- if inst_file.endswith('.src.rpm'):
-+ self._unlock_yum()
- self.ErrorCode(ERROR_CANNOT_INSTALL_SOURCE_PACKAGE,'Backend will not install a src rpm file')
- self.Finished(EXIT_FAILED)
- return
-@@ -1385,30 +1409,30 @@ class PackageKitYumBackend(PackageKitBaseBackend):
- res = self.yumbase.searchGenerator(searchlist, [key])
- fltlist = filters.split(';')
-
-- available = []
-- count = 1
-+ seen_nevra = [] # yum returns packages as available even when installed
-+ pkg_list = [] # only do the second iteration on not installed pkgs
-+ package_list = [] #we can't do emitting as found if we are post-processing
-+
- for (pkg,values) in res:
- if self._cancel_check("Search cancelled."):
- return False
- # are we installed?
- if pkg.repo.id == 'installed':
-- if FILTER_NOT_INSTALLED not in fltlist:
-- if self._do_extra_filtering(pkg,fltlist):
-- count+=1
-- if count > 100:
-- break
-- self._show_package(pkg, INFO_INSTALLED)
-+ if self._do_extra_filtering(pkg,fltlist):
-+ package_l