def buildRPMSForGivenPackage(self,package,chrootID,listBuildOptionPackages,pkgBuildOptionFile,destLogPath=None): self.logger.info("Building rpm's for package:"+package) listSourcesFiles = constants.specData.getSources(package) listPatchFiles = constants.specData.getPatches(package) specFile = constants.specData.getSpecFile(package) specName = constants.specData.getSpecName(package) + ".spec" chrootSourcePath=chrootID+constants.topDirPath+"/SOURCES/" chrootSpecPath=constants.topDirPath+"/SPECS/" chrootLogsFilePath=chrootID+constants.topDirPath+"/LOGS/"+package+".log" chrootCmd=self.runInChrootCommand+" "+chrootID shutil.copyfile(specFile, chrootID+chrootSpecPath+specName ) # FIXME: some sources are located in SPECS/.. how to mount? # if os.geteuid()==0: self.copySourcesTobuildroot(listSourcesFiles,package,chrootSourcePath) self.copySourcesTobuildroot(listPatchFiles,package,chrootSourcePath) listAdditionalFiles = [] macros = [] if package in listBuildOptionPackages: jsonData = open(pkgBuildOptionFile) pkg_build_option_json = json.load(jsonData, object_pairs_hook=collections.OrderedDict) jsonData.close() pkgs_sorted = pkg_build_option_json.items() for pkg in pkgs_sorted: p = str(pkg[0].encode('utf-8')) if p == package: filelist = pkg[1]["files"] for f in filelist: listAdditionalFiles.append(str(f.encode('utf-8'))) macrolist = pkg[1]["macros"] for macro in macrolist: macros.append(str(macro.encode('utf-8'))) chrootAdditionalPath=chrootID+constants.topDirPath+"/ADDITIONAL" self.copyAdditionalBuildFiles(listAdditionalFiles,chrootAdditionalPath) listRPMFiles=[] listSRPMFiles=[] try: listRPMFiles,listSRPMFiles = self.buildRPM(chrootSpecPath+"/"+specName,chrootLogsFilePath,chrootCmd,package,macros) except Exception as e: self.logger.error("Failed while building rpm:"+package) raise e finally: if destLogPath is not None: shutil.copy2(chrootLogsFilePath, destLogPath) self.logger.info("RPM build is successful") arch = self.getRPMArch(listRPMFiles[0]) for rpmFile in listRPMFiles: self.copyRPM(chrootID+"/"+rpmFile, constants.rpmPath) for srpmFile in listSRPMFiles: self.copyRPM(chrootID+"/"+srpmFile, constants.sourceRpmPath) srpmName = os.path.basename(srpmFile) package,version,release = self.findPackageInfoFromSourceRPMFile(srpmFile) SourcePackageInfo.addSRPMData(package,version,release,arch,srpmName)
def buildRPMSForGivenPackage(self,package, chrootID,destLogPath=None): self.logger.info("Building rpm's for package:"+package) listSourcesFiles = constants.specData.getSources(package) listPatchFiles = constants.specData.getPatches(package) specFile = constants.specData.getSpecFile(package) specName = constants.specData.getSpecName(package) + ".spec" chrootSourcePath=chrootID+constants.topDirPath+"/SOURCES/" chrootSpecPath=constants.topDirPath+"/SPECS/" chrootLogsFilePath=chrootID+constants.topDirPath+"/LOGS/"+package+".log" chrootCmd=self.runInChrootCommand+" "+chrootID shutil.copyfile(specFile, chrootID+chrootSpecPath+specName ) # FIXME: some sources are located in SPECS/.. how to mount? # if os.geteuid()==0: self.copySourcesTobuildroot(listSourcesFiles,package,chrootSourcePath) self.copySourcesTobuildroot(listPatchFiles,package,chrootSourcePath) listRPMFiles=[] listSRPMFiles=[] try: listRPMFiles,listSRPMFiles = self.buildRPM(chrootSpecPath+"/"+specName,chrootLogsFilePath, chrootCmd) except Exception as e: self.logger.error("Failed while building rpm:"+package) raise e finally: if destLogPath is not None: shutil.copy2(chrootLogsFilePath, destLogPath) self.logger.info("RPM build is successful") arch = self.getRPMArch(listRPMFiles[0]) for rpmFile in listRPMFiles: self.copyRPM(chrootID+"/"+rpmFile, constants.rpmPath) for srpmFile in listSRPMFiles: self.copyRPM(chrootID+"/"+srpmFile, constants.sourceRpmPath) srpmName = os.path.basename(srpmFile) package,version,release = self.findPackageInfoFromSourceRPMFile(srpmFile) SourcePackageInfo.addSRPMData(package,version,release,arch,srpmName)
def buildRPMSForGivenPackage(self, package, chrootID, listBuildOptionPackages, pkgBuildOptionFile, destLogPath=None): self.logger.info("Building rpm's for package:" + package) listSourcesFiles = constants.specData.getSources(package) listPatchFiles = constants.specData.getPatches(package) specFile = constants.specData.getSpecFile(package) specName = constants.specData.getSpecName(package) + ".spec" chrootSourcePath = chrootID + constants.topDirPath + "/SOURCES/" chrootSpecPath = constants.topDirPath + "/SPECS/" chrootLogsFilePath = chrootID + constants.topDirPath + "/LOGS/" + package + ".log" chrootCmd = self.runInChrootCommand + " " + chrootID shutil.copyfile(specFile, chrootID + chrootSpecPath + specName) # FIXME: some sources are located in SPECS/.. how to mount? # if os.geteuid()==0: self.copySourcesTobuildroot(listSourcesFiles, package, chrootSourcePath) self.copySourcesTobuildroot(listPatchFiles, package, chrootSourcePath) listAdditionalFiles = [] macros = [] if package in listBuildOptionPackages: jsonData = open(pkgBuildOptionFile) pkg_build_option_json = json.load( jsonData, object_pairs_hook=collections.OrderedDict) jsonData.close() pkgs_sorted = pkg_build_option_json.items() for pkg in pkgs_sorted: p = str(pkg[0].encode('utf-8')) if p == package: filelist = pkg[1]["files"] for f in filelist: listAdditionalFiles.append(f) macrolist = pkg[1]["macros"] for macro in macrolist: macros.append(str(macro.encode('utf-8'))) self.copyAdditionalBuildFiles(listAdditionalFiles, chrootID) #Adding rpm macros listRPMMacros = constants.specData.getRPMMacros() for macroName in listRPMMacros.keys(): macros.append(macroName + " " + listRPMMacros[macroName]) listRPMFiles = [] listSRPMFiles = [] try: listRPMFiles, listSRPMFiles = self.buildRPM( chrootSpecPath + "/" + specName, chrootLogsFilePath, chrootCmd, package, macros) except Exception as e: self.logger.error("Failed while building rpm:" + package) raise e finally: if destLogPath is not None: if constants.rpmCheck and package in constants.testForceRPMS and constants.specData.isCheckAvailable( package): cmd = "sed -i '/^Executing(%check):/,/^Processing files:/{//!b};d' " + chrootLogsFilePath logFile = destLogPath + "/adjustTestFile.log" returnVal = CommandUtils().runCommandInShell(cmd, logFile) testLogFile = destLogPath + "/" + package + "-test.log" shutil.copyfile(chrootLogsFilePath, testLogFile) else: shutil.copy2(chrootLogsFilePath, destLogPath) self.logger.info("RPM build is successful") for rpmFile in listRPMFiles: self.copyRPM(chrootID + "/" + rpmFile, constants.rpmPath) for srpmFile in listSRPMFiles: self.copyRPM(chrootID + "/" + srpmFile, constants.sourceRpmPath) srpmName = os.path.basename(srpmFile) package, version, release = self.findPackageInfoFromSourceRPMFile( srpmFile) arch = self.getRPMArch(listRPMFiles[0]) SourcePackageInfo.addSRPMData(package, version, release, arch, srpmName)
def buildRPMSForGivenPackage(self,package,chrootID,listBuildOptionPackages,pkgBuildOptionFile,destLogPath=None): self.logger.info("Building rpm's for package:"+package) listSourcesFiles = constants.specData.getSources(package) listPatchFiles = constants.specData.getPatches(package) specFile = constants.specData.getSpecFile(package) specName = constants.specData.getSpecName(package) + ".spec" chrootSourcePath=chrootID+constants.topDirPath+"/SOURCES/" chrootSpecPath=constants.topDirPath+"/SPECS/" chrootLogsFilePath=chrootID+constants.topDirPath+"/LOGS/"+package+".log" chrootCmd=self.runInChrootCommand+" "+chrootID shutil.copyfile(specFile, chrootID+chrootSpecPath+specName ) # FIXME: some sources are located in SPECS/.. how to mount? # if os.geteuid()==0: self.copySourcesTobuildroot(listSourcesFiles,package,chrootSourcePath) self.copySourcesTobuildroot(listPatchFiles,package,chrootSourcePath) listAdditionalFiles = [] macros = [] if package in listBuildOptionPackages: jsonData = open(pkgBuildOptionFile) pkg_build_option_json = json.load(jsonData, object_pairs_hook=collections.OrderedDict) jsonData.close() pkgs_sorted = pkg_build_option_json.items() for pkg in pkgs_sorted: p = str(pkg[0].encode('utf-8')) if p == package: filelist = pkg[1]["files"] for f in filelist: listAdditionalFiles.append(f) macrolist = pkg[1]["macros"] for macro in macrolist: macros.append(str(macro.encode('utf-8'))) self.copyAdditionalBuildFiles(listAdditionalFiles,chrootID) #Adding rpm macros listRPMMacros = constants.specData.getRPMMacros() for macroName in listRPMMacros.keys(): macros.append(macroName+" "+listRPMMacros[macroName]) listRPMFiles=[] listSRPMFiles=[] try: listRPMFiles,listSRPMFiles = self.buildRPM(chrootSpecPath+"/"+specName,chrootLogsFilePath,chrootCmd,package,macros) except Exception as e: self.logger.error("Failed while building rpm:"+package) raise e finally: if destLogPath is not None: if constants.rpmCheck and package in constants.testForceRPMS and constants.specData.isCheckAvailable(package): cmd="sed -i '/^Executing(%check):/,/^Processing files:/{//!b};d' "+ chrootLogsFilePath logFile = destLogPath+"/adjustTestFile.log" returnVal = CommandUtils().runCommandInShell(cmd, logFile) testLogFile = destLogPath+"/"+package+"-test.log" shutil.copyfile(chrootLogsFilePath, testLogFile) else: shutil.copy2(chrootLogsFilePath, destLogPath) self.logger.info("RPM build is successful") for rpmFile in listRPMFiles: self.copyRPM(chrootID+"/"+rpmFile, constants.rpmPath) for srpmFile in listSRPMFiles: self.copyRPM(chrootID+"/"+srpmFile, constants.sourceRpmPath) srpmName = os.path.basename(srpmFile) package,version,release = self.findPackageInfoFromSourceRPMFile(srpmFile) arch = self.getRPMArch(listRPMFiles[0]) SourcePackageInfo.addSRPMData(package,version,release,arch,srpmName)