2820c61a |
from SpecParser import SpecParser
from StringUtils import StringUtils |
0f1fdc4b |
import platform |
2820c61a |
import os
class Specutils(object): |
5062126c |
|
2820c61a |
def __init__(self,specfile):
self.specfile=""
self.spec = SpecParser()
if self.isSpecFile(specfile):
self.specfile=specfile
self.spec.parseSpecFile(self.specfile) |
5062126c |
|
2820c61a |
def isSpecFile(self,specfile):
if os.path.isfile(specfile) and specfile[-5:] == ".spec":
return True
return False |
5062126c |
|
2820c61a |
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 |
5062126c |
|
3cc43c92 |
def getChecksums(self):
pkg = self.spec.packages.get('default')
return pkg.checksums |
7253ce7d |
def getChecksumForSource(self,source):
pkg = self.spec.packages.get('default')
return pkg.checksums.get(source) |
5062126c |
|
920a9773 |
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
|
2820c61a |
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 |
5062126c |
|
2820c61a |
def getPackageNames(self):
packageNames=[]
for key in self.spec.packages.keys():
pkg = self.spec.packages.get(key)
packageNames.append(pkg.name)
return packageNames |
5062126c |
|
adf248d5 |
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
|
2820c61a |
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
|
5062126c |
def getLicense(self): |
2820c61a |
licenseInfo=None |
5062126c |
pkg = self.spec.packages.get('default')
if pkg is None:
return None
return pkg.license |
2820c61a |
|
5062126c |
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 |
920a9773 |
|
2820c61a |
def getBuildArch(self, pkgName): |
0f1fdc4b |
buildArch=platform.machine() |
2820c61a |
for key in self.spec.packages.keys():
pkg = self.spec.packages.get(key)
if pkg.name == pkgName:
buildArch=pkg.buildarch
break
return buildArch |
5062126c |
|
2820c61a |
def getRequiresAllPackages(self): |
5f40784b |
dependentPackages=[] |
2820c61a |
for key in self.spec.packages.keys():
pkg = self.spec.packages.get(key)
for dpkg in pkg.requires: |
5f40784b |
dependentPackages.append(dpkg.package)
dependentPackages=list(set(dependentPackages)) |
2820c61a |
packageNames=self.getPackageNames()
for pkgName in packageNames: |
5f40784b |
if pkgName in dependentPackages:
dependentPackages.remove(pkgName)
return dependentPackages |
5062126c |
|
2820c61a |
def getBuildRequiresAllPackages(self): |
5f40784b |
dependentPackages=[] |
2820c61a |
for key in self.spec.packages.keys():
pkg = self.spec.packages.get(key)
for dpkg in pkg.buildrequires: |
5f40784b |
dependentPackages.append(dpkg.package)
dependentPackages=list(set(dependentPackages)) |
2820c61a |
packageNames=self.getPackageNames()
for pkgName in packageNames: |
5f40784b |
if pkgName in dependentPackages:
dependentPackages.remove(pkgName)
return dependentPackages |
5062126c |
|
5f40784b |
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 |
5062126c |
|
2820c61a |
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 |
5062126c |
|
2820c61a |
def getProvides(self,packageName): |
5f40784b |
dependentPackages=[] |
2820c61a |
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: |
5f40784b |
dependentPackages.append(dpkg.package) |
2820c61a |
else:
print "package not found" |
5f40784b |
return dependentPackages |
5062126c |
|
2820c61a |
def getVersion(self):
pkg = self.spec.packages.get('default')
return pkg.version |
5062126c |
|
2820c61a |
def getRelease(self):
pkg = self.spec.packages.get('default')
return pkg.release |
5062126c |
|
5e29a499 |
def getBasePackageName(self):
pkg = self.spec.packages.get('default')
return pkg.name |
5062126c |
|
cb4e8710 |
def getSecurityHardeningOption(self):
return self.spec.globalSecurityHardening
|
b5e09fac |
def isCheckAvailable(self):
check=False
if self.spec.checkMacro is not None:
check=True
return check
|
fba234bc |
def getDefinitions(self):
return self.spec.defs
|
2820c61a |
def main():
spec = Specutils("/workspace1/myrepos/photon/SPECS/docker/docker.spec")
print "packages",spec.getPackageNames()
print "packages",spec.getRPMNames()
print "sources",spec.getSourceNames() |
5062126c |
print "patches",spec.getPatchNames() |
2820c61a |
print "requires",spec.getRequires('libltdl-devel')
print "requires",spec.getRequires('libtool') |
5062126c |
print "provides",spec.getProvides('libtool') |
2820c61a |
print "all-requires",spec.getRequiresAllPackages()
print "all-build-requires",spec.getBuildRequiresAllPackages() |
5062126c |
|
2820c61a |
if __name__ == '__main__':
main() |
5062126c |
|