...
|
...
|
@@ -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]
|