コード例 #1
0
class Specutils(object):
    def __init__(self, specfile):
        self.specfile = ""
        self.spec = SpecParser()
        if Specutils._isSpecFile(specfile):
            self.specfile = specfile
            self.spec.parseSpecFile(self.specfile)

    @staticmethod
    def _isSpecFile(specfile):
        if os.path.isfile(specfile) and specfile.endswith(".spec"):
            return True
        return False

    def getSourceNames(self):
        sourceNames = []
        strUtils = StringUtils()
        pkg = self.spec.packages.get('default')
        if pkg is None:
            return None
        for source in pkg.sources:
            sourceName = strUtils.getFileNameFromURL(source)
            sourceNames.append(sourceName)
        return sourceNames

    def getChecksums(self):
        pkg = self.spec.packages.get('default')
        return pkg.checksums

    def getPatchNames(self):
        patchNames = []
        strUtils = StringUtils()
        pkg = self.spec.packages.get('default')
        if pkg is None:
            return None
        for patch in pkg.patches:
            patchName = strUtils.getFileNameFromURL(patch)
            patchNames.append(patchName)
        return patchNames

    def getPackageNames(self):
        packageNames = []
        for pkg in self.spec.packages.values():
            packageNames.append(pkg.name)
        return packageNames

    def getIsRPMPackage(self, pkgName):
        defaultPkgName = self.spec.packages['default'].name
        if pkgName == defaultPkgName:
            pkgName = "default"
        if pkgName in self.spec.packages.keys():
            pkg = self.spec.packages.get(pkgName)
            if pkg.filesMacro is not None:
                return True
        return False

    def getRPMNames(self):
        rpmNames = []
        for pkg in self.spec.packages.values():
            rpmName = pkg.name + "-" + pkg.version + "-" + pkg.release
            rpmNames.append(rpmName)
        return rpmNames

    def getLicense(self):
        pkg = self.spec.packages.get('default')
        if pkg is None:
            return None
        return pkg.license

    def getBuildArch(self, pkgName):
        for pkg in self.spec.packages.values():
            if pkg.name == pkgName:
                return pkg.buildarch
        pkg = self.spec.packages.get('default')
        return pkg.buildarch

    def getURL(self):
        pkg = self.spec.packages.get('default')
        if pkg is None:
            return None
        return pkg.URL

    def getSourceURL(self):
        pkg = self.spec.packages.get('default')
        if pkg is None:
            return None
        if not pkg.sources:
            return None
        sourceURL = pkg.sources[0]
        if sourceURL.startswith("http") or sourceURL.startswith("ftp"):
            return sourceURL
        return None

    def getRequiresAllPackages(self):
        dependentPackages = []
        for pkg in self.spec.packages.values():
            for dpkg in pkg.requires:
                dependentPackages.append(dpkg)
        listDependentPackages = list(set(dependentPackages))
        packageNames = self.getPackageNames()
        for pkgName in packageNames:
            for objName in listDependentPackages:
                if objName.package == pkgName:
                    dependentPackages.remove(objName)
        dependentPackages = list(set(dependentPackages))
        return dependentPackages

    def getBuildRequiresAllPackages(self):
        dependentPackages = []
        for pkg in self.spec.packages.values():
            for dpkg in pkg.buildrequires:
                dependentPackages.append(dpkg)
        listDependentPackages = list(set(dependentPackages))
        packageNames = self.getPackageNames()
        for pkgName in packageNames:
            for objName in listDependentPackages:
                if objName.package == pkgName:
                    dependentPackages.remove(objName)
        dependentPackages = list(set(dependentPackages))
        return dependentPackages

    def getCheckBuildRequiresAllPackages(self):
        dependentPackages = []
        for pkg in self.spec.packages.values():
            for dpkg in pkg.checkbuildrequires:
                dependentPackages.append(dpkg)
        dependentPackages = list(set(dependentPackages))
        return dependentPackages

    def getRequires(self, pkgName):
        dependentPackages = []
        for pkg in self.spec.packages.values():
            if pkg.name == pkgName:
                for dpkg in pkg.requires:
                    dependentPackages.append(dpkg)
        return dependentPackages

    def getProvides(self, packageName):
        dependentPackages = []
        defaultPkgName = self.spec.packages['default'].name
        pkg = None
        if packageName in self.spec.packages:
            pkg = self.spec.packages.get(packageName)
        if defaultPkgName == packageName:
            pkg = self.spec.packages['default']
        if pkg is not None:
            for dpkg in pkg.provides:
                dependentPackages.append(dpkg.package)
        else:
            print("package not found")
        return dependentPackages

    def getVersion(self):
        pkg = self.spec.packages.get('default')
        return pkg.version

    def getRelease(self):
        pkg = self.spec.packages.get('default')
        return pkg.release

    def getBasePackageName(self):
        pkg = self.spec.packages.get('default')
        return pkg.name

    def getSecurityHardeningOption(self):
        return self.spec.globalSecurityHardening

    def isCheckAvailable(self):
        check = False
        if self.spec.checkMacro is not None:
            check = True
        return check

    def getDefinitions(self):
        return self.spec.defs
