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>
... | ... |
@@ -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"): |