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

Richard Hughes hughsient at kemper.freedesktop.org
Tue Oct 16 09:57:40 PDT 2007


 backends/apt/Makefile.am           |    9 ++-
 backends/apt/helpers/aptBackend.py |    4 +
 backends/apt/pk-backend-apt.cpp    |    2 
 backends/yum/helpers/yumBackend.py |  109 +++++++++++++++++++++++++++----------
 configure.ac                       |    4 -
 python/packagekit/backend.py       |    6 +-
 python/packagekit/frontend.py      |   12 +++-
 python/pk-frontend-test.py         |   26 ++++++--
 src/pk-transaction-id.c            |    4 -
 9 files changed, 130 insertions(+), 46 deletions(-)

New commits:
commit 851ab91ea9e4ea34db2534688de5ec028ef4d88a
Author: Richard Hughes <richard at hughsie.com>
Date:   Tue Oct 16 17:51:17 2007 +0100

    dist the header files in the apt backend

diff --git a/backends/apt/Makefile.am b/backends/apt/Makefile.am
index b651273..be27e19 100644
--- a/backends/apt/Makefile.am
+++ b/backends/apt/Makefile.am
@@ -2,7 +2,14 @@ SUBDIRS = helpers
 plugindir = @PK_PLUGIN_DIR@
 plugin_LTLIBRARIES = libpk_backend_apt.la
 libpk_backend_apt_la_INCLUDES = $(APT_CFLAGS) $(SQLITE_CFLAGS)
-libpk_backend_apt_la_SOURCES = pk-backend-apt.cpp sqlite-pkg-cache.c apt-build-db.cpp python-backend-common.c
+libpk_backend_apt_la_SOURCES =		\
+	pk-backend-apt.h		\
+	pk-backend-apt.cpp		\
+	sqlite-pkg-cache.h		\
+	sqlite-pkg-cache.c		\
+	apt-build-db.cpp		\
+	python-backend-common.h		\
+	python-backend-common.c
 libpk_backend_apt_la_LIBADD = @PK_PLUGIN_LIBS@ $(APT_LIBS) $(SQLITE_LIBS)
 libpk_backend_apt_la_LDFLAGS = -module -avoid-version
 libpk_backend_apt_la_CFLAGS = @PK_PLUGIN_CFLAGS@ -DDATABASEDIR=\""$(PK_DB_DIR)"\"
commit e38d836f99a4698ae772b2b9e978f8d10d2ddf8d
Author: Richard Hughes <richard at hughsie.com>
Date:   Tue Oct 16 17:44:28 2007 +0100

    post release bump to 0.1.1

diff --git a/configure.ac b/configure.ac
index 1e4b4c9..8360141 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1,6 +1,6 @@
 AC_PREREQ(2.52)
 
-AC_INIT(PackageKit, 0.1.0)
+AC_INIT(PackageKit, 0.1.1)
 AC_CONFIG_SRCDIR(src)
 AM_INIT_AUTOMAKE(AC_PACKAGE_NAME, AC_PACKAGE_VERSION)
 AM_CONFIG_HEADER(config.h)
commit ddfa95a7122f0ed30304cdaeee0d9aeb48ec5e6b
Author: Robin Norwood <rnorwood at redhat.com>
Date:   Tue Oct 16 11:29:34 2007 -0400

    Fix License and copyright notices.

diff --git a/backends/yum/helpers/yumBackend.py b/backends/yum/helpers/yumBackend.py
index 59ba4f8..3981486 100644
--- a/backends/yum/helpers/yumBackend.py
+++ b/backends/yum/helpers/yumBackend.py
@@ -1,18 +1,19 @@
-#!/usr/bin/python -tt
+# Licensed under the GNU General Public License Version 2
+#
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
 # the Free Software Foundation; either version 2 of the License, or
-# (at your filtersion) any later version.
+# (at your option) any later version.
 #
 # This program is distributed in the hope that it will be useful,
 # but WITHOUT ANY WARRANTY; without even the implied warranty of
 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU Library General Public License for more details.
+# GNU General Public License for more details.
 #
 # You should have received a copy of the GNU General Public License
 # 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>
 #    Seth Vidal <skvidal at fedoraproject.org>
diff --git a/python/packagekit/backend.py b/python/packagekit/backend.py
index 7c6d4c6..0bbccbe 100644
--- a/python/packagekit/backend.py
+++ b/python/packagekit/backend.py
@@ -1,3 +1,5 @@
+# Licensed under the GNU General Public License Version 2
+#
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
 # the Free Software Foundation; either version 2 of the License, or
@@ -6,12 +8,12 @@
 # This program is distributed in the hope that it will be useful,
 # but WITHOUT ANY WARRANTY; without even the implied warranty of
 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU Library General Public License for more details.
+# GNU General Public License for more details.
 #
 # You should have received a copy of the GNU General Public License
 # 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>
 
 #
