class ConfigXml(UserDict): # Implementation of the config.xml parser. xmldoc = None depsFactory = None dist = None nameRe = re.compile(r'^[a-z0-9][a-z0-9+-\.]+$') def __init__(self, configfile): UserDict.__init__(self) XmlTools().init(configfile) self.xmldoc = XmlTools().getXmlDoc() self.depsFactory = DependsFactory(self.xmldoc) #print self.xmldoc.findall("class") self.__validate__() def __validate__(self): XmlTools().validate() if not self.nameRe.match(self['name']): raise OpkgSyntaxException('Incorrect package name syntax (pattern: [a-z0-9][a-z0-9+-\.]+)') def __getitem__(self, key): if key == 'version': return self.xmldoc.find('changelog/versionEntry').get('version').strip() else: return self.xmldoc.findtext('/%s' % key).strip() def getAuthors(self, cat=None): al = [ Author(e) for e in self.xmldoc.findall("authors/author")] if cat: al = [ a for a in al if a['cat'] == cat ] return al def getDeps(self, relation, part, arch, dist): return self.depsFactory.getDeps(relation, part, arch, dist) def getChangelog(self): return [ ChangelogVEntry(e) for e in self.xmldoc.findall('/changelog/versionEntry') ] def getGlobalDistFilters(self): (dists, arch) = self.depsFactory.getFilters(self.xmldoc.find('/filters')) return dists def getNbArchFilters(self): (dists, arch) = self.depsFactory.getFilters(self.xmldoc.find('/filters')) l = self.xmldoc.findall('serverDeps/requires/filters/arch') return len(l) def getGlobalArchFilters(self): (dists, arch) = self.depsFactory.getFilters(self.xmldoc.find('/filters')) for a in arch: Logger().debug ("-> Arch " + a) for d in dists: Logger().debug ("-> Dist " + d['name']) l = self.xmldoc.findall('serverDeps/requires/filters/arch') Logger().info("Number of arch filters: %d" % len(l)) return arch
class ConfigXml(UserDict): xmldoc = None depsFactory = None dist = None nameRe = re.compile(r'^[a-z0-9][a-z0-9+-\.]+$') def __init__(self, configfile): UserDict.__init__(self) XmlTools().init(configfile) self.xmldoc = XmlTools().getXmlDoc() self.depsFactory = DependsFactory(self.xmldoc) self.__validate__() def __validate__(self): XmlTools().validate() if not self.nameRe.match(self['name']): raise OpkgSyntaxException( 'Incorrect package name syntax (pattern: [a-z0-9][a-z0-9+-\.]+)' ) def __getitem__(self, key): if key == 'version': return self.xmldoc.find('changelog/versionEntry').get( 'version').strip() else: return self.xmldoc.findtext('/%s' % key).strip() def getAuthors(self, cat=None): al = [Author(e) for e in self.xmldoc.findall("authors/author")] if cat: al = [a for a in al if a['cat'] == cat] return al def getDeps(self, relation, part, arch, dist): return self.depsFactory.getDeps(relation, part, arch, dist) def getChangelog(self): return [ ChangelogVEntry(e) for e in self.xmldoc.findall('/changelog/versionEntry') ] def getGlobalDistFilters(self): (dists, arch) = self.depsFactory.getFilters(self.xmldoc.find('/filters')) return dists def getGlobalArchFilters(self): (dists, arch) = self.depsFactory.getFilters(self.xmldoc.find('/filters')) return arch