import json import os.path from Logger import Logger from constants import constants from CommandUtils import CommandUtils from PackageUtils import PackageUtils from SpecData import SPECS class PackageInfo(object): def __init__(self, logName=None, logPath=None): if logName is None: logName = "PackageInfo" if logPath is None: logPath = constants.logPath self.logName = logName self.logPath = logPath self.logger = Logger.getLogger(logName, logPath) self.pkgList = {} def loadPackagesData(self): listPackages = SPECS.getData().getListPackages() listPackages.sort() listRPMFiles = [] cmdUtils = CommandUtils() for package in listPackages: release = SPECS.getData().getRelease(package) version = SPECS.getData().getVersion(package) listRPMPackages = SPECS.getData().getRPMPackages(package) srpmFileName = package + "-" + version + "-" + release + ".src.rpm" srpmFiles = cmdUtils.findFile(srpmFileName, constants.sourceRpmPath) srpmFile = None if len(srpmFiles) == 1: srpmFile = srpmFiles[0] debugrpmFileName = package + "-debuginfo-" + version + "-" + release + "*" debugrpmFiles = cmdUtils.findFile(debugrpmFileName, constants.rpmPath) debugrpmFile = None if len(debugrpmFiles) == 1: debugrpmFile = debugrpmFiles[0] pkgUtils = PackageUtils(self.logName, self.logPath) for rpmPkg in listRPMPackages: rpmFile = pkgUtils.findRPMFileForGivenPackage(rpmPkg) if rpmFile is not None: listRPMFiles.append(rpmFile) listPkgAttributes = {"sourcerpm":srpmFile, "rpm":rpmFile, "debugrpm":debugrpmFile} self.pkgList[rpmPkg] = listPkgAttributes self.logger.debug("Added " + rpmPkg + " rpm package to the list") else: self.logger.error("Missing rpm file for package:" + rpmPkg) def writePkgListToFile(self, fileName): self.logger.info("Writing package list to the json file") cmdUtils = CommandUtils() dirPath = os.path.basename(fileName) if not os.path.isdir(dirPath): cmdUtils.runCommandInShell("mkdir -p " + dirPath) pkgInfoFile = open(fileName, 'w+') json.dump(self.pkgList, pkgInfoFile, indent=4) pkgInfoFile.close()