[packagekit] packagekit: Branch 'master' - 7 commits

Richard Hughes hughsient at kemper.freedesktop.org
Mon Oct 15 10:43:49 PDT 2007


 backends/yum/helpers/yumBackend.py |   69 +++++++++++++++++++++++++++++++------
 backends/yum/pk-backend-yum.c      |    1 
 data/transactions.db               |binary
 python/packagekit/backend.py       |    8 ++++
 4 files changed, 67 insertions(+), 11 deletions(-)

New commits:
commit 51d1bdff73155ad6723f2150ddd4fca0ff7706a5
Author: Richard Hughes <richard at hughsie.com>
Date:   Mon Oct 15 18:33:16 2007 +0100

    make sure transactions.db has the correct fields

diff --git a/data/transactions.db b/data/transactions.db
index 2a780e0..e0e28b4 100644
Binary files a/data/transactions.db and b/data/transactions.db differ
commit de6555d58ef041ebb7bd575b06e0ec9ef8ac4d33
Merge: fbaea5f... ef0604d...
Author: Robin Norwood <rnorwood at redhat.com>
Date:   Mon Oct 15 10:37:32 2007 -0400

    Merge branch 'master' of git+ssh://rnorwood@git.packagekit.org/srv/git/PackageKit

commit fbaea5fea95aec046a4dce2acea2ae4d3a288fab
Author: Robin Norwood <rnorwood at redhat.com>
Date:   Mon Oct 15 10:37:13 2007 -0400

    set no_percentage_updates for 'get updates' command in yum backend

diff --git a/backends/yum/pk-backend-yum.c b/backends/yum/pk-backend-yum.c
index 71cba29..b324454 100644
--- a/backends/yum/pk-backend-yum.c
+++ b/backends/yum/pk-backend-yum.c
@@ -103,6 +103,7 @@ static void
 backend_get_updates (PkBackend *backend)
 {
 	g_return_if_fail (backend != NULL);
+	pk_backend_no_percentage_updates (backend);
 	pk_backend_spawn_helper (backend, "get-updates.py", NULL);
 }
 
commit ef0604dc45aef563a97c4c85377c4e4f48dfc6a1
Author: Ken VanDine <ken at vandine.org>
Date:   Mon Oct 15 08:30:24 2007 -0400

    Removed install-file.py from distfiles for the yum backend, it is missing and breaks make dist

diff --git a/backends/yum/helpers/Makefile.am b/backends/yum/helpers/Makefile.am
index 117f242..e9bd526 100644
--- a/backends/yum/helpers/Makefile.am
+++ b/backends/yum/helpers/Makefile.am
@@ -16,7 +16,6 @@ dist_helper_DATA = 			\
 	remove.py			\
 	resolve.py			\
 	update.py			\
-	install-file.py     \
 	refresh-cache.py		\
 	update-system.py		\
 	yumBackend.py			\
commit 30eb7b84e9c6329fc765ca2f382ba1749616f5e2
Author: Tim Lauridsen <tim at localhost.localdomain>
Date:   Mon Oct 15 10:18:43 2007 +0200

    yum: Added James Bowes to Authors

diff --git a/backends/yum/helpers/yumBackend.py b/backends/yum/helpers/yumBackend.py
index f60811d..e09fcf6 100644
--- a/backends/yum/helpers/yumBackend.py
+++ b/backends/yum/helpers/yumBackend.py
@@ -13,9 +13,11 @@
 # along with this program; if not, write to the Free Software
 # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
 #
-# Copyright (C) 2007 Tim Lauridsen <timlau at fedoraproject.org>
-# Copyright (C) 2007 Red Hat Inc, Seth Vidal <skvidal at fedoraproject.org>
-# Copyright (C) 2007 Luke Macken <lmacken at redhat.com>
+# Copyright (C) 2007 
+#    Tim Lauridsen <timlau at fedoraproject.org>
+#    Seth Vidal <skvidal at fedoraproject.org>
+#    Luke Macken <lmacken at redhat.com>
+#    James Bowes <jbowes at dangerouslyinc.com>
 
 
 # imports
commit d8de50f29d9e75e0765b376e4dac48b0138d99d5
Author: Tim Lauridsen <tim at localhost.localdomain>
Date:   Mon Oct 15 10:16:04 2007 +0200

    yum: Added install-file.py to Makefile

diff --git a/backends/yum/helpers/Makefile.am b/backends/yum/helpers/Makefile.am
index e9bd526..117f242 100644
--- a/backends/yum/helpers/Makefile.am
+++ b/backends/yum/helpers/Makefile.am
@@ -16,6 +16,7 @@ dist_helper_DATA = 			\
 	remove.py			\
 	resolve.py			\
 	update.py			\
+	install-file.py     \
 	refresh-cache.py		\
 	update-system.py		\
 	yumBackend.py			\
diff --git a/backends/yum/helpers/yumBackend.py b/backends/yum/helpers/yumBackend.py
index 3a2d63f..f60811d 100644
--- a/backends/yum/helpers/yumBackend.py
+++ b/backends/yum/helpers/yumBackend.py
@@ -583,7 +583,7 @@ class PackageKitYumBackend(PackageKitBaseBackend):
             except:
                 pass # No updateinfo.xml.gz in repo
 
-        self.percentage(0)
+        self.percentage() # emit no-percentage-updates signal
         ygl = self.yumbase.doPackageLists(pkgnarrow='updates')
         for pkg in ygl.updates:
             # Get info about package in updates info
