From c4f50a405fd71ee2b5df14ebac55ce634cebe0ba Mon Sep 17 00:00:00 2001 From: Faik Uygur Date: Thu, 22 Feb 2007 10:09:06 +0000 Subject: [PATCH] * up up with delta.. yihuu! --- pisi/atomicoperations.py | 21 ++++++++++++++++----- pisi/metadata.py | 7 +++++++ 2 files changed, 23 insertions(+), 5 deletions(-) diff --git a/pisi/atomicoperations.py b/pisi/atomicoperations.py index 397195c9..709ecca2 100644 --- a/pisi/atomicoperations.py +++ b/pisi/atomicoperations.py @@ -64,14 +64,25 @@ class Install(AtomicOperation): ctx.ui.info(_("Package %s found in repository %s") % (name, repo)) repo = ctx.repodb.get_repo(repo) pkg = ctx.packagedb.get_package(name) + delta = None - # FIXME: let pkg.packageURI be stored as URI type rather than string - pkg_uri = URI(pkg.packageURI) - if pkg_uri.is_absolute_path(): - pkg_path = str(pkg.packageURI) + # Package is installed. This is an upgrade. Check delta. + if ctx.installdb.is_installed(pkg.name): + (version, release, build) = ctx.installdb.get_version(pkg.name) + delta = pkg.get_delta(releaseFrom=release) + + # If delta exists than use the delta uri. + if delta: + pkg_uri = delta.packageURI + else: + pkg_uri = pkg.packageURI + + uri = URI(pkg_uri) + if uri.is_absolute_path(): + pkg_path = str(pkg_uri) else: pkg_path = os.path.join(os.path.dirname(repo.indexuri.get_uri()), - str(pkg_uri.path())) + str(uri.path())) ctx.ui.info(_("Package URI: %s") % pkg_path, verbose=True) diff --git a/pisi/metadata.py b/pisi/metadata.py index 5f82505e..01e11b8f 100644 --- a/pisi/metadata.py +++ b/pisi/metadata.py @@ -57,6 +57,13 @@ class Package(specfile.Package): t_Source = [ Source, autoxml.optional] + def get_delta(self, releaseFrom): + for delta in self.deltaPackages: + if delta.releaseFrom == releaseFrom: + return delta + else: + return None + def decode_hook(self, node, errs, where): self.version = self.history[0].version self.release = self.history[0].release