Browse code

Adding fix to identify already built rpms based on version

dthaluru authored on 2015/07/09 03:49:52
Showing 4 changed files
... ...
@@ -7,7 +7,6 @@ from PackageUtils import PackageUtils
7 7
 from ToolChainUtils import ToolChainUtils
8 8
 from Scheduler import Scheduler
9 9
 from ThreadPool import ThreadPool
10
-import subprocess
11 10
 
12 11
 class PackageManager(object):
13 12
     
... ...
@@ -54,8 +53,14 @@ class PackageManager(object):
54 54
                     listDirectorys.append(dirEntryPath)
55 55
         pkgUtils = PackageUtils(self.logName,self.logPath)
56 56
         for rpmfile in listRPMFiles:
57
-            package = pkgUtils.findPackageNameFromRPMFile(rpmfile)
58
-            listAvailablePackages.append(package)
57
+            package,version,release = pkgUtils.findPackageInfoFromRPMFile(rpmfile)
58
+            if constants.specData.isRPMPackage(package):
59
+                specVersion=constants.specData.getVersion(package)
60
+                specRelease=constants.specData.getRelease(package)
61
+                if version == specVersion and release == specRelease:
62
+                    listAvailablePackages.append(package)
63
+        self.logger.info("List of Already built packages")
64
+        self.logger.info(listAvailablePackages)
59 65
         return listAvailablePackages
60 66
     
61 67
     def calculateParams(self,listPackages):
... ...
@@ -193,6 +193,23 @@ class PackageUtils(object):
193 193
             raise Exception("Invalid RPM")
194 194
         packageName=rpmfile[0:versionindex]
195 195
         return packageName 
196
+
197
+    def findPackageInfoFromRPMFile(self,rpmfile):
198
+        rpmfile=os.path.basename(rpmfile)
199
+        rpmfile=rpmfile.replace(".x86_64.rpm","")
200
+        rpmfile=rpmfile.replace(".noarch.rpm","")
201
+        releaseindex=rpmfile.rfind("-")
202
+        if releaseindex == -1:
203
+            self.logger.error("Invalid rpm file:"+rpmfile)
204
+            raise Exception("Invalid RPM")
205
+        versionindex=rpmfile[0:releaseindex].rfind("-")
206
+        if versionindex == -1:
207
+            self.logger.error("Invalid rpm file:"+rpmfile)
208
+            raise Exception("Invalid RPM")
209
+        packageName=rpmfile[0:versionindex]
210
+        version=rpmfile[versionindex+1:releaseindex]
211
+        release=rpmfile[releaseindex+1:]
212
+        return packageName,version,release
196 213
     
197 214
     def findInstalledRPMPackages(self, chrootID):
198 215
         cmd = self.rpmBinary+" "+self.queryRpmPackageOptions
... ...
@@ -99,6 +99,13 @@ class SerializableSpecObjectsUtils(object):
99 99
         self.logger.error("Could not able to find "+package+" package from specs")
100 100
         raise Exception("Invalid package:"+package)
101 101
     
102
+    def isRPMPackage(self,package):
103
+        if self.mapPackageToSpec.has_key(package):
104
+            specName=self.mapPackageToSpec[package]
105
+            if self.mapSerializableSpecObjects.has_key(specName):
106
+                return True
107
+        return False
108
+    
102 109
     def getSecurityHardeningOption(self, package):
103 110
         specName=self.getSpecName(package)
104 111
         return self.mapSerializableSpecObjects[specName].securityHardening
... ...
@@ -124,10 +124,8 @@ def main():
124 124
     sys.exit(0)
125 125
 
126 126
 def buildToolChain(buildThreads):
127
-    listPackages=[]
128
-    listPackages.append(package)
129 127
     pkgManager = PackageManager()
130
-    pkgManager.buildPackages(listPackages, buildThreads)
128
+    pkgManager.buildToolChainPackages(buildThreads)
131 129
 
132 130
 def buildPackageList(specPath):
133 131
     print "Package,Version,License,URL,Sources,Patches"