コード例 #2
0
class Specutils(object):
    def __init__(self, specfile):
        self.specfile = ""
        self.spec = SpecParser()
        if self.isSpecFile(specfile):
            self.specfile = specfile
            self.spec.parseSpecFile(self.specfile)

    def isSpecFile(self, specfile):
        if os.path.isfile(specfile) and specfile[-5:] == ".spec":
            return True
        return False

    def getSourceNames(self):
        sourceNames = []
        strUtils = StringUtils()
        pkg = self.spec.packages.get('default')
        if pkg is None:
            return None
        for source in pkg.sources:
            sourceName = strUtils.getFileNameFromURL(source)
            sourceNames.append(sourceName)
        return sourceNames

    def getChecksums(self):
        pkg = self.spec.packages.get('default')
        return pkg.checksums

    def getChecksumForSource(self, source):
        pkg = self.spec.packages.get('default')
        return pkg.checksums.get(source)

    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 getPatchNames(self):
        patchNames = []
        strUtils = StringUtils()
        pkg = self.spec.packages.get('default')
        if pkg is None:
            return None
        for patch in pkg.patches:
            patchName = strUtils.getFileNameFromURL(patch)
            patchNames.append(patchName)
        return patchNames

    def getPackageNames(self):
        packageNames = []
        for key in self.spec.packages.keys():
            pkg = self.spec.packages.get(key)
            packageNames.append(pkg.name)
        return packageNames

    def getIsRPMPackage(self, pkgName):
        defaultPkgName = self.spec.packages['default'].name
        if pkgName == defaultPkgName:
            pkgName = "default"
        if pkgName in self.spec.packages.keys():
            pkg = self.spec.packages.get(pkgName)
            if pkg.filesMacro is not None:
                return True
        return False

    def getRPMNames(self):
        rpmNames = []
        for key in self.spec.packages.keys():
            pkg = self.spec.packages.get(key)
            rpmName = pkg.name + "-" + pkg.version + "-" + pkg.release
            rpmNames.append(rpmName)
        return rpmNames

    def getRPMName(self, pkgName):
        rpmName = None
        for key in self.spec.packages.keys():
            pkg = self.spec.packages.get(key)
            if pkg.name == pkgName:
                rpmName = pkg.name + "-" + pkg.version + "-" + pkg.release
                break
        return rpmName

    def getRPMVersion(self, pkgName):
        version = None
        for key in self.spec.packages.keys():
            pkg = self.spec.packages.get(key)
            if pkg.name == pkgName:
                version = pkg.version
                break
        return version

    def getRPMRelease(self, pkgName):
        release = None
        for key in self.spec.packages.keys():
            pkg = self.spec.packages.get(key)
            if pkg.name == pkgName:
                release = pkg.release
                break
        return release

    def getLicense(self):
        licenseInfo = None
        pkg = self.spec.packages.get('default')
        if pkg is None:
            return None
        return pkg.license

    def getURL(self):
        pkg = self.spec.packages.get('default')
        if pkg is None:
            return None
        return pkg.URL

    def getSourceURL(self):
        pkg = self.spec.packages.get('default')
        if pkg is None:
            return None
        if len(pkg.sources) == 0:
            return None
        sourceURL = pkg.sources[0]
        if sourceURL.startswith("http") or sourceURL.startswith("ftp"):
            return sourceURL
        return None

    def getBuildArch(self, pkgName):
        buildArch = platform.machine()
        for key in self.spec.packages.keys():
            pkg = self.spec.packages.get(key)
            if pkg.name == pkgName:
                buildArch = pkg.buildarch
                break
        return buildArch

    def getRequiresAllPackages(self):
        dependentPackages = []
        for key in self.spec.packages.keys():
            pkg = self.spec.packages.get(key)
            for dpkg in pkg.requires:
                dependentPackages.append(dpkg.package)
        dependentPackages = list(set(dependentPackages))
        packageNames = self.getPackageNames()
        for pkgName in packageNames:
            if pkgName in dependentPackages:
                dependentPackages.remove(pkgName)
        return dependentPackages

    def getBuildRequiresAllPackages(self):
        dependentPackages = []
        for key in self.spec.packages.keys():
            pkg = self.spec.packages.get(key)
            for dpkg in pkg.buildrequires:
                dependentPackages.append(dpkg.package)
        dependentPackages = list(set(dependentPackages))
        packageNames = self.getPackageNames()
        for pkgName in packageNames:
            if pkgName in dependentPackages:
                dependentPackages.remove(pkgName)
        return dependentPackages

    def getCheckBuildRequiresAllPackages(self):
        dependentPackages = []
        for key in self.spec.packages.keys():
            pkg = self.spec.packages.get(key)
            for dpkg in pkg.checkbuildrequires:
                dependentPackages.append(dpkg.package)
        dependentPackages = list(set(dependentPackages))
        return dependentPackages

    def getRequires(self, pkgName):
        dependentPackages = []
        for key in self.spec.packages.keys():
            pkg = self.spec.packages.get(key)
            if pkg.name == pkgName:
                for dpkg in pkg.requires:
                    dependentPackages.append(dpkg.package)
        return dependentPackages

    def getBuildRequires(self, pkgName):
        dependentPackages = []
        for key in self.spec.packages.keys():
            pkg = self.spec.packages.get(key)
            if pkg.name == pkgName:
                for dpkg in pkg.buildrequires:
                    dependentPackages.append(dpkg.package)
        return dependentPackages

    def getProvides(self, packageName):
        dependentPackages = []
        defaultPkgName = self.spec.packages['default'].name
        pkg = None
        if self.spec.packages.has_key(packageName):
            pkg = self.spec.packages.get(packageName)
        if defaultPkgName == packageName:
            pkg = self.spec.packages['default']
        if pkg is not None:
            for dpkg in pkg.provides:
                dependentPackages.append(dpkg.package)
        else:
            print "package not found"
        return dependentPackages

    def getVersion(self):
        pkg = self.spec.packages.get('default')
        return pkg.version

    def getRelease(self):
        pkg = self.spec.packages.get('default')
        return pkg.release

    def getBasePackageName(self):
        pkg = self.spec.packages.get('default')
        return pkg.name

    def getSecurityHardeningOption(self):
        return self.spec.globalSecurityHardening

    def isCheckAvailable(self):
        check = False
        if self.spec.checkMacro is not None:
            check = True
        return check

    def getDefinitions(self):
        return self.spec.defs
