Browse code

Updated the builder to compare and build latest version as needed for open-vm-tools

Harish Udaiya Kumar authored on 2015/09/05 03:58:00
Showing 1 changed files
... ...
@@ -1,6 +1,7 @@
1 1
 from SpecUtils import Specutils
2 2
 import os
3 3
 from Logger import Logger
4
+from distutils.version import StrictVersion
4 5
 
5 6
 class SerializableSpecObject(object):
6 7
     def __init__(self):
... ...
@@ -28,6 +29,7 @@ class SerializableSpecObjectsUtils(object):
28 28
         listSpecFiles=[]
29 29
         self.getListSpecFiles(listSpecFiles,specFilesPath)
30 30
         for specFile in listSpecFiles:
31
+            skipUpdating = False
31 32
             spec=Specutils(specFile)
32 33
             specName=spec.getBasePackageName()
33 34
             specObj=SerializableSpecObject()
... ...
@@ -43,9 +45,15 @@ class SerializableSpecObjectsUtils(object):
43 43
             specObj.listPatches=spec.getPatchNames()
44 44
             specObj.securityHardening=spec.getSecurityHardeningOption()
45 45
             for specPkg in specObj.listPackages:
46
-                specObj.installRequiresPackages[specPkg]=spec.getRequires(specPkg)
47
-                self.mapPackageToSpec[specPkg]=specName
48
-            self.mapSerializableSpecObjects[specName]=specObj
46
+	    	if specPkg in self.mapPackageToSpec:
47
+		    existingObj = self.mapSerializableSpecObjects[self.mapPackageToSpec[specPkg]]
48
+		    if self.compareVersions(existingObj,specObj) == 1:
49
+			skipUpdating = True
50
+			break;			
51
+            	specObj.installRequiresPackages[specPkg]=spec.getRequires(specPkg)
52
+            	self.mapPackageToSpec[specPkg]=specName
53
+	    if skipUpdating == False:
54
+                self.mapSerializableSpecObjects[specName]=specObj
49 55
     
50 56
     def getListSpecFiles(self,listSpecFiles,path):
51 57
         for dirEntry in os.listdir(path):
... ...
@@ -96,7 +104,25 @@ class SerializableSpecObjectsUtils(object):
96 96
     def getPackages(self, package):
97 97
         specName=self.getSpecName(package)
98 98
         return self.mapSerializableSpecObjects[specName].listPackages
99
-        
99
+
100
+    def getReleaseNum(self, releaseVal):
101
+	id = releaseVal.find(".")
102
+	if (id != -1):
103
+	    return releaseVal[0:id]
104
+	else:
105
+	    return releaseVal
106
+
107
+    def compareVersions(self, existingObj, newObject):
108
+	if StrictVersion(existingObj.version) > StrictVersion(newObject.version):
109
+	    return 1;
110
+	elif StrictVersion(existingObj.version) < StrictVersion(newObject.version):
111
+	    return -1
112
+	else:
113
+	    if int(self.getReleaseNum(existingObj.release)) > int(self.getReleaseNum(newObject.release)):
114
+		return 1;
115
+	    else: 
116
+	     	return -1;
117
+
100 118
     def getSpecName(self,package):
101 119
         if self.mapPackageToSpec.has_key(package):
102 120
             specName=self.mapPackageToSpec[package]