Browse code

Fix for one of the corner case of Multiversion support for dependent packages.

Added multiversion support for base packages also.
Related commit:4a93976f93febaaef0e2f3fe1c781aeb58c1fda8

Change-Id: Idba18d56f84c5b11f8bea766b5a78ff075d44a44
Reviewed-on: http://photon-jenkins.eng.vmware.com:8082/5361
Reviewed-by: Alexey Makhalov <amakhalov@vmware.com>
Tested-by: gerrit-photon <photon-checkins@vmware.com>
Reviewed-by: Anish Swaminathan <anishs@vmware.com>

Ankit Jain authored on 2018/08/04 00:21:54
Showing 7 changed files
... ...
@@ -41,7 +41,7 @@ class PackageBuildDataGenerator(object):
41 41
         return list(self.__buildDependencyGraph.keys())
42 42
 
43 43
     def _createSortListForPkg(self, pkg):
44
-        runTimeDepPkgList = self.__runTimeDependencyGraph[pkg]
44
+        runTimeDepPkgList = list(set(self.__runTimeDependencyGraph[pkg]))
45 45
         runTimeDepPkgList.append(pkg)
46 46
         sortListForPkg = []
47 47
 
... ...
@@ -135,7 +135,7 @@ class PackageBuildDataGenerator(object):
135 135
             dependentRpmPackages = SPECS.getData().getBuildRequiresForPackage(basePackage)
136 136
             dependentPackages = set()
137 137
             for rpmPkg in dependentRpmPackages:
138
-                basePkg = SPECS.getData().getSpecName(rpmPkg)
138
+                basePkg = SPECS.getData().getSpecName(rpmPkg.package)
139 139
                 dependentPackages.add(basePkg)
140 140
             self.__buildDependencyGraph[basePackage] = dependentPackages
141 141
             nextPackagesToConstructGraph.update(dependentPackages)
... ...
@@ -143,10 +143,13 @@ class PackageBuildDataGenerator(object):
143 143
         if addRunTimeGraph:
144 144
             rpmPackages = SPECS.getData().getPackages(basePackage)
145 145
             dependentPackages = set()
146
+            dependentRpmPackagesNames= set()
146 147
             for rpmPkg in rpmPackages:
147 148
                 dependentRpmPackages = SPECS.getData().getRequiresAllForPackage(rpmPkg)
148
-                self.__runTimeDependencyGraph[rpmPkg] = copy.copy(dependentRpmPackages)
149
-                for pkg in dependentRpmPackages:
149
+                for pkgName in dependentRpmPackages:
150
+                    dependentRpmPackagesNames.add(pkgName.package)
151
+                self.__runTimeDependencyGraph[rpmPkg] = copy.copy(dependentRpmPackagesNames)
152
+                for pkg in dependentRpmPackagesNames:
150 153
                     dependentPackages.add(SPECS.getData().getSpecName(pkg))
151 154
             nextPackagesToConstructGraph.update(dependentPackages)
152 155
 
... ...
@@ -91,48 +91,14 @@ class PackageBuilderBase(object):
91 91
     def _findBuildTimeCheckRequiredPackages(self, index=0):
92 92
         return SPECS.getData().getCheckBuildRequiresForPackage(self.package, index)
93 93
 
94
-    def _findRunTimeRequiredRPMPackagesParseObj(self,rpmPackage):
95
-        listRequiredPackages=SPECS.getData().getRequiresParseObjForPackage(rpmPackage)
96
-        return listRequiredPackages
97
-
98
-    def _findBuildTimeRequiredPackagesParseObj(self, index):
99
-        listRequiredPackages=SPECS.getData().getBuildRequiresParseObjForPackage(self.package, index)
100
-        return listRequiredPackages
101
-
102
-    def _findBuildTimeCheckRequiredPackagesParseObj(self, index):
103
-        listRequiredPackages=SPECS.getData().getCheckBuildRequiresParseObjForPackage(self.package, index)
104
-        return listRequiredPackages
105
-
106
-    def _getProperVersion(self,package,parseSpecObj):
107
-        listOfVersionObjs=self.getSpecObj(package)
108
-        for num in listOfVersionObjs:
109
-                if parseSpecObj.compare == 'gte':
110
-                       if LooseVersion(num.version) >= LooseVersion(parseSpecObj.version):
111
-                                return num.version
112
-                elif parseSpecObj.compare == 'lte':
113
-                        if LooseVersion(num.version) <= LooseVersion(parseSpecObj.version):
114
-                                return num.version
115
-                elif parseSpecObj.compare == 'eq':
116
-                        if LooseVersion(num.version) == LooseVersion(parseSpecObj.version):
117
-                                return num.version
118
-                elif parseSpecObj.compare == 'lt':
119
-                        if LooseVersion(num.version) < LooseVersion(parseSpecObj.version):
120
-                                return num.version
121
-                elif parseSpecObj.compare == 'gt':
122
-                        if LooseVersion(num.version) > LooseVersion(parseSpecObj.version):
123
-                                return num.version
124
-        return "*"
125
-
126
-
127 94
     def _installPackage(self, pkgUtils, package,packageVersion, instanceID, destLogPath,
128 95
                         listInstalledPackages, listInstalledRPMs):