コード例 #3
0
class Specutils(object):
    
    def __init__(self,specfile):
        self.specfile=""
        self.spec = SpecParser()
        if self.isSpecFile(specfile):
            self.specfile=specfile
            self.spec.parseSpecFile(self.specfile)
    
    def isSpecFile(self,specfile):
        if os.path.isfile(specfile) and specfile[-5:] == ".spec":
            return True
        return False
    
    def getSourceNames(self):
        sourceNames=[]
        strUtils = StringUtils()
        pkg = self.spec.packages.get('default')
        if pkg is None:
            return None
        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 getPatchNames(self):
        patchNames=[]
        strUtils = StringUtils()
        pkg = self.spec.packages.get('default')
        if pkg is None:
            return None
        for patch in pkg.patches:
            patchName=strUtils.getFileNameFromURL(patch)
            patchNames.append(patchName)
        return patchNames
    
    def getPackageNames(self):
        packageNames=[]
        for key in self.spec.packages.keys():
            pkg = self.spec.packages.get(key)
            packageNames.append(pkg.name)
        return packageNames
    
    def getRPMNames(self):
        rpmNames=[]
        for key in self.spec.packages.keys():
            pkg = self.spec.packages.get(key)
            rpmName=pkg.name+"-"+pkg.version+"-"+pkg.release
            rpmNames.append(rpmName)
        return rpmNames

    def getRPMName(self, pkgName):
        rpmName=None
        for key in self.spec.packages.keys():
            pkg = self.spec.packages.get(key)
            if pkg.name == pkgName:
                rpmName=pkg.name+"-"+pkg.version+"-"+pkg.release
                break
        return rpmName

    def getRPMVersion(self, pkgName):
        version=None
        for key in self.spec.packages.keys():
            pkg = self.spec.packages.get(key)
            if pkg.name == pkgName:
                version=pkg.version
                break
        return version

    def getRPMRelease(self, pkgName):
        release=None
        for key in self.spec.packages.keys():
            pkg = self.spec.packages.get(key)
            if pkg.name == pkgName:
                release=pkg.release
                break
        return release

    def getLicense(self, pkgName):
        licenseInfo=None
        for key in self.spec.packages.keys():
            pkg = self.spec.packages.get(key)
            if pkg.name == pkgName:
                licenseInfo=pkg.license
                break
        return licenseInfo

    def getURL(self, pkgName):
        url=None
        for key in self.spec.packages.keys():
            pkg = self.spec.packages.get(key)
            if pkg.name == pkgName:
                url=pkg.URL
                break
        return url

    def getBuildArch(self, pkgName):
        buildArch="x86_64"
        for key in self.spec.packages.keys():
            pkg = self.spec.packages.get(key)
            if pkg.name == pkgName:
                buildArch=pkg.buildarch
                break
        return buildArch
    
    def getRequiresAllPackages(self):
        depedentPackages=[]
        for key in self.spec.packages.keys():
            pkg = self.spec.packages.get(key)
            for dpkg in pkg.requires:
                depedentPackages.append(dpkg.package)
        depedentPackages=list(set(depedentPackages))
        packageNames=self.getPackageNames()
        for pkgName in packageNames:
            if pkgName in depedentPackages:
                depedentPackages.remove(pkgName)
        return depedentPackages
        
    def getRequiresAllPackagesForGiven(self, pkgName):
        dependentPackages=[]
        for key in self.spec.packages.keys():
            pkg = self.spec.packages.get(key)
            if pkg.name == pkgName:
                for dpkg in pkg.requires:
                    dependentPackages.append(dpkg.package)
        #if (pkgName == "mono-extras"):
	#    print "4given packages:", self.spec.packages
        #    print "4given dep packages: ", dependentPackages
        return dependentPackages
    
    def getBuildRequiresAllPackages(self):
	
        depedentPackages=[]
        for key in self.spec.packages.keys():
            pkg = self.spec.packages.get(key)
            #if(pkg.name == "mono"):
            	#print "build dendent packages len 4 mono-devel:", len(pkg.buildrequires)
            for dpkg in pkg.buildrequires:
                depedentPackages.append(dpkg.package)
        depedentPackages=list(set(depedentPackages))
        packageNames=self.getPackageNames()
        for pkgName in packageNames:
            if pkgName in depedentPackages:
                depedentPackages.remove(pkgName)
        return depedentPackages
        
    
    def getRequires(self,pkgName):
        dependentPackages=[]
        #if( pkgName == "mono-devel"):
            #print "packages:", self.spec.packages
        for key in self.spec.packages.keys():
            pkg = self.spec.packages.get(key)
            if pkg.name == pkgName:
            	#if( pkgName == "mono-devel"):
            	    #print "dendent packages len 4 mono-devel:", len(pkg.requires), pkg.requires[0].package
                for dpkg in pkg.requires:
                    dependentPackages.append(dpkg.package)
        return dependentPackages

    def getBuildRequires(self,pkgName):
        dependentPackages=[]
        for key in self.spec.packages.keys():
            pkg = self.spec.packages.get(key)
            if pkg.name == pkgName:
            	#if( pkgName == "mono-devel"):
            	    #print "build dendent packages len 4 mono-devel:", len(pkg.buildrequires), pkg.buildrequires[0].package
                for dpkg in pkg.buildrequires:
                    dependentPackages.append(dpkg.package)
        return dependentPackages
        
    def getProvides(self,packageName):
        depedentPackages=[]
        defaultPkgName=self.spec.packages['default'].name
        pkg = None
        if self.spec.packages.has_key(packageName):
            pkg = self.spec.packages.get(packageName)
        if defaultPkgName == packageName:
            pkg=self.spec.packages['default']
        if pkg is not None:
            for dpkg in pkg.provides:
                depedentPackages.append(dpkg.package)
        else:
            print "package not found"
        return depedentPackages
    
    def getVersion(self):
        pkg = self.spec.packages.get('default')
        return pkg.version
    
    def getRelease(self):
        pkg = self.spec.packages.get('default')
        return pkg.release
    
    def getBasePackageName(self):
        pkg = self.spec.packages.get('default')
        return pkg.name
        
    def getSecurityHardeningOption(self):
        return self.spec.globalSecurityHardening
