diff options
author | Bastian Blank <waldi@debian.org> | 2009-07-17 14:01:24 +0000 |
---|---|---|
committer | Bastian Blank <waldi@debian.org> | 2009-07-17 14:01:24 +0000 |
commit | 9e6796a8c676a3883f57e5a627d64de78e5f5a63 (patch) | |
tree | 22b49f070891450efe607df38f5ca2c2794dd3b4 /debian/lib/python/debian_linux/abi.py | |
parent | 1e307225a1d03d22c2c81368bd6696c27ad77882 (diff) | |
download | kernel_replicant_linux-9e6796a8c676a3883f57e5a627d64de78e5f5a63.tar.gz kernel_replicant_linux-9e6796a8c676a3883f57e5a627d64de78e5f5a63.tar.bz2 kernel_replicant_linux-9e6796a8c676a3883f57e5a627d64de78e5f5a63.zip |
* debian/bin/buildcheck.py: Rewrite complete symbol check.
* debian/lib/python/debian_linux/abi.py: Cleanup.
svn path=/dists/trunk/linux-2.6/; revision=13956
Diffstat (limited to 'debian/lib/python/debian_linux/abi.py')
-rw-r--r-- | debian/lib/python/debian_linux/abi.py | 70 |
1 files changed, 28 insertions, 42 deletions
diff --git a/debian/lib/python/debian_linux/abi.py b/debian/lib/python/debian_linux/abi.py index d04ad450d4d5..61e8a666c7a9 100644 --- a/debian/lib/python/debian_linux/abi.py +++ b/debian/lib/python/debian_linux/abi.py @@ -1,51 +1,37 @@ -class symbols(dict): - def __init__(self, filename = None): - self.modules = {} - if filename is not None: - self.read(file(filename)) +class Symbol(object): + def __init__(self, name, module, version, export): + self.name, self.module = name, module + self.version, self.export = version, export - def cmp(self, new): - symbols_ref = set(self.keys()) - symbols_new = set(new.keys()) + def __eq__(self, other): + if not isinstance(other, Symbol): + return NotImplemented - symbols_add = {} - symbols_remove = {} + if self.name != other.name: return False + if self.module != other.module: return False + if self.version != other.version: return False + if self.export != other.export: return False - symbols_change = {} + return True - for symbol in symbols_new - symbols_ref: - symbols_add[symbol] = new[symbol] + def __ne__(self, other): + ret = self.__eq__(other) + if ret is NotImplemented: + return ret + return not ret - for symbol in symbols_ref.intersection(symbols_new): - symbol_ref = self[symbol] - symbol_new = new[symbol] - - ent = {'ref': symbol_ref, 'new': symbol_new, 'changes': {}} - for i in ('module', 'version', 'export'): - if symbol_ref[i] != symbol_new[i]: - ent['changes'][i] = {'ref': symbol_ref, 'new': symbol_new} - if ent['changes']: - symbols_change[symbol] = ent - - for symbol in symbols_ref - symbols_new: - symbols_remove[symbol] = self[symbol] - - return symbols_add, symbols_change, symbols_remove +class Symbols(dict): + def __init__(self, file=None): + if file: + self.read(file) def read(self, file): - for line in file.readlines(): - version, symbol, module, export = line.strip().split() - - if self.has_key(symbol): - pass - symbols = self.modules.get(module, set()) - symbols.add(symbol) - self.modules[module] = symbols - self[symbol] = {'symbol': symbol, 'module': module, 'version': version, 'export': export} + for line in file: + version, name, module, export = line.strip().split() + self[name] = Symbol(name, module, version, export) def write(self, file): - symbols = self.items() - symbols.sort() - for symbol, info in symbols: - file.write("%(version)s %(symbol)s %(module)s %(export)s\n" % info) - + symbols = self.values() + symbols.sort(key=lambda i: i.name) + for s in symbols: + file.write("%s %s %s %s\n" % (s.version, s.name, s.module, s.export)) |