[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