class Specutils(object):
    
    def __init__(self,specfile):
        self.specfile=""
        self.spec = SpecParser()
        if self.isSpecFile(specfile):
            self.specfile=specfile
            self.spec.parseSpecFile(self.specfile)
    
    def isSpecFile(self,specfile):
        if os.path.isfile(specfile) and specfile[-5:] == ".spec":
            return True
        return False
    
    def getSourceNames(self):
        sourceNames=[]
        strUtils = StringUtils()
        pkg = self.spec.packages.get('default')
        if pkg is None:
            return None
        for source in pkg.sources:
            sourceName=strUtils.getFileNameFromURL(source)
            sourceNames.append(sourceName)
        return sourceNames
    
    def getChecksums(self):
        pkg = self.spec.packages.get('default')
        return pkg.checksums
    
    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 getPatchNames(self):
        patchNames=[]
        strUtils = StringUtils()
        pkg = self.spec.packages.get('default')
        if pkg is None:
            return None
        for patch in pkg.patches:
            patchName=strUtils.getFileNameFromURL(patch)
            patchNames.append(patchName)
        return patchNames
    
    def getPackageNames(self):
        packageNames=[]
        for key in self.spec.packages.keys():
            pkg = self.spec.packages.get(key)
            packageNames.append(pkg.name)
        return packageNames
    
    def getRPMNames(self):
        rpmNames=[]
        for key in self.spec.packages.keys():
            pkg = self.spec.packages.get(key)
            rpmName=pkg.name+"-"+pkg.version+"-"+pkg.release
            rpmNames.append(rpmName)
        return rpmNames

    def getRPMName(self, pkgName):
        rpmName=None
        for key in self.spec.packages.keys():
            pkg = self.spec.packages.get(key)
            if pkg.name == pkgName:
                rpmName=pkg.name+"-"+pkg.version+"-"+pkg.release
                break
        return rpmName

    def getRPMVersion(self, pkgName):
        version=None
        for key in self.spec.packages.keys():
            pkg = self.spec.packages.get(key)
            if pkg.name == pkgName:
                version=pkg.version
                break
        return version

    def getRPMRelease(self, pkgName):
        release=None
        for key in self.spec.packages.keys():
            pkg = self.spec.packages.get(key)
            if pkg.name == pkgName:
                release=pkg.release
                break
        return release

    def getLicense(self, pkgName):
        licenseInfo=None
        for key in self.spec.packages.keys():
            pkg = self.spec.packages.get(key)
            if pkg.name == pkgName:
                licenseInfo=pkg.license
                break
        return licenseInfo

    def getURL(self, pkgName):
        url=None
        for key in self.spec.packages.keys():
            pkg = self.spec.packages.get(key)
            if pkg.name == pkgName:
                url=pkg.URL
                break
        return url

    def getBuildArch(self, pkgName):
        buildArch="x86_64"
        for key in self.spec.packages.keys():
            pkg = self.spec.packages.get(key)
            if pkg.name == pkgName:
                buildArch=pkg.buildarch
                break
        return buildArch
    
    def getRequiresAllPackages(self):
        depedentPackages=[]
        for key in self.spec.packages.keys():
            pkg = self.spec.packages.get(key)
            for dpkg in pkg.requires:
                depedentPackages.append(dpkg.package)
        depedentPackages=list(set(depedentPackages))
        packageNames=self.getPackageNames()
        for pkgName in packageNames:
            if pkgName in depedentPackages:
                depedentPackages.remove(pkgName)
        return depedentPackages
    
    def getBuildRequiresAllPackages(self):
        depedentPackages=[]
        for key in self.spec.packages.keys():
            pkg = self.spec.packages.get(key)
            for dpkg in pkg.buildrequires:
                depedentPackages.append(dpkg.package)
        depedentPackages=list(set(depedentPackages))
        packageNames=self.getPackageNames()
        for pkgName in packageNames:
            if pkgName in depedentPackages:
                depedentPackages.remove(pkgName)
        return depedentPackages
    
    
    def getRequires(self,pkgName):
        dependentPackages=[]
        for key in self.spec.packages.keys():
            pkg = self.spec.packages.get(key)
            if pkg.name == pkgName:
                for dpkg in pkg.requires:
                    dependentPackages.append(dpkg.package)
        return dependentPackages

    def getBuildRequires(self,pkgName):
        dependentPackages=[]
        for key in self.spec.packages.keys():
            pkg = self.spec.packages.get(key)
            if pkg.name == pkgName:
                for dpkg in pkg.buildrequires:
                    dependentPackages.append(dpkg.package)
        return dependentPackages
        
    def getProvides(self,packageName):
        depedentPackages=[]
        defaultPkgName=self.spec.packages['default'].name
        pkg = None
        if self.spec.packages.has_key(packageName):
            pkg = self.spec.packages.get(packageName)
        if defaultPkgName == packageName:
            pkg=self.spec.packages['default']
        if pkg is not None:
            for dpkg in pkg.provides:
                depedentPackages.append(dpkg.package)
        else:
            print "package not found"
        return depedentPackages
    
    def getVersion(self):
        pkg = self.spec.packages.get('default')
        return pkg.version
    
    def getRelease(self):
        pkg = self.spec.packages.get('default')
        return pkg.release
    
    def getBasePackageName(self):
        pkg = self.spec.packages.get('default')
        return pkg.name
        
    def getSecurityHardeningOption(self):
        return self.spec.globalSecurityHardening
