def buildSourcesList(specPath, yamlDir, singleFile=False): strUtils = StringUtils() if singleFile: yamlFile = open(yamlDir+"sources_list.yaml", "w") lst = os.listdir(specPath) lst.sort() for dirEntry in lst: specDir = os.path.join(specPath, dirEntry) if os.path.isdir(specDir): for specEntry in os.listdir(specDir): specFile = os.path.join(specDir, specEntry) if os.path.isfile(specFile) and specFile.endswith(".spec"): spec=Specutils(specFile) modified = len(spec.getPatchNames()) > 0 ss=spec.getSourceURLs() for s in ss: if (s.startswith("http") or s.startswith("ftp")): ossname=strUtils.getPackageNameFromURL(s) ossversion=strUtils.getPackageVersionFromURL(s) if not singleFile: yamlFile = open(yamlDir+ossname+"-"+ossversion+".yaml", "w") yamlFile.write("vmwsource:"+ossname+":"+ossversion+":\n") yamlFile.write(" repository: VMWsource\n") yamlFile.write(" name: '"+ossname+"'\n") yamlFile.write(" version: '"+ossversion+"'\n") yamlFile.write(" url: "+s+"\n") yamlFile.write(" license: UNKNOWN\n") if modified: yamlFile.write(" modified: true\n") yamlFile.write("\n") if not singleFile: yamlFile.close() if singleFile: yamlFile.close()
def _readChecksum(self, line, pkg): strUtils = StringUtils() line = self._replaceMacros(line) data = line.strip() words = data.split() nrWords = len(words) if nrWords != 3: print("Error: Unable to parse line: " + line) return False value = words[2].split("=") if len(value) != 2: print("Error: Unable to parse line: " + line) return False matchedSources = [] for source in pkg.sources: sourceName = strUtils.getFileNameFromURL(source) if sourceName.startswith(value[0]): matchedSources.append(sourceName) if not matchedSources: print("Error: Can not find match for sha1 " + value[0]) return False if len(matchedSources) > 1: print("Error: Too many matched Sources:" + ' '.join(matchedSources) + " for sha1 " + value[0]) return False pkg.checksums[sourceName] = value[1] return True
def readChecksum(self, line, pkg): strUtils = StringUtils() line = pkg.decodeContents(line) data = line.strip() words = data.split(" ") nrWords = len(words) if (nrWords != 3): print "Error: Unable to parse line: " + line return False value = words[2].split("=") if (len(value) != 2): print "Error: Unable to parse line: " + line return False matchedSources = [] for source in pkg.sources: sourceName = strUtils.getFileNameFromURL(source) if (sourceName.startswith(value[0])): matchedSources.append(sourceName) if (len(matchedSources) == 0): print "Error: Can not find match for sha1 " + value[0] return False if (len(matchedSources) > 1): print "Error: Too many matches in sources: " + matchedSources + " for sha1 " + value[ 0] return False pkg.checksums[sourceName] = value[1] return True
def _readDependentPackageData(self, line): strUtils = StringUtils() listPackages = line.split(",") listdependentpkgs = [] for line in listPackages: line = strUtils.getStringInConditionalBrackets(line) listContents = line.split() totalContents = len(listContents) i = 0 while i < totalContents: dpkg = dependentPackageData() compare = None packageName = listContents[i] if listContents[i].startswith("/"): provider = constants.providedBy.get(listContents[i], None) i += 1 if provider is not None: packageName = provider else: continue if i + 2 < len(listContents): if listContents[i + 1] in (">=", "<=", "=", "<", ">"): compare = listContents[i + 1] if compare is not None: dpkg.package = packageName dpkg.compare = compare dpkg.version = listContents[i + 2] i = i + 3 else: dpkg.package = packageName i = i + 1 listdependentpkgs.append(dpkg) return listdependentpkgs
def _getPatchNames(self): patchNames = [] strUtils = StringUtils() pkg = self.packages.get('default') for patch in pkg.patches: patchName = strUtils.getFileNameFromURL(patch) patchNames.append(patchName) return patchNames
def _getSourceNames(self): sourceNames = [] strUtils = StringUtils() pkg = self.packages.get('default') for source in pkg.sources: sourceName = strUtils.getFileNameFromURL(source) sourceNames.append(sourceName) return sourceNames
def getSourceURLs(self): sourceNames = [] strUtils = StringUtils() pkg = self.spec.packages.get('default') if pkg is None: return None for source in pkg.sources: sourceNames.append(source) return sourceNames
def buildSourcesList(specPath, sourcePath, yamlDir, logger, singleFile=True): strUtils = StringUtils() if singleFile: yamlFile = open(yamlDir + "sources_list.yaml", "w") lst = os.listdir(specPath) lst.sort() import PullSources for dirEntry in lst: specDir = os.path.join(specPath, dirEntry) if os.path.isdir(specDir): for specEntry in os.listdir(specDir): specFile = os.path.join(specDir, specEntry) if os.path.isfile(specFile) and specFile.endswith(".spec"): spec = Specutils(specFile) modified = len(spec.getPatchNames()) > 0 listSourceURLs = spec.getSourceURLs() ossname = spec.getBasePackageName() ossversion = spec.getVersion() url = None listSourceNames = spec.getSourceNames() sourceName = None if len(listSourceNames) > 0: sourceName = listSourceNames[0] sha1 = spec.getChecksumForSource(sourceName) if sha1 is not None: PullSources.get(sourceName, sha1, sourcePath, constants.pullsourcesConfig) if len(listSourceURLs) > 0: sourceURL = listSourceURLs[0] if sourceURL.startswith( "http") or sourceURL.startswith("ftp"): url = sourceURL else: url = spec.getURL(ossname) if not singleFile: yamlFile = open( yamlDir + "/" + ossname + "-" + ossversion + ".yaml", "w") yamlFile.write("vmwsource:" + ossname + ":" + ossversion + ":\n") yamlFile.write(" repository: VMWsource\n") yamlFile.write(" name: '" + ossname + "'\n") yamlFile.write(" version: '" + ossversion + "'\n") yamlFile.write(" url: " + str(url) + "\n") yamlFile.write(" license: UNKNOWN\n") if sourceName is not None: yamlFile.write(" vmwsource-distribution: " + str(sourceName) + "\n") if modified: yamlFile.write(" modified: true\n") yamlFile.write("\n") if not singleFile: yamlFile.close() if singleFile: yamlFile.close() logger.info("Generated source yaml files for all packages")
def buildSRPMList(specPath, srpmPath, yamlDir, logger, singleFile=True): strUtils = StringUtils() if singleFile: yamlFile = open(yamlDir + "srpm_list.yaml", "w") lst = os.listdir(specPath) lst.sort() cmdUtils = CommandUtils() for dirEntry in lst: specDir = os.path.join(specPath, dirEntry) if os.path.isdir(specDir): for specEntry in os.listdir(specDir): specFile = os.path.join(specDir, specEntry) if os.path.isfile(specFile) and specFile.endswith(".spec"): spec = Specutils(specFile) ossname = spec.getBasePackageName() ossversion = spec.getVersion() ossrelease = spec.getRelease() listFoundSRPMFiles = cmdUtils.findFile( ossname + "-" + ossversion + "-" + ossrelease + ".src.rpm", srpmPath) srpmName = None if len(listFoundSRPMFiles) == 1: srpmFullPath = listFoundSRPMFiles[0] srpmName = os.path.basename(srpmFullPath) cpcmd = "cp " + srpmFullPath + " " + yamlDir + "/" returnVal = cmdUtils.runCommandInShell(cpcmd) if not returnVal: logger.error( "Copy SRPM File is failed for package:" + ossname) else: logger.error("SRPM file is not found:" + ossname) if not singleFile: yamlFile = open( yamlDir + "/" + ossname + "-" + ossversion + "-" + ossrelease + ".yaml", "w") yamlFile.write("baseos:" + ossname + ":" + ossversion + "-" + ossrelease + ":\n") yamlFile.write(" repository: BaseOS\n") yamlFile.write(" name: '" + ossname + "'\n") yamlFile.write(" version: '" + ossversion + "-" + ossrelease + "'\n") yamlFile.write(" baseos-style: rpm\n") yamlFile.write(" baseos-source: '" + str(srpmName) + "'\n") yamlFile.write(" baseos-osname: 'photon'\n") yamlFile.write("\n") if not singleFile: yamlFile.close() if singleFile: yamlFile.close() logger.info("Generated srpm yaml files for all packages")
def buildSourcesList(yamlDir, logger, singleFile=True): strUtils = StringUtils() if singleFile: yamlFile = open(yamlDir + "/sources_list.yaml", "w") listPackages = constants.specData.getListPackages() listPackages.sort() import PullSources for package in listPackages: ossname = package ossversion = constants.specData.getVersion(package) modified = False listPatches = constants.specData.getPatches(package) if listPatches is not None and len(listPatches) > 0: modified = True url = constants.specData.getSourceURL(package) if url is None: url = constants.specData.getURL(package) sourceName = None listSourceNames = constants.specData.getSources(package) if len(listSourceNames) > 0: sourceName = listSourceNames[0] sha1 = constants.specData.getSHA1(package, sourceName) if sha1 is not None: PullSources.get(sourceName, sha1, yamlDir, constants.pullsourcesConfig) if not singleFile: yamlFile = open( yamlDir + "/" + ossname + "-" + ossversion + ".yaml", "w") yamlFile.write("vmwsource:" + ossname + ":" + ossversion + ":\n") yamlFile.write(" repository: VMWsource\n") yamlFile.write(" name: '" + ossname + "'\n") yamlFile.write(" version: '" + ossversion + "'\n") yamlFile.write(" url: " + str(url) + "\n") yamlFile.write(" license: UNKNOWN\n") if sourceName is not None: yamlFile.write(" vmwsource-distribution: " + str(sourceName) + "\n") if modified: yamlFile.write(" modified: true\n") yamlFile.write("\n") if not singleFile: yamlFile.close() if singleFile: yamlFile.close() logger.info("Generated source yaml files for all packages")
def buildSRPMList(srpmPath, yamlDir, logger, singleFile=True): strUtils = StringUtils() if singleFile: yamlFile = open(yamlDir + "/srpm_list.yaml", "w") listPackages = constants.specData.getListPackages() listPackages.sort() cmdUtils = CommandUtils() for package in listPackages: ossname = package ossversion = constants.specData.getVersion(package) ossrelease = constants.specData.getRelease(package) listFoundSRPMFiles = cmdUtils.findFile( ossname + "-" + ossversion + "-" + ossrelease + ".src.rpm", srpmPath) srpmName = None if len(listFoundSRPMFiles) == 1: srpmFullPath = listFoundSRPMFiles[0] srpmName = os.path.basename(srpmFullPath) cpcmd = "cp " + srpmFullPath + " " + yamlDir + "/" returnVal = cmdUtils.runCommandInShell(cpcmd) if not returnVal: logger.error("Copy SRPM File is failed for package:" + ossname) else: logger.error("SRPM file is not found:" + ossname) if not singleFile: yamlFile = open( yamlDir + "/" + ossname + "-" + ossversion + "-" + ossrelease + ".yaml", "w") yamlFile.write("baseos:" + ossname + ":" + ossversion + "-" + ossrelease + ":\n") yamlFile.write(" repository: BaseOS\n") yamlFile.write(" name: '" + ossname + "'\n") yamlFile.write(" version: '" + ossversion + "-" + ossrelease + "'\n") yamlFile.write(" baseos-style: rpm\n") yamlFile.write(" baseos-source: '" + str(srpmName) + "'\n") yamlFile.write(" baseos-osname: 'photon'\n") yamlFile.write("\n") if not singleFile: yamlFile.close() if singleFile: yamlFile.close() logger.info("Generated srpm yaml files for all packages")
def buildSourcesList(specPath, yamlDir, singleFile=False): strUtils = StringUtils() if singleFile: yamlFile = open(yamlDir + "sources_list.yaml", "w") lst = os.listdir(specPath) lst.sort() for dirEntry in lst: specDir = os.path.join(specPath, dirEntry) if os.path.isdir(specDir): for specEntry in os.listdir(specDir): specFile = os.path.join(specDir, specEntry) if os.path.isfile(specFile) and specFile.endswith(".spec"): spec = Specutils(specFile) modified = len(spec.getPatchNames()) > 0 listSourceURLs = spec.getSourceURLs() ossname = spec.getBasePackageName() ossversion = spec.getVersion() url = None if len(listSourceURLs) > 0: sourceURL = listSourceURLs[0] if sourceURL.startswith( "http") or sourceURL.startswith("ftp"): url = sourceURL else: url = spec.getURL(ossname) if not singleFile: yamlFile = open( yamlDir + ossname + "-" + ossversion + ".yaml", "w") yamlFile.write("vmwsource:" + ossname + ":" + ossversion + ":\n") yamlFile.write(" repository: VMWsource\n") yamlFile.write(" name: '" + ossname + "'\n") yamlFile.write(" version: '" + ossversion + "'\n") yamlFile.write(" url: " + str(url) + "\n") yamlFile.write(" license: UNKNOWN\n") if modified: yamlFile.write(" modified: true\n") yamlFile.write("\n") if not singleFile: yamlFile.close() if singleFile: yamlFile.close()
def readDependentPackageData(self,line): strUtils = StringUtils() listPackages=line.split(",") listdependentpkgs=[] for line in listPackages: line=strUtils.getStringInBrackets(line) listContents=line.split() totalContents = len(listContents) i=0 while i < totalContents: dpkg = dependentPackageData() compare=None if listContents[i].startswith("/"): i=i+1 continue if i+2 < len(listContents): if listContents[i+1] == ">=": compare="gte" elif listContents[i+1] == "<=": compare="lte" elif listContents[i+1] == "==": compare="eq" elif listContents[i+1] == "<": compare="lt" elif listContents[i+1] == ">": compare="gt" elif listContents[i+1] == "=": compare="eq" if compare is not None: dpkg.package=listContents[i] dpkg.compare=compare dpkg.version=listContents[i+2] i=i+3 else: dpkg.package=listContents[i] i=i+1 listdependentpkgs.append(dpkg) return listdependentpkgs