diff --git a/python/packagekit/frontend.py b/python/packagekit/frontend.py
index 2c00e68..891f856 100644
--- a/python/packagekit/frontend.py
+++ b/python/packagekit/frontend.py
@@ -1,3 +1,5 @@
+# Licensed under the GNU General Public License Version 2
+#
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
 # the Free Software Foundation; either version 2 of the License, or
@@ -6,12 +8,16 @@
 # This program is distributed in the hope that it will be useful,
 # but WITHOUT ANY WARRANTY; without even the implied warranty of
 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU Library General Public License for more details.
+# GNU General Public License for more details.
 #
 # You should have received a copy of the GNU General Public License
 # 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>
+#    Tom Parker <palfrey at tevp.net>
+#    Robin Norwood <rnorwood at redhat.com>
 
 from types import *
 import dbus
diff --git a/python/pk-frontend-test.py b/python/pk-frontend-test.py
index 4761b4f..afa594d 100755
--- a/python/pk-frontend-test.py
+++ b/python/pk-frontend-test.py
@@ -1,17 +1,27 @@
 #!/usr/bin/python
 #
-# "pkt" python test program for PackageKit
+# Licensed under the GNU General Public License Version 2
 #
-# pkt serves both as a simple PackageKit client, and as an example user of the
-# PackageKit python API
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
 #
-# Copyright (C) 2007 Tom Parker <palfrey at tevp.net>
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
 #
-# Licensed under the GNU General Public License Version 2
+# You should have received a copy of the GNU General Public License
+# 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 Tom Parker <palfrey at tevp.net>
+
+# "pkt" python test program for PackageKit
 #
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License v2 as published by
-# the Free Software Foundation.
+# pkt serves both as a simple PackageKit client, and as an example user of the
+# PackageKit python API
 
 from sys import argv,exit
 from optparse import OptionParser
diff --git a/src/pk-transaction-id.c b/src/pk-transaction-id.c
index 876f985..0b7d285 100644
--- a/src/pk-transaction-id.c
+++ b/src/pk-transaction-id.c
@@ -6,8 +6,8 @@
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either identifier 2 of the License, or
- * (at your option) any later identifier.
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
  *
  * This program is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
commit 9741cc2159e9038739bec38313914d853e20b405
Author: James Bowes <jbowes at dangerouslyinc.com>
Date:   Tue Oct 16 08:45:10 2007 -0400

    Store db in /var/lib rather than /var/db

diff --git a/configure.ac b/configure.ac
index 4a4661e..1e4b4c9 100644
--- a/configure.ac
+++ b/configure.ac
@@ -348,7 +348,7 @@ fi
     
 
 AC_SUBST(PK_CONF_DIR, "\$(sysconfdir)/PackageKit")
-AC_SUBST(PK_DB_DIR, "\$(localstatedir)/db/PackageKit")
+AC_SUBST(PK_DB_DIR, "\$(localstatedir)/lib/PackageKit")
 AC_SUBST(PK_PLUGIN_DIR, "\$(libdir)/packagekit-backend")
 AC_SUBST(PK_PLUGIN_CFLAGS, "-I\$(top_srcdir)/src -I\$(top_srcdir)/libpackagekit $GLIB_CFLAGS $DBUS_CFLAGS $GMODULE_CFLAGS")
 AC_SUBST(PK_PLUGIN_LIBS, "$GLIB_LIBS $DBUS_LIBS $GMODULE_LIBS")
commit c5d2f71cf9b82c31c7dcacf131d7cc7cab4f6211
Author: Tim Lauridsen <tim at localhost.localdomain>
Date:   Tue Oct 16 14:26:48 2007 +0200

    yum: make install-file install local rpms

diff --git a/backends/yum/helpers/yumBackend.py b/backends/yum/helpers/yumBackend.py
index 9641816..59ba4f8 100644
--- a/backends/yum/helpers/yumBackend.py
+++ b/backends/yum/helpers/yumBackend.py
@@ -425,6 +425,81 @@ class PackageKitYumBackend(PackageKitBaseBackend):
                 self.error(ERROR_PACKAGE_ALREADY_INSTALLED,msgs)
         else:
             self.error(ERROR_PACKAGE_ALREADY_INSTALLED,"Package was not found")
