2 def __init__(self, name, module, version, export):
3 self.name, self.module = name, module
4 self.version, self.export = version, export
6 def __eq__(self, other):
7 if not isinstance(other, Symbol):
10 # Symbols are resolved to modules by depmod at installation/
11 # upgrade time, not compile time, so moving a symbol between
12 # modules is not an ABI change. Compare everything else.
13 if self.name != other.name: return False
14 if self.version != other.version: return False
15 if self.export != other.export: return False
19 def __ne__(self, other):
20 ret = self.__eq__(other)
21 if ret is NotImplemented:
26 def __init__(self, file=None):
32 version, name, module, export = line.strip().split()
33 self[name] = Symbol(name, module, version, export)
35 def write(self, file):
36 symbols = self.values()
37 symbols.sort(key=lambda i: i.name)
39 file.write("%s %s %s %s\n" % (s.version, s.name, s.module, s.export))