upload tizen1.0 source
[kernel/linux-2.6.36.git] / debian / lib / python / debian_linux / abi.py
1 class Symbol(object):
2     def __init__(self, name, module, version, export):
3         self.name, self.module = name, module
4         self.version, self.export = version, export
5
6     def __eq__(self, other):
7         if not isinstance(other, Symbol):
8             return NotImplemented
9
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
16
17         return True
18
19     def __ne__(self, other):
20         ret = self.__eq__(other)
21         if ret is NotImplemented:
22             return ret
23         return not ret
24
25 class Symbols(dict):
26     def __init__(self, file=None):
27         if file:
28             self.read(file)
29
30     def read(self, file):
31         for line in file:
32             version, name, module, export = line.strip().split()
33             self[name] = Symbol(name, module, version, export)
34
35     def write(self, file):
36         symbols = self.values()
37         symbols.sort(key=lambda i: i.name)
38         for s in symbols:
39             file.write("%s %s %s %s\n" % (s.version, s.name, s.module, s.export))