From f3e9378c975d401c061da14e8e60fb031182f289 Mon Sep 17 00:00:00 2001 From: Sol Jerome Date: Tue, 31 Mar 2015 09:01:51 -0500 Subject: Yum.py: Compare epoch/version/release separately Signed-off-by: Sol Jerome --- src/lib/Bcfg2/Server/Plugins/Packages/Yum.py | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) (limited to 'src') diff --git a/src/lib/Bcfg2/Server/Plugins/Packages/Yum.py b/src/lib/Bcfg2/Server/Plugins/Packages/Yum.py index 789df79d5..20103820c 100644 --- a/src/lib/Bcfg2/Server/Plugins/Packages/Yum.py +++ b/src/lib/Bcfg2/Server/Plugins/Packages/Yum.py @@ -1334,15 +1334,24 @@ class YumSource(Source): continue pkgname = pkg.find(XP + 'name').text vtag = pkg.find(XP + 'version') - version = "%s%s-%s" % (vtag.get('epoch'), vtag.get('ver'), - vtag.get('rel')) + epoch = vtag.get('epoch') + version = vtag.get('ver') + release = vtag.get('rel') if pkgname in self.packages[arch]: # skip if version older than a previous version - if self._compare_rpm_versions(version, - versionmap[pkgname]) < 0: + if (self._compare_rpm_versions( + epoch, versionmap[pkgname]['epoch']) < 0): continue - - versionmap[pkgname] = version + elif (self._compare_rpm_versions( + version, versionmap[pkgname]['version']) < 0): + continue + elif (self._compare_rpm_versions( + release, versionmap[pkgname]['release']) < 0): + continue + versionmap[pkgname] = {} + versionmap[pkgname]['epoch'] = epoch + versionmap[pkgname]['version'] = version + versionmap[pkgname]['release'] = release self.packages[arch].add(pkgname) pdata = pkg.find(XP + 'format') -- cgit v1.2.3-1-g7c22