Ejemplo n.º 1
0
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()
Ejemplo n.º 2
0
 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
Ejemplo n.º 3
0
 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
Ejemplo n.º 4
0
    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
Ejemplo n.º 5
0
 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
Ejemplo n.º 6
0
 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
Ejemplo n.º 7
0
 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
Ejemplo n.º 8
0
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")
Ejemplo n.º 9
0
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")
Ejemplo n.º 10
0
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")
Ejemplo n.º 11
0
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")
Ejemplo n.º 12
0
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()
Ejemplo n.º 13
0
 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