diff options
author | Erik Troan <ewt@redhat.com> | 1999-04-29 19:08:29 +0000 |
---|---|---|
committer | Erik Troan <ewt@redhat.com> | 1999-04-29 19:08:29 +0000 |
commit | a30d228c56e01421092ae27441b8b8cb360fc603 (patch) | |
tree | 023c2e2dcfc2266ae358472be7e4314b2ddbcb08 /comps.py | |
parent | 16bd3e5c6b4c4c5e07e1298b9a888a7f4019c53b (diff) | |
download | anaconda-a30d228c56e01421092ae27441b8b8cb360fc603.tar.gz anaconda-a30d228c56e01421092ae27441b8b8cb360fc603.tar.xz anaconda-a30d228c56e01421092ae27441b8b8cb360fc603.zip |
*** empty log message ***
Diffstat (limited to 'comps.py')
-rw-r--r-- | comps.py | 95 |
1 files changed, 95 insertions, 0 deletions
diff --git a/comps.py b/comps.py new file mode 100644 index 000000000..7a58d94dd --- /dev/null +++ b/comps.py @@ -0,0 +1,95 @@ +import rpm +from string import * + +class Package: + + def __init__(self, header): + self.h = header + self.name = header[rpm.RPMTAG_NAME] + +class Component: + + def __len__(self): + return len(self.items) + + def __getitem__(self, key): + return self.items[key] + + def addPackage(self, package): + self.items.append(package) + + def addInclude(self, component): + self.includes.append(component) + + def __init__(self, name, selected, hidden = 0): + self.name = name + self.hidden = hidden + self.selected = selected + self.items = [] + self.includes = [] + +class ComponentSet: + def readCompsFile(self, arch, filename): + file = open(filename, "r") + lines = file.readlines() + file.close() + top = lines[0] + lines = lines[1:] + if (top != "2\n"): + raise TypeError, "comp file version 2 expected" + + comp = None + self.comps = [] + self.compsDict = {} + for l in lines: + l = l[:len(l) - 1] + if (not l): continue + + if (find(l, ":") > -1): + (archList, l) = split(l, ":", 1) + while (l[0] == " "): l = l[1:] + archList = split(archList) + skip = 1 + for n in archList: + if (n == arch): + skip = 0 + break + if (skip): continue + + if (comp == None): + (default, l) = split(l, None, 1) + hidden = 0 + if (l[0:6] == "--hide"): + hidden = 1 + (foo, l) = split(l, None, 1) + + print "item is '%s'" % (l,) + comp = Component(l, default, hidden) + elif (l == "end"): + self.comps.append(comp) + self.compsDict[comp.name] = comp + comp = None + else: + + if (l[0] == "@"): + (at, l) = split(l, None, 1) + comp.addInclude(self.compsDict[l]) + else: + comp.addPackage(l) + + def __repr__(self): + s = "" + for n in self.comps: + s = s + "{ " + n.name + " ["; + for include in n.includes: + s = s + " @" + include.name + + for package in n: + s = s + " " + package + s = s + " ] } " + + return s + + def __init__(self, arch, file): + self.list = [] + self.readCompsFile(arch, file) |