129
-        latestRPM = os.path.basename(
130
-            pkgUtils.findRPMFileForGivenPackage(package)).replace(".rpm", "")
131
-        if package in listInstalledPackages and latestRPM in listInstalledRPMs:
132
-            return
96
+        specificRPM = os.path.basename(pkgUtils.findRPMFileForGivenPackage(package,packageVersion)).replace(".rpm", "")
97
+        if package in listInstalledPackages:
98
+                return
133 99
         # mark it as installed -  to avoid cyclic recursion
134 100
         listInstalledPackages.append(package)
135
-        listInstalledRPMs.append(latestRPM)
101
+        listInstalledRPMs.append(specificRPM)
136 102
         self._installDependentRunTimePackages(pkgUtils, package, instanceID, destLogPath,
137 103
                                               listInstalledPackages, listInstalledRPMs)
138 104
         noDeps = False
... ...
@@ -148,7 +114,6 @@ class PackageBuilderBase(object):
148 148
     def _installDependentRunTimePackages(self, pkgUtils, package, instanceID, destLogPath,
149 149
                                          listInstalledPackages, listInstalledRPMs):
150 150
         listRunTimeDependentPackages = self._findRunTimeRequiredRPMPackages(package)
151
-        listRunTimeDependentPackagesParseObj=self._findRunTimeRequiredRPMPackagesParseObj(package)
152 151
         if listRunTimeDependentPackages:
153 152
             for pkg in listRunTimeDependentPackages:
154 153
                 if pkg in self.mapPackageToCycles:
... ...
@@ -157,40 +122,26 @@ class PackageBuilderBase(object):
157 157
                     pkgUtils.findRPMFileForGivenPackage(pkg)).replace(".rpm", "")
158 158
                 if pkg in listInstalledPackages and latestPkgRPM in listInstalledRPMs:
159 159
                     continue
160
-                flag = False
161
-                for objName in listRunTimeDependentPackagesParseObj:
162
-                    if objName.package == pkg:
163
-                        properVersion=self._getProperVersion(pkg,objName)
164
-                        self._installPackage(pkgUtils, pkg,properVersion, instanceID, destLogPath,listInstalledPackages, listInstalledRPMs)
165
-                        flag = True
166
-                        break;
167
-                if flag == False:
168
-                        self._installPackage(pkgUtils, pkg,"*", instanceID, destLogPath,listInstalledPackages, listInstalledRPMs)
160
+                self._installPackage(pkgUtils, pkg,"*", instanceID, destLogPath,listInstalledPackages, listInstalledRPMs)
169 161
 
170 162
     def _findDependentPackagesAndInstalledRPM(self, instanceID, index=0):
171 163
         listInstalledPackages, listInstalledRPMs = self._findInstalledPackages(instanceID)
172 164
         self.logger.info(listInstalledPackages)
173 165
         listDependentPackages = self._findBuildTimeRequiredPackages(index)
174
-        listDependentPackagesParseObj=self._findBuildTimeRequiredPackagesParseObj(index)
166
+        listTestPackages=[]
175 167
         if constants.rpmCheck and self.package in constants.testForceRPMS:
176 168
             listDependentPackages.extend(self._findBuildTimeCheckRequiredPackages(index))
177
-            listDependentPackagesParseObj.extend(self._findBuildTimeCheckRequiredPackagesParseObj(index))
178 169
             testPackages = (set(constants.listMakeCheckRPMPkgtoInstall) -
179 170
                             set(listInstalledPackages) -
180 171
                             set([self.package]))
181
-            listDependentPackages.extend(testPackages)
172
+            listTestPackages=list(set(testPackages))
182 173
             listDependentPackages = list(set(listDependentPackages))
