From 1ce5b914e16d92926105d2ea79fd7582ebef87de Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fatih=20A=C5=9F=C4=B1c=C4=B1?= Date: Wed, 6 Oct 2010 10:53:58 +0000 Subject: [PATCH] index: Add support for new filename format of delta packages Also store release numbers instead of build numbers. --- pisi/index.py | 18 +++++++++++++----- pisi/metadata.py | 5 +++-- 2 files changed, 16 insertions(+), 7 deletions(-) diff --git a/pisi/index.py b/pisi/index.py index d436c42e..e5167dc6 100644 --- a/pisi/index.py +++ b/pisi/index.py @@ -140,17 +140,25 @@ class Index(xmlfile.XmlFile): md.package.additionalFiles = None if md.package.name in deltas: + name, version, release, distro_id, arch = \ + util.split_package_filename(path) + for delta_path in deltas[md.package.name]: + src_release, dst_release, delta_distro_id, delta_arch = \ + util.split_delta_package_filename(delta_path)[1:] + + # Add only delta to latest build of the package + if dst_release != md.package.release or \ + (delta_distro_id, delta_arch) != (distro_id, arch): + continue + delta = metadata.Delta() delta.packageURI = util.removepathprefix(repo_uri, delta_path) delta.packageSize = long(os.path.getsize(delta_path)) delta.packageHash = util.sha1_file(delta_path) - name, buildFrom, buildTo = util.parse_delta_package_name(delta_path) - delta.buildFrom = buildFrom + delta.releaseFrom = src_release - # Add only delta to latest build of the package - if int(buildTo) == int(md.package.build): - md.package.deltaPackages.append(delta) + md.package.deltaPackages.append(delta) self.packages.append(md.package) diff --git a/pisi/metadata.py b/pisi/metadata.py index d37fb4db..f3aa3807 100644 --- a/pisi/metadata.py +++ b/pisi/metadata.py @@ -33,6 +33,7 @@ class Delta: t_PackageSize = [ autoxml.Long, autoxml.optional] t_PackageHash = [ autoxml.String, autoxml.optional, "SHA1Sum" ] a_buildFrom = [autoxml.String, autoxml.optional] + a_releaseFrom = [autoxml.String, autoxml.optional] class Source: __metaclass__ = autoxml.autoxml @@ -57,9 +58,9 @@ class Package(specfile.Package, xmlfile.XmlFile): t_Source = [ Source, autoxml.optional] - def get_delta(self, buildFrom): + def get_delta(self, release): for delta in self.deltaPackages: - if delta.buildFrom == str(buildFrom): + if delta.releaseFrom == str(release): return delta else: return None