created InstalledPkg class to access already installed packages.

git-svn-id: svn+ssh://rpmlint.zarb.org/home/projects/rpmlint/svn/trunk@419 9bc8b190-ac0f-0410-8968-dc7d1f502856
This commit is contained in:
Frédéric Lepied 2001-06-06 16:18:31 +00:00
parent c69e0cc048
commit 422de13bb6
1 changed files with 44 additions and 5 deletions

49
Pkg.py
View File

@ -50,9 +50,9 @@ def grep(regex, filename):
return ret
class Pkg:
file_regex=re.compile("\.([^:]+):\s+(.*)")
file_regex=re.compile("(?:\.)?([^:]+):\s+(.*)")
def __init__(self, filename, dirname, header=None):
def __init__(self, filename, dirname, header=None, is_source=0):
self.filename=filename
self.extracted=0
self.dirname=dirname
@ -66,7 +66,7 @@ class Pkg:
if header:
self.header=header
self.is_source=0
self.is_source=is_source
else:
# Create a package object from the file name
fd=os.open(filename, os.O_RDONLY)
@ -103,6 +103,9 @@ class Pkg:
cmd=commands.getstatusoutput(str)
self.extracted=1
def checkSignature(self):
return commands.getstatusoutput("rpm -K " + self.filename)
# return the array of info returned by the file command on each file
def getFilesInfo(self):
if self.file_info == None:
@ -282,11 +285,47 @@ class Pkg:
flags=[flags]
for loop in range(len(versions)):
self._provides.append((names[loop], versions[loop], flags[loop]))
# Class to provide an API to an installed package
class InstalledPkg(Pkg):
def __init__(self, name):
db = rpm.opendb()
tab = db.findbyname(name)
if not tab:
del db
raise KeyError, name
Pkg.__init__(self, name, '/', db[tab[0]])
del db
self.extracted = 1
def cleanup(self):
pass
def checkSignature(self):
return (0, 'fake: pgp md5 OK')
# return the array of info returned by the file command on each file
def getFilesInfo(self):
if self.file_info == None:
self.file_info=[]
cmd='file'
for f in self.files().keys():
cmd=cmd + ' ' + f
lines=commands.getoutput(cmd)
#print lines
lines=string.split(lines, "\n")
for l in lines:
#print l
res=Pkg.file_regex.search(l)
if res:
self.file_info.append([res.group(1), res.group(2)])
#print self.file_info
return self.file_info
if __name__ == '__main__':
import sys
for p in sys.argv[1:]:
pkg=Pkg(sys.argv[1], "/tmp")
pkg=Pkg(sys.argv[1])
print "Requires:", pkg.requires()
print "Prereq:", pkg.prereq()
print "Conflicts:", pkg.conflicts()