183
-            listDependentPackagesParseObj=list(set(listDependentPackagesParseObj))
184
-        return listDependentPackages, listDependentPackagesParseObj,listInstalledPackages, listInstalledRPMs
174
+        return listDependentPackages, listTestPackages, listInstalledPackages, listInstalledRPMs
185 175
 
186 176
     @staticmethod
187 177
     def getNumOfVersions(package):
188 178
         return SPECS.getData().getNumberOfVersions(package)
189 179
 
190
-    @staticmethod
191
-    def getSpecObj(package):
192
-        return SPECS.getData().getSpecObj(package)
193
-
194 180
 class PackageBuilderContainer(PackageBuilderBase):
195 181
     def __init__(self, mapPackageToCycles, pkgBuildType):
196 182
         self.buildContainerImage = "photon_build_container:latest"
... ...
@@ -298,7 +249,7 @@ class PackageBuilderContainer(PackageBuilderBase):
298 298
                     constants.perPackageToolChain[self.package].get(platform.machine(), []),
299 299
                     self.package)
300 300
 
301
-            listDependentPackages,listDependentPackagesParseObj, listInstalledPackages, listInstalledRPMs = (
301
+            listDependentPackages, listTestPackages, listInstalledPackages, listInstalledRPMs = (
302 302
                 self._findDependentPackagesAndInstalledRPM(containerID, index))
303 303
 
304 304
             pkgUtils = PackageUtils(self.logName, self.logPath)
... ...
@@ -307,10 +258,13 @@ class PackageBuilderContainer(PackageBuilderBase):
307 307
                                  "Installing dependent packages..")
308 308
                 self.logger.info(listDependentPackages)
309 309
                 for pkg in listDependentPackages:
310
+                    properVersion=pkgUtils._getProperVersion(pkg.package,pkg)
311
+                    self._installPackage(pkgUtils, pkg.package,properVersion, containerID, destLogPath,listInstalledPackages, listInstalledRPMs)
312
+                for pkg in listTestPackages:
310 313
                     flag = False
311
-                    for objName in listDependentPackagesParseObj:
312
-                        if objName.package == pkg:
313
-                                properVersion=self._getProperVersion(pkg,objName)
314
+                    for lineContent in listDependentPackages:
315
+                        if lineContent.package == pkg:
316
+                                properVersion=pkgUtils._getProperVersion(pkg,lineContent)
314 317
                                 self._installPackage(pkgUtils, pkg,properVersion, containerID, destLogPath,listInstalledPackages, listInstalledRPMs)
315 318
                                 flag = True
316 319
                                 break;
... ...
@@ -385,7 +339,7 @@ class PackageBuilderChroot(PackageBuilderBase):
385 385
         chrootID = None
386 386
         try:
387 387
             chrootID = self._prepareBuildRoot()
