summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSol Jerome <sol.jerome@gmail.com>2015-03-31 09:01:51 -0500
committerSol Jerome <sol.jerome@gmail.com>2015-03-31 09:21:19 -0500
commitf3e9378c975d401c061da14e8e60fb031182f289 (patch)
tree8a637c99dbeba9bb76327d6f83300cb0a953114b
parent82b8b12f6bba17201376775fe90490bdcc8642df (diff)
downloadbcfg2-f3e9378c975d401c061da14e8e60fb031182f289.tar.gz
bcfg2-f3e9378c975d401c061da14e8e60fb031182f289.tar.bz2
bcfg2-f3e9378c975d401c061da14e8e60fb031182f289.zip
Yum.py: Compare epoch/version/release separately
Signed-off-by: Sol Jerome <sol.jerome@gmail.com>
-rw-r--r--src/lib/Bcfg2/Server/Plugins/Packages/Yum.py21
1 files changed, 15 insertions, 6 deletions
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')