+
+    def _localInstall(self, inst_file):
+        """handles installs/updates of rpms provided on the filesystem in a 
+           local dir (ie: not from a repo)"""
+           
+        # Slightly modified localInstall from yum's cli.py
+           
+        # read in each package into a YumLocalPackage Object
+        # append it to self.yumbase.localPackages
+        # check if it can be installed or updated based on nevra versus rpmdb
+        # don't import the repos until we absolutely need them for depsolving
+        
+        oldcount = len(self.yumbase.tsInfo)
+               
+        installpkgs = []
+        updatepkgs = []
+        
+        pkg = inst_file
+        try:
+            po = yum.packages.YumLocalPackage(ts=self.yumbase.rpmdb.readOnlyTS(), filename=pkg)
+        except yum.Errors.MiscError:
+            self.error(ERROR_INTERNAL_ERROR,'Cannot open file: %s. Skipping.' % pkg)
+
+        # everything installed that matches the name
+        installedByKey = self.yumbase.rpmdb.searchNevra(name=po.name)
+        # go through each package 
+        if len(installedByKey) == 0: # nothing installed by that name
+            installpkgs.append(po)
+        else:
+            for installed_pkg in installedByKey:
+                if po.EVR > installed_pkg.EVR: # we're newer - this is an update, pass to them
+                    if installed_pkg.name in self.yumbase.conf.exactarchlist:
+                        if po.arch == installed_pkg.arch:
+                            updatepkgs.append((po, installed_pkg))
+                            continue
+                        else:
+                            continue
+                    else:
+                        updatepkgs.append((po, installed_pkg))
+                        continue
+                elif po.EVR == installed_pkg.EVR:
+                    if po.arch != installed_pkg.arch and (isMultiLibArch(po.arch) or
+                              isMultiLibArch(installed_pkg.arch)):
+                        installpkgs.append(po)
+                        continue
+                    else:
+                        continue
+                else:
+                    continue
+        
+        # handle excludes for a localinstall
+        toexc = []
+        if len(self.yumbase.conf.exclude) > 0:
+           exactmatch, matched, unmatched = \
+                   yum.packages.parsePackages(installpkgs + map(lambda x: x[0], updatepkgs),
+                                 self.yumbase.conf.exclude, casematch=1)
+           toexc = exactmatch + matched
+       
+        # Process potential installs   
+        for po in installpkgs:
+            if po in toexc:
+               continue     # Exclude package
+            # Add package to transaction for installation
+            self.yumbase.localPackages.append(po)
+            self.yumbase.install(po=po)
+        # Process potential updates
+        for (po, oldpo) in updatepkgs:
+            if po in toexc:
+               continue # Excludeing package
+            # Add Package to transaction for updating
+            self.yumbase.localPackages.append(po)
+            self.yumbase.tsInfo.addUpdate(po, oldpo)
+        
+
+
             
     def install_file (self, inst_file):
         '''
@@ -437,31 +512,10 @@ class PackageKitYumBackend(PackageKitBaseBackend):
 
         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
+        self.yumbase.conf.gpgcheck=0
+        self._localInstall(inst_file)
         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:
commit 54116001f8d7be1c77fd78743a104b77cf60a0fe
Author: Tom Parker <palfrey at tevp.net>
Date:   Tue Oct 16 12:31:05 2007 +0200

    Handle "Locked" signals in packagekit.frontend

diff --git a/python/packagekit/frontend.py b/python/packagekit/frontend.py
index a1bc3e6..2c00e68 100644
--- a/python/packagekit/frontend.py
+++ b/python/packagekit/frontend.py
@@ -128,7 +128,7 @@ class PackageKit:
 		elif kwargs['member'] == "Transaction":
 			self.Transaction(args[0],args[1],args[2],args[3],args[4],args[5])
 		elif kwargs['member'] in ["NoPercentageUpdates","TransactionListChanged",
-					  "AllowInterrupt","JobListChanged"]:
+					  "AllowInterrupt","JobListChanged", "Locked"]:
 			pass
 		else:
 			print "Caught unhandled signal %s"% kwargs['member']
commit cd66c7dea0b84f999154a99a8a2c3b2e01eb8855
Author: Tom Parker <palfrey at tevp.net>
Date:   Tue Oct 16 12:30:23 2007 +0200

    Fix use of C items with C++ module

diff --git a/backends/apt/pk-backend-apt.cpp b/backends/apt/pk-backend-apt.cpp
index 985fea8..2c5e159 100644
--- a/backends/apt/pk-backend-apt.cpp
+++ b/backends/apt/pk-backend-apt.cpp
@@ -36,8 +36,10 @@
 #include <apt-pkg/init.h>
 
 #include "pk-backend-apt.h"
+extern "C" {
 #include "sqlite-pkg-cache.h"
 #include "python-backend-common.h"
+}
 
 static gboolean inited = FALSE;
 
commit 86f37da265fa8f1704c75a8e062d7298c9a8ba94
Author: Tom Parker <palfrey at tevp.net>
Date:   Tue Oct 16 12:34:34 2007 +0200

    Fix aptBackend.py to GPLv2+

diff --git a/backends/apt/helpers/aptBackend.py b/backends/apt/helpers/aptBackend.py
index b2ca5cc..d0f370a 100644
--- a/backends/apt/helpers/aptBackend.py
+++ b/backends/apt/helpers/aptBackend.py
@@ -1,7 +1,9 @@
 #!/usr/bin/python
+
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; version 2 of the License
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version
 #
 # This program is distributed in the hope that it will be useful,
 # but WITHOUT ANY WARRANTY; without even the implied warranty of



More information about the PackageKit mailing list