[PackageKit-commit] packagekit: Branch 'master' - 7 commits
Richard Hughes
hughsient at kemper.freedesktop.org
Fri Apr 18 08:44:32 PDT 2008
backends/yum/helpers/yumBackend.py | 52 +++++++++++++++++++++++--------------
backends/zypp/pk-backend-zypp.cpp | 27 ++++---------------
backends/zypp/zypp-utils.cpp | 7 +++-
backends/zypp/zypp-utils.h | 2 -
src/pk-transaction.c | 16 +----------
5 files changed, 48 insertions(+), 56 deletions(-)
New commits:
commit 3bc35c7c2f82204c01fa3e6af5b4d4f865d2bf74
Merge: a6fc7de... 6eb19d1...
Author: Richard Hughes <richard at hughsie.com>
Date: Fri Apr 18 16:39:29 2008 +0100
Merge branch 'master' of git+ssh://hughsie@git.packagekit.org/srv/git/PackageKit
commit 6eb19d1da3426daf6cfb43179de1d42bc00b157d
Merge: ce19d5c... f44e214...
Author: Robin Norwood <rnorwood at redhat.com>
Date: Fri Apr 18 10:52:36 2008 -0400
Merge branch 'master' of git+ssh://rnorwood@git.packagekit.org/srv/git/PackageKit
commit ce19d5cdd7f402004173d48283f3923c13ff75dc
Author: Robin Norwood <rnorwood at redhat.com>
Date: Fri Apr 18 10:52:23 2008 -0400
Another attempt at catching local install errors.
diff --git a/backends/yum/helpers/yumBackend.py b/backends/yum/helpers/yumBackend.py
index 3196b59..ecdc567 100644
--- a/backends/yum/helpers/yumBackend.py
+++ b/backends/yum/helpers/yumBackend.py
@@ -897,17 +897,11 @@ class PackageKitYumBackend(PackageKitBaseBackend):
self.error(ERROR_PACKAGE_ALREADY_INSTALLED,"This package could not be installed as it is already installed")
def _checkForNewer(self,po):
- try:
- pkgs = self.yumbase.pkgSack.returnNewestByName(name=po.name)
- if pkgs:
- newest = pkgs[0]
- if newest.EVR > po.EVR:
- #TODO Add code to send a message here
- self.message(MESSAGE_WARNING,"A newer version of %s is available online." % po.name)
- except (yum.Errors.RepoError, yum.Errors.PackageSackError):
- # We might not be able to connect to the internet to get
- # repository metadata, or the package might not exist.
- pass
+ pkgs = self.yumbase.pkgSack.returnNewestByName(name=po.name)
+ if pkgs:
+ newest = pkgs[0]
+ if newest.EVR > po.EVR:
+ self.message(MESSAGE_WARNING,"A newer version of %s is available online." % po.name)
def install_file (self, inst_file):
'''
@@ -925,18 +919,38 @@ class PackageKitYumBackend(PackageKitBaseBackend):
pkgs_to_inst = []
self.yumbase.conf.gpgcheck=0
- txmbr = self.yumbase.installLocal(inst_file)
- if txmbr:
- self._checkForNewer(txmbr[0].po)
- try:
- # Added the package to the transaction set
+
+ try:
+ txmbr = self.yumbase.installLocal(inst_file)
+ if txmbr:
+ self._checkForNewer(txmbr[0].po)
+ # Added the package to the transaction set
if len(self.yumbase.tsInfo) > 0:
self._runYumTransaction()
+ else:
+ self.error(ERROR_PACKAGE_ALREADY_INSTALLED,"Can't install %s " % inst_file)
+
+ except yum.Errors.InstallError,e:
+ msgs = ';'.join(e)
+ self.error(ERROR_PACKAGE_ALREADY_INSTALLED,msgs)
+ except (yum.Errors.RepoError, yum.Errors.PackageSackError, IOError):
+ # We might not be able to connect to the internet to get
+ # repository metadata, or the package might not exist.
+ # Try again, (temporarily) disabling repos first.
+ try:
+ for repo in self.yumbase.repos.listEnabled():
+ repo.disable()
+
+ txmbr = self.yumbase.installLocal(inst_file)
+ if txmbr:
+ if len(self.yumbase.tsInfo) > 0:
+ self._runYumTransaction()
+ else:
+ self.error(ERROR_PACKAGE_ALREADY_INSTALLED,"Can't install %s " % inst_file)
except yum.Errors.InstallError,e:
msgs = ';'.join(e)
- self.error(ERROR_PACKAGE_ALREADY_INSTALLED,msgs)
- else:
- self.error(ERROR_PACKAGE_ALREADY_INSTALLED,"Can't install %s " % inst_file)
+ self.error(ERROR_LOCAL_INSTALL_FAILED, msgs)
+
def update(self, packages):
'''
commit f44e214d2f673226b45ddabaef13cbd4aefea5b9
Author: Stefan Haas <shaas at suse.de>
Date: Fri Apr 18 16:27:39 2008 +0200
removed code duplication
diff --git a/backends/zypp/pk-backend-zypp.cpp b/backends/zypp/pk-backend-zypp.cpp
index f6d3070..0575263 100644
--- a/backends/zypp/pk-backend-zypp.cpp
+++ b/backends/zypp/pk-backend-zypp.cpp
@@ -1561,32 +1561,19 @@ backend_get_packages_thread (PkBackendThread *thread, gpointer data) {
pk_backend_set_status (backend, PK_STATUS_ENUM_QUERY);
- PkInfoEnum info = PK_INFO_ENUM_AVAILABLE;
+ std::vector<zypp::sat::Solvable> *v = new std::vector<zypp::sat::Solvable>;
- if (*filter == PK_FILTER_ENUM_INSTALLED) {
- zypp_build_local_pool ();
- }else{
- zypp_build_pool (TRUE);
- }
+ zypp_build_pool (TRUE);
zypp::ResPool pool = zypp::ResPool::instance ();
for (zypp::ResPool::byKind_iterator it = pool.byKindBegin (zypp::ResKind::package); it != pool.byKindEnd (zypp::ResKind::package); it++) {
- if ((*it)->isSystem ()) {
- info = PK_INFO_ENUM_INSTALLED;
- if (*filter == PK_FILTER_ENUM_NOT_INSTALLED)
- continue;
- }
-
- gchar *package_id = zypp_build_package_id_from_resolvable (it->satSolvable ());
- pk_backend_package (backend,
- info,
- package_id,
- (*it)->description ().c_str ());
- g_free (package_id);
+ v->push_back (it->satSolvable ());
}
+ zypp_emit_packages_in_list (backend, v, *filter);
+ delete (v);
g_free (filter);
pk_backend_finished (backend);
commit 79ec366b92a781b4d040b63c191b60b326028c26
Author: Stefan Haas <shaas at suse.de>
Date: Fri Apr 18 16:01:20 2008 +0200
added general way for filter support
diff --git a/backends/zypp/pk-backend-zypp.cpp b/backends/zypp/pk-backend-zypp.cpp
index b6204d8..f6d3070 100644
--- a/backends/zypp/pk-backend-zypp.cpp
+++ b/backends/zypp/pk-backend-zypp.cpp
@@ -1265,7 +1265,7 @@ find_packages_real (PkBackend *backend, const gchar *search, PkFilterEnum filter
break;
};
- zypp_emit_packages_in_list (backend, v);
+ zypp_emit_packages_in_list (backend, v, filters);
delete (v);
}
@@ -1350,18 +1350,13 @@ backend_search_group_thread (PkBackendThread *thread, gpointer data)
for (zypp::sat::LookupAttr::iterator it = look.begin (); it != look.end (); it++) {
PkGroupEnum rpmGroup = get_enum_group (it.asString ());
- if (pkGroup == rpmGroup) {
- if (d->filters == PK_FILTER_ENUM_INSTALLED && !(it.inSolvable ().isSystem ()))
- continue;
- if (d->filters == PK_FILTER_ENUM_NOT_INSTALLED && (it.inSolvable ().isSystem ()))
- continue;
+ if (pkGroup == rpmGroup)
v->push_back (it.inSolvable ());
- }
}
pk_backend_set_percentage (backend, 70);
- zypp_emit_packages_in_list (backend ,v);
+ zypp_emit_packages_in_list (backend ,v, d->filters);
delete (v);
diff --git a/backends/zypp/zypp-utils.cpp b/backends/zypp/zypp-utils.cpp
index baef946..9b05207 100644
--- a/backends/zypp/zypp-utils.cpp
+++ b/backends/zypp/zypp-utils.cpp
@@ -402,13 +402,16 @@ zypp_signature_required (PkBackend *backend, const std::string &file)
}
void
-zypp_emit_packages_in_list (PkBackend *backend, std::vector<zypp::sat::Solvable> *v)
+zypp_emit_packages_in_list (PkBackend *backend, std::vector<zypp::sat::Solvable> *v, PkFilterEnum filters)
{
for (std::vector<zypp::sat::Solvable>::iterator it = v->begin ();
it != v->end (); it++) {
- // TODO: Determine whether this package is installed or not
gchar *package_id = zypp_build_package_id_from_resolvable (*it);
+ if (filters == PK_FILTER_ENUM_INSTALLED && !(it->isSystem ()))
+ continue;
+ if (filters == PK_FILTER_ENUM_NOT_INSTALLED && it->isSystem ())
+ continue;
pk_backend_package (backend,
it->isSystem() == true ?
PK_INFO_ENUM_INSTALLED :
diff --git a/backends/zypp/zypp-utils.h b/backends/zypp/zypp-utils.h
index 9643e51..a4765ad 100644
--- a/backends/zypp/zypp-utils.h
+++ b/backends/zypp/zypp-utils.h
@@ -124,7 +124,7 @@ std::set<zypp::PoolItem> * zypp_get_patches ();
*/
gboolean zypp_perform_execution (PkBackend *backend, PerformType type, gboolean force);
-void zypp_emit_packages_in_list (PkBackend *backend, std::vector<zypp::sat::Solvable> *v);
+void zypp_emit_packages_in_list (PkBackend *backend, std::vector<zypp::sat::Solvable> *v, PkFilterEnum filters);
/**
* convert a std::set<zypp::sat::Solvable to gchar ** array
commit eada8e837852aa168bf6fdb936b825934a38cf49
Author: Stefan Haas <shaas at suse.de>
Date: Fri Apr 18 15:55:19 2008 +0200
added filter support to search_group
diff --git a/backends/zypp/pk-backend-zypp.cpp b/backends/zypp/pk-backend-zypp.cpp
index 6cfc552..b6204d8 100644
--- a/backends/zypp/pk-backend-zypp.cpp
+++ b/backends/zypp/pk-backend-zypp.cpp
@@ -1350,8 +1350,13 @@ backend_search_group_thread (PkBackendThread *thread, gpointer data)
for (zypp::sat::LookupAttr::iterator it = look.begin (); it != look.end (); it++) {
PkGroupEnum rpmGroup = get_enum_group (it.asString ());
- if (pkGroup == rpmGroup)
+ if (pkGroup == rpmGroup) {
+ if (d->filters == PK_FILTER_ENUM_INSTALLED && !(it.inSolvable ().isSystem ()))
+ continue;
+ if (d->filters == PK_FILTER_ENUM_NOT_INSTALLED && (it.inSolvable ().isSystem ()))
+ continue;
v->push_back (it.inSolvable ());
+ }
}
pk_backend_set_percentage (backend, 70);
commit a6fc7de27c44bf57d8f3387f0a8de51c31538743
Author: Richard Hughes <richard at hughsie.com>
Date: Fri Apr 18 13:54:55 2008 +0100
small code cleanup
diff --git a/src/pk-transaction.c b/src/pk-transaction.c
index 7877d7f..72c53c4 100644
--- a/src/pk-transaction.c
+++ b/src/pk-transaction.c
@@ -245,18 +245,6 @@ pk_transaction_set_role (PkTransaction *transaction, PkRoleEnum role)
}
/**
- * pk_transaction_get_package_list:
- **/
-PkPackageList *
-pk_transaction_get_package_list (PkTransaction *transaction)
-{
- g_return_val_if_fail (PK_IS_TRANSACTION (transaction), NULL);
- g_return_val_if_fail (transaction->priv->tid != NULL, NULL);
-
- return transaction->priv->package_list;
-}
-
-/**
* pk_transaction_get_text:
**/
const gchar *
@@ -296,7 +284,7 @@ pk_transaction_finish_invalidate_caches (PkTransaction *transaction)
/* copy this into the cache if we are getting updates */
if (transaction->priv->role == PK_ROLE_ENUM_GET_UPDATES) {
- pk_cache_set_updates (transaction->priv->cache, pk_transaction_get_package_list (transaction));
+ pk_cache_set_updates (transaction->priv->cache, transaction->priv->package_list);
}
/* we unref the update cache if it exists */
@@ -459,7 +447,7 @@ pk_transaction_finished_cb (PkBackend *backend, PkExitEnum exit, PkTransaction *
transaction->priv->role == PK_ROLE_ENUM_UPDATE_PACKAGES ||
transaction->priv->role == PK_ROLE_ENUM_INSTALL_PACKAGE ||
transaction->priv->role == PK_ROLE_ENUM_REMOVE_PACKAGE) {
- packages = pk_package_list_get_string (pk_transaction_get_package_list (transaction));
+ packages = pk_package_list_get_string (transaction->priv->package_list);
if (pk_strzero (packages) == FALSE) {
pk_transaction_db_set_data (transaction->priv->transaction_db, transaction->priv->tid, packages);
}
More information about the PackageKit-commit
mailing list