@@ -596,10 +596,10 @@ class PackageKitYumBackend(PackageKitBaseBackend):
 
 
     def _setup_yum(self):
-        self.yumbase.doConfigSetup(errorlevel=0,debuglevel=0) # Setup Yum Config
-        self.yumbase.conf.throttle = "40%"    # Set bandwidth throttle to 40%
-        self.dnlCallback = DownloadCallback(self,showNames=True)      # Download callback
-        self.yumbase.repos.setProgressBar( self.dnlCallback )         # Setup the download callback class
+        self.yumbase.doConfigSetup(errorlevel=0,debuglevel=0)     # Setup Yum Config
+        self.yumbase.conf.throttle = "40%"                        # Set bandwidth throttle to 40%
+        self.dnlCallback = DownloadCallback(self,showNames=True)  # Download callback
+        self.yumbase.repos.setProgressBar( self.dnlCallback )     # Setup the download callback class
 
 class DownloadCallback( BaseMeter ):
     """ Customized version of urlgrabber.progress.BaseMeter class """
commit eeda6632f4e9fcab5c45b34d726ac5af218ecf0b
Author: Tim Lauridsen <tim at localhost.localdomain>
Date:   Mon Oct 15 09:53:39 2007 +0200

    * Implemented install-file in yum backend
    * Show the full package id when installing/updating.
    * Removed some duplicate code

diff --git a/backends/yum/helpers/yumBackend.py b/backends/yum/helpers/yumBackend.py
index e18b183..3a2d63f 100644
--- a/backends/yum/helpers/yumBackend.py
+++ b/backends/yum/helpers/yumBackend.py
@@ -32,6 +32,7 @@ from yum.callbacks import *
 from yum.misc import prco_tuple_to_string, unique
 import rpmUtils
 import exceptions
+import types
 
 class GPGKeyNotImported(exceptions.Exception):
     pass
@@ -393,6 +394,46 @@ class PackageKitYumBackend(PackageKitBaseBackend):
                 self.error(ERROR_PACKAGE_ALREADY_INSTALLED,msgs)
         else:
             self.error(ERROR_PACKAGE_ALREADY_INSTALLED,"Package was not found")
+            
+    def install_file (self, inst_file):
+        '''
+        Implement the {backend}-install_file functionality
+        Install the package containing the inst_file file
+        Needed to be implemented in a sub class
+        '''
+        pkgs_to_inst = []
+        self._setup_yum()
+        # Check if the inst_file is already installed
+        try:
+            my_inst_pkgs = self.yumbase.returnInstalledPackagesByDep(inst_file)
+        except yum.Errors.YumBaseError, e:
+            my_inst_pkgs = []
+        if my_inst_pkgs:
+            self.error(ERROR_PACKAGE_ALREADY_INSTALLED,"File %s is already installed" % inst_file)
+        
+        # Find packages there is providing inst_file
+        try:
+            mypkgs = self.yumbase.returnPackagesByDep(inst_file)
+        except yum.Errors.YumBaseError, e:
+            msgs = ';'.join(e)
+            self.error(ERROR_INTERNAL_ERROR,msgs)
+        else:
+            mybestpkgs = self.yumbase.bestPackagesFromList(mypkgs)
+            for mypkg in mybestpkgs:
+                if self._installable(mypkg, True):
+                    self._show_package(mypkg, INFO_AVAILABLE)                    
+                    pkgs_to_inst.append(mypkg)
+                    break
+        try:
+            # Added the package to the transaction set
+            for pkg in pkgs_to_inst:
+                txmbr = self.yumbase.install(name=pkg.name)
+            if len(self.yumbase.tsInfo) > 0:
+                self._runYumTransaction()
+        except yum.Errors.InstallError,e:
+            print e
+            msgs = ';'.join(e)
+            self.error(ERROR_PACKAGE_ALREADY_INSTALLED,msgs)
 
     def update(self, package):
         '''
@@ -669,13 +710,17 @@ class PackageKitCallback(RPMBaseCallback):
         return pct
 
     def _showName(self,status):
-        id = self.base.get_package_id(self.curpkg, '', '', '')
+        if type(self.curpkg) in types.StringTypes:
+            id = self.base.get_package_id(self.curpkg,'','','')
+        else:
+            pkgver = self.base._get_package_ver(self.curpkg)
+            id = self.base.get_package_id(self.curpkg.name, pkgver, self.curpkg.arch, self.curpkg.repo)
         self.base.package(id,status, "")
 
 
     def event(self, package, action, te_current, te_total, ts_current, ts_total):
-        if str(package) != self.curpkg:
-            self.curpkg = str(package)
+        if str(package) != str(self.curpkg):
+            self.curpkg = package
             if action in TS_INSTALL_STATES:
                 self.base.status(STATE_INSTALL)
                 status = INFO_INSTALLING
diff --git a/python/packagekit/backend.py b/python/packagekit/backend.py
index 73654da..92ab711 100644
--- a/python/packagekit/backend.py
+++ b/python/packagekit/backend.py
@@ -255,6 +255,14 @@ class PackageKitBaseBackend:
         '''
         self.error(ERROR_NOT_SUPPORTED,"This function is not implemented in this backend")
 
+    def install_file (self, inst_file):
+        '''
+        Implement the {backend}-install_file functionality
+        Install the package containing the inst_file file
+        Needed to be implemented in a sub class
+        '''
+        self.error(ERROR_NOT_SUPPORTED,"This function is not implemented in this backend")
+
     def resolve(self, name):
         '''
         Implement the {backend}-resolve functionality


More information about the PackageKit mailing list