388
-            listDependentPackages,listDependentPackagesParseObj, listInstalledPackages, listInstalledRPMs = (
388
+            listDependentPackages, listTestPackages, listInstalledPackages, listInstalledRPMs = (
389 389
                 self._findDependentPackagesAndInstalledRPM(chrootID, index))
390 390
 
391 391
             pkgUtils = PackageUtils(self.logName, self.logPath)
... ...
@@ -393,10 +347,13 @@ class PackageBuilderChroot(PackageBuilderBase):
393 393
             if listDependentPackages:
394 394
                 self.logger.info("Installing the build time dependent packages......")
395 395
                 for pkg in listDependentPackages:
396
+                    properVersion=pkgUtils._getProperVersion(pkg.package, pkg)
397
+                    self._installPackage(pkgUtils, pkg.package,properVersion, chrootID, self.logPath,listInstalledPackages, listInstalledRPMs)
398
+                for pkg in listTestPackages:
396 399
                     flag = False
397
-                    for objName in listDependentPackagesParseObj:
398
-                        if objName.package == pkg:
399
-                                properVersion=self._getProperVersion(pkg,objName)
400
+                    for lineContent in listDependentPackages:
401
+                        if lineContent.package == pkg:
402
+                                properVersion=pkgUtils._getProperVersion(pkg,lineContent)
400 403
                                 self._installPackage(pkgUtils, pkg,properVersion, chrootID, self.logPath,listInstalledPackages, listInstalledRPMs)
401 404
                                 flag = True
402 405
                                 break;
... ...
@@ -9,6 +9,7 @@ from Logger import Logger
9 9
 from constants import constants
10 10
 import PullSources
11 11
 from SpecData import SPECS
12
+from distutils.version import LooseVersion
12 13
 
13 14
 class PackageUtils(object):
14 15
 
... ...
@@ -431,6 +432,26 @@ class PackageUtils(object):
431 431
         rpmDestDir = rpmDir + "/" + arch
432 432
         return rpmDestDir
433 433
 
434
+    def _getProperVersion(self,package,parseSpecObj):
435
+        listOfVersionObjs=SPECS.getData().getSpecObj(package)
436
+        for num in listOfVersionObjs:
437
+                if parseSpecObj.compare == 'gte':
438
+                       if LooseVersion(num.version) >= LooseVersion(parseSpecObj.version):
439
+                                return num.version
440
+                elif parseSpecObj.compare == 'lte':
441
+                        if LooseVersion(num.version) <= LooseVersion(parseSpecObj.version):
442
+                                return num.version
443
+                elif parseSpecObj.compare == 'eq':
444
+                        if LooseVersion(num.version) == LooseVersion(parseSpecObj.version):
445
+                                return num.version
446
+                elif parseSpecObj.compare == 'lt':
447
+                        if LooseVersion(num.version) < LooseVersion(parseSpecObj.version):
448
+                                return num.version
449
+                elif parseSpecObj.compare == 'gt':
450
+                        if LooseVersion(num.version) > LooseVersion(parseSpecObj.version):
451
+                                return num.version
452
+        return "*"
453
+
434 454
     def _copyRPM(self, rpmFile, destDir):
435 455
         cmdUtils = CommandUtils()
436 456
         rpmName = os.path.basename(rpmFile)
... ...
@@ -105,7 +105,7 @@ class Scheduler(object):
105 105
         listRequiredPackages = []
106 106
 
107 107
         for pkg in listRequiredRPMPackages:
108
-            basePkg = SPECS.getData().getSpecName(pkg)
108
+            basePkg = SPECS.getData().getSpecName(pkg.package)
109 109
             if basePkg not in listRequiredPackages:
110 110
                 listRequiredPackages.append(basePkg)
111 111
 
... ...
@@ -205,7 +205,7 @@ class Scheduler(object):
205 205
         listRequiredPackages = []
206 206
 
207 207
         for pkg in listRequiredRPMPackages:
208
-            basePkg = SPECS.getData().getSpecName(pkg)
208
+            basePkg = SPECS.getData().getSpecName(pkg.package)
209 209
             if basePkg not in listRequiredPackages:
210 210
                 listRequiredPackages.append(basePkg)
211 211
 
... ...
@@ -21,9 +21,6 @@ class SpecObject(object):
21 21
         self.checkBuildRequirePackages = []
22 22
         self.installRequiresAllPackages = []
23 23
         self.installRequiresPackages = {}
24
-        self.specParseObjBuildRequirePackages = []
25
-        self.specParseObjInstallRequiresPackages=[]
26
-        self.specParseObjCheckBuildRequirePackages=[]
27 24
         self.specFile = ""
28 25
         self.listSources = []
29 26
         self.checksums = {}
... ...
@@ -50,9 +47,9 @@ class SpecObjectsUtils(object):
50 50
             specName = spec.getBasePackageName()
51 51
             specObj = SpecObject()
52 52
             specObj.name = specName
53
-            specObj.buildRequirePackages,specObj.specParseObjBuildRequirePackages = spec.getBuildRequiresAllPackages()
54
-            specObj.installRequiresAllPackages,specObj.specParseObjInstallRequiresPackages = spec.getRequiresAllPackages()
55
-            specObj.checkBuildRequirePackages,specObj.specParseObjCheckBuildRequirePackages = spec.getCheckBuildRequiresAllPackages()
53
+            specObj.buildRequirePackages = spec.getBuildRequiresAllPackages()
54
+            specObj.installRequiresAllPackages = spec.getRequiresAllPackages()
55
+            specObj.checkBuildRequirePackages = spec.getCheckBuildRequiresAllPackages()
56 56
             specObj.listPackages = spec.getPackageNames()
57 57
             specObj.specFile = specFile
58 58
             specObj.version = spec.getVersion()
... ...
@@ -110,22 +107,18 @@ class SpecObjectsUtils(object):
110 110
         specName = self.getSpecName(package)
111 111
         return self.mapSpecObjects[specName][index].checkBuildRequirePackages
112 112
 
113
-    def getBuildRequiresParseObjForPackage(self, package, index=0):
114
-        specName=self.getSpecName(package)
115
-        return self.mapSpecObjects[specName][index].specParseObjBuildRequirePackages
116
-
117
-    def getRequiresParseObjForPackage(self, package, index=0):
118
-        specName=self.getSpecName(package)
119
-        return self.mapSpecObjects[specName][index].specParseObjInstallRequiresPackages
120
-
121
-    def getCheckBuildRequiresParseObjForPackage(self, package, index=0):
122
-        specName=self.getSpecName(package)
123
-        return self.mapSpecObjects[specName][index].specParseObjCheckBuildRequirePackages
124
-
125 113
     def getSpecObj(self, package):
126 114
         specName=self.getSpecName(package)
127 115
         return self.mapSpecObjects[specName]
128 116
 
117
+    def getPkgNamesFromObj(self, objlist):
118
+        listPkgName=[]
119
+        listPkgNames=list(set(objlist))
120
+        for name in listPkgNames:
121
+                listPkgName.append(name.package)
122
+        listPkgName=list(set(listPkgName))
123
+        return listPkgName
124
+
129 125
     def getRelease(self, package, index=0):
130 126
         specName = self.getSpecName(package)
131 127
         return self.mapSpecObjects[specName][index].release
... ...
@@ -225,11 +218,11 @@ class SpecObjectsUtils(object):
225 225
             self.logger.info(" ")
226 226
             self.logger.info(" ")
227 227
             self.logger.info("Build require packages")
228
-            self.logger.info(specObj.buildRequirePackages)
228
+            self.logger.info(self.getPkgNamesFromObj(specObj.buildRequirePackages))
229 229
             self.logger.info(" ")
230 230
             self.logger.info(" ")
231 231
             self.logger.info("install require packages")
232
-            self.logger.info(specObj.installRequiresAllPackages)
232
+            self.logger.info(self.getPkgNamesFromObj(specObj.installRequiresAllPackages))
233 233
             self.logger.info(" ")
234 234
             self.logger.info(specObj.installRequiresPackages)
235 235
             self.logger.info("security_hardening: " + specObj.securityHardening)
... ...
@@ -92,52 +92,39 @@ class Specutils(object):
92 92
 
93 93
     def getRequiresAllPackages(self):
94 94
         dependentPackages = []
95
-        specParseObjDependentPackages=[]
96 95
         for pkg in self.spec.packages.values():
97 96
             for dpkg in pkg.requires:
98
-                dependentPackages.append(dpkg.package)
99
-                specParseObjDependentPackages.append(dpkg)
100
-        dependentPackages = list(set(dependentPackages))
101
-        specParseObjDependentPackages = list(set(specParseObjDependentPackages))
102
-        specParseObjDependentPackagesTemp = specParseObjDependentPackages[:]
97
+                dependentPackages.append(dpkg)
98
+        listDependentPackages = list(set(dependentPackages))
103 99
         packageNames = self.getPackageNames()
104 100
         for pkgName in packageNames:
105
-            if pkgName in dependentPackages:
106
-                dependentPackages.remove(pkgName)
107
-            for objName in specParseObjDependentPackagesTemp:
101
+            for objName in listDependentPackages:
108 102
                 if objName.package == pkgName:
109
-                        specParseObjDependentPackages.remove(objName)
110
-        return dependentPackages,specParseObjDependentPackages
103
+                        dependentPackages.remove(objName)
104
+        dependentPackages = list(set(dependentPackages))
105
+        return dependentPackages
111 106
 
112 107
     def getBuildRequiresAllPackages(self):
113 108
         dependentPackages = []
114
-        specParseObjDependentPackages=[]
115 109
         for pkg in self.spec.packages.values():
116 110
             for dpkg in pkg.buildrequires:
117
-                dependentPackages.append(dpkg.package)
118
-                specParseObjDependentPackages.append(dpkg)
119
-        dependentPackages = list(set(dependentPackages))
120
-        specParseObjDependentPackages = list(set(specParseObjDependentPackages))
121
-        specParseObjDependentPackagesTemp = specParseObjDependentPackages[:]
111
+                dependentPackages.append(dpkg)
112
+        listDependentPackages = list(set(dependentPackages))
122 113
         packageNames = self.getPackageNames()
123 114
         for pkgName in packageNames:
124
-            if pkgName in dependentPackages:
125
-                dependentPackages.remove(pkgName)
126
-            for objName in specParseObjDependentPackagesTemp:
115
+            for objName in listDependentPackages:
127 116
                 if objName.package == pkgName:
128
-                        specParseObjDependentPackages.remove(objName)
129
-        return dependentPackages,specParseObjDependentPackages
117
+                        dependentPackages.remove(objName)
118
+        dependentPackages = list(set(dependentPackages))
119
+        return dependentPackages
130 120
 
131 121
     def getCheckBuildRequiresAllPackages(self):
132 122
         dependentPackages = []
133
-        specParseObjDependentPackages=[]
134 123
         for pkg in self.spec.packages.values():
135 124
             for dpkg in pkg.checkbuildrequires:
136
-                dependentPackages.append(dpkg.package)
137
-                specParseObjDependentPackages.append(dpkg)
125
+                dependentPackages.append(dpkg)
138 126
         dependentPackages = list(set(dependentPackages))
139
-        specParseObjDependentPackages = list(set(specParseObjDependentPackages))
140
-        return dependentPackages,specParseObjDependentPackages
127
+        return dependentPackages
141 128
 
142 129
     def getRequires(self, pkgName):
143 130
         dependentPackages = []
... ...
@@ -196,8 +183,8 @@ def main():
196 196
     print("requires {}".format(spec.getRequires('libtool')))
197 197
 
198 198
     print("provides {}".format(spec.getProvides('libtool')))
199
-    print("all-requires {}".format(spec.getRequiresAllPackages()))
200
-    print("all-build-requires {}".format(spec.getBuildRequiresAllPackages()))
199
+    print("all-requires {}".format(spec.getPkgNamesFromObj(spec.getRequiresAllPackages())))
200
+    print("all-build-requires {}".format(spec.getPkgNamesFromObj(spec.getBuildRequiresAllPackages())))
201 201
 
202 202
 if __name__ == '__main__':
203 203
     main()
... ...
@@ -7,6 +7,7 @@ from ChrootUtils import ChrootUtils
7 7
 from Logger import Logger
8 8
 from PackageUtils import PackageUtils
9 9
 from constants import constants
10
+from SpecData import SPECS
10 11
 
11 12
 class ToolChainUtils(object):
12 13
 
... ...
@@ -112,7 +113,13 @@ class ToolChainUtils(object):
112 112
             raise e
113 113
         return pkgCount
114 114
 
115
-    def installToolChainRPMS(self, chrootID, packageName, logPath=None):
115
+    def getListDependentPackageLineContent(self, index):
116
+        listBuildRequiresPkgLineContent=SPECS.getData().getBuildRequiresForPackage(self.package, index)
117
+        listBuildRequiresPkgLineContent.extend(SPECS.getData().getCheckBuildRequiresForPackage(self.package, index))
118
+        listBuildRequiresPkgLineContent=list(set(listBuildRequiresPkgLineContent))
119
+        return listBuildRequiresPkgLineContent
120
+
121
+    def installToolChainRPMS(self, chrootID, packageName, logPath=None,index=0):
116 122
         if logPath is None:
117 123
             logPath = self.logPath
118 124
         cmdUtils = CommandUtils()
... ...
@@ -120,16 +127,22 @@ class ToolChainUtils(object):
120 120
         self.logger.info("Installing Tool Chain RPMS.......")
121 121
         rpmFiles = ""
122 122
         packages = ""
123
+        self.package=packageName
124
+        listBuildRequiresPackageLineContent = self.getListDependentPackageLineContent(index)
123 125
         for package in constants.listToolChainRPMsToInstall:
124 126
             pkgUtils = PackageUtils(self.logName, self.logPath)
125 127
             rpmFile = None
128
+            version = "*"
129
+            for depPkg in listBuildRequiresPackageLineContent:
130
+                if depPkg.package == package:
131
+                        version=pkgUtils._getProperVersion(package,depPkg)
126 132
             if constants.rpmCheck:
127
-                rpmFile = pkgUtils.findRPMFileForGivenPackage(package)
133
+                rpmFile = pkgUtils.findRPMFileForGivenPackage(package, version)
128 134
             else:
129 135
                 if (packageName not in constants.listToolChainRPMsToInstall or
130 136
                         constants.listToolChainRPMsToInstall.index(packageName) >
131 137
                         constants.listToolChainRPMsToInstall.index(package)):
132
-                    rpmFile = pkgUtils.findRPMFileForGivenPackage(package)
138
+                    rpmFile = pkgUtils.findRPMFileForGivenPackage(package, version)
133 139
             if rpmFile is None:
134 140
                 # sqlite-autoconf package was renamed, but it still published as sqlite-autoconf
135 141
                 if (package == "sqlite") and (platform.machine() == "x86_64"):