コード例 #5
0
ファイル: SpecUtils.py プロジェクト: TiejunChina/photon
class Specutils(object):

    def __init__(self, specfile):
        self.specfile = ""
        self.spec = SpecParser()
        if Specutils._isSpecFile(specfile):
            self.specfile = specfile
            self.spec.parseSpecFile(self.specfile)

    @staticmethod
    def _isSpecFile(specfile):
        if os.path.isfile(specfile) and specfile.endswith(".spec"):
            return True
        return False

    def getSourceNames(self):
        sourceNames = []
        strUtils = StringUtils()
        pkg = self.spec.packages.get('default')
        if pkg is None:
            return None
        for source in pkg.sources:
            sourceName = strUtils.getFileNameFromURL(source)
            sourceNames.append(sourceName)
        return sourceNames

    def getChecksums(self):
        pkg = self.spec.packages.get('default')
        return pkg.checksums

    def getPatchNames(self):
        patchNames = []
        strUtils = StringUtils()
        pkg = self.spec.packages.get('default')
        if pkg is None:
            return None
        for patch in pkg.patches:
            patchName = strUtils.getFileNameFromURL(patch)
            patchNames.append(patchName)
        return patchNames

    def getPackageNames(self):
        packageNames = []
        for pkg in self.spec.packages.values():
            packageNames.append(pkg.name)
        return packageNames

    def getIsRPMPackage(self, pkgName):
        defaultPkgName = self.spec.packages['default'].name
        if pkgName == defaultPkgName:
            pkgName = "default"
        if pkgName in self.spec.packages.keys():
            pkg = self.spec.packages.get(pkgName)
            if pkg.filesMacro is not None:
                return True
        return False

    def getRPMNames(self):
        rpmNames = []
        for pkg in self.spec.packages.values():
            rpmName = pkg.name + "-" + pkg.version + "-" + pkg.release
            rpmNames.append(rpmName)
        return rpmNames

    def getLicense(self):
        pkg = self.spec.packages.get('default')
        if pkg is None:
            return None
        return pkg.license

    def getURL(self):
        pkg = self.spec.packages.get('default')
        if pkg is None:
            return None
        return pkg.URL

    def getSourceURL(self):
        pkg = self.spec.packages.get('default')
        if pkg is None:
            return None
        if not pkg.sources:
            return None
        sourceURL = pkg.sources[0]
        if sourceURL.startswith("http") or sourceURL.startswith("ftp"):
            return sourceURL
        return None

    def getRequiresAllPackages(self):
        dependentPackages = []
        specParseObjDependentPackages=[]
        for pkg in self.spec.packages.values():
            for dpkg in pkg.requires:
                dependentPackages.append(dpkg.package)
                specParseObjDependentPackages.append(dpkg)
        dependentPackages = list(set(dependentPackages))
        specParseObjDependentPackages = list(set(specParseObjDependentPackages))
        specParseObjDependentPackagesTemp = specParseObjDependentPackages[:]
        packageNames = self.getPackageNames()
        for pkgName in packageNames:
            if pkgName in dependentPackages:
                dependentPackages.remove(pkgName)
            for objName in specParseObjDependentPackagesTemp:
                if objName.package == pkgName:
                        specParseObjDependentPackages.remove(objName)
        return dependentPackages,specParseObjDependentPackages

    def getBuildRequiresAllPackages(self):
        dependentPackages = []
        specParseObjDependentPackages=[]
        for pkg in self.spec.packages.values():
            for dpkg in pkg.buildrequires:
                dependentPackages.append(dpkg.package)
                specParseObjDependentPackages.append(dpkg)
        dependentPackages = list(set(dependentPackages))
        specParseObjDependentPackages = list(set(specParseObjDependentPackages))
        specParseObjDependentPackagesTemp = specParseObjDependentPackages[:]
        packageNames = self.getPackageNames()
        for pkgName in packageNames:
            if pkgName in dependentPackages:
                dependentPackages.remove(pkgName)
            for objName in specParseObjDependentPackagesTemp:
                if objName.package == pkgName:
                        specParseObjDependentPackages.remove(objName)
        return dependentPackages,specParseObjDependentPackages

    def getCheckBuildRequiresAllPackages(self):
        dependentPackages = []
        specParseObjDependentPackages=[]
        for pkg in self.spec.packages.values():
            for dpkg in pkg.checkbuildrequires:
                dependentPackages.append(dpkg.package)
                specParseObjDependentPackages.append(dpkg)
        dependentPackages = list(set(dependentPackages))
        specParseObjDependentPackages = list(set(specParseObjDependentPackages))
        return dependentPackages,specParseObjDependentPackages

    def getRequires(self, pkgName):
        dependentPackages = []
        for pkg in self.spec.packages.values():
            if pkg.name == pkgName:
                for dpkg in pkg.requires:
                    dependentPackages.append(dpkg.package)
        return dependentPackages

    def getProvides(self, packageName):
        dependentPackages = []
        defaultPkgName = self.spec.packages['default'].name
        pkg = None
        if packageName in self.spec.packages:
            pkg = self.spec.packages.get(packageName)
        if defaultPkgName == packageName:
            pkg = self.spec.packages['default']
        if pkg is not None:
            for dpkg in pkg.provides:
                dependentPackages.append(dpkg.package)
        else:
            print("package not found")
        return dependentPackages

    def getVersion(self):
        pkg = self.spec.packages.get('default')
        return pkg.version

    def getRelease(self):
        pkg = self.spec.packages.get('default')
        return pkg.release

    def getBasePackageName(self):
        pkg = self.spec.packages.get('default')
        return pkg.name

    def getSecurityHardeningOption(self):
        return self.spec.globalSecurityHardening

    def isCheckAvailable(self):
        check = False
        if self.spec.checkMacro is not None:
            check = True
        return check

    def getDefinitions(self):
        return self.spec.defs