aboutsummaryrefslogtreecommitdiffstats
path: root/debian/bin/abicheck.py
diff options
context:
space:
mode:
Diffstat (limited to 'debian/bin/abicheck.py')
-rwxr-xr-xdebian/bin/abicheck.py101
1 files changed, 0 insertions, 101 deletions
diff --git a/debian/bin/abicheck.py b/debian/bin/abicheck.py
deleted file mode 100755
index 3dea267cb091..000000000000
--- a/debian/bin/abicheck.py
+++ /dev/null
@@ -1,101 +0,0 @@
-#!/usr/bin/env python
-
-import sys
-sys.path.append('debian/lib/python')
-
-from debian_linux.abi import *
-from debian_linux.config import ConfigCoreDump
-from debian_linux.debian import *
-
-class checker(object):
- def __init__(self, dir, arch, featureset, flavour):
- self.arch, self.featureset, self.flavour = arch, featureset, flavour
- self.config = ConfigCoreDump(fp = file("debian/config.defines.dump"))
- self.filename_new = "%s/Module.symvers" % dir
-
- changelog = Changelog(version = VersionLinux)[0]
- version = changelog.version.linux_version
- abiname = self.config['abi',]['abiname']
- self.filename_ref = "debian/abi/%s-%s/%s_%s_%s" % (version, abiname, arch, featureset, flavour)
-
- def __call__(self, out):
- ret = 0
-
- new = symbols(self.filename_new)
- try:
- ref = symbols(self.filename_ref)
- except IOError:
- out.write("Can't read ABI reference. ABI not checked! Continuing.\n")
- return 0
-
- add_info, change_info, remove_info = ref.cmp(new)
- add = set(add_info.keys())
- change = set(change_info.keys())
- remove = set(remove_info.keys())
- ignore = self._ignore(add_info, change_info, remove_info)
-
- add_effective = add - ignore
- change_effective = change - ignore
- remove_effective = remove - ignore
-
- if change_effective or remove_effective:
- out.write("ABI has changed! Refusing to continue.\n")
- ret = 1
- elif change or remove:
- out.write("ABI has changed but all changes have been ignored. Continuing.\n")
- elif add_effective:
- out.write("New symbols have been added. Continuing.\n")
- elif add:
- out.write("New symbols have been added but have been ignored. Continuing.\n")
- else:
- out.write("No ABI changes.\n")
- if add:
- out.write("\nAdded symbols:\n")
- t = list(add)
- t.sort()
- for symbol in t:
- info = []
- if symbol in ignore:
- info.append("ignored")
- for i in ('module', 'version', 'export'):
- info.append("%s: %s" % (i, add_info[symbol][i]))
- out.write("%-48s %s\n" % (symbol, ", ".join(info)))
- if change:
- out.write("\nChanged symbols:\n")
- t = list(change)
- t.sort()
- for symbol in t:
- info = []
- if symbol in ignore:
- info.append("ignored")
- s = change_info[symbol]
- changes = s['changes']
- for i in ('module', 'version', 'export'):
- if changes.has_key(i):
- info.append("%s: %s -> %s" % (i, s['ref'][i], s['new'][i]))
- else:
- info.append("%s: %s" % (i, new[symbol][i]))
- out.write("%-48s %s\n" % (symbol, ", ".join(info)))
- if remove:
- out.write("\nRemoved symbols:\n")
- t = list(remove)
- t.sort()
- for symbol in t:
- info = []
- if symbol in ignore:
- info.append("ignored")
- for i in ('module', 'version', 'export'):
- info.append("%s: %s" % (i, remove_info[symbol][i]))
- out.write("%-48s %s\n" % (symbol, ", ".join(info)))
-
- return ret
-
- def _ignore(self, add, change, remove):
- config = self.config.merge('abi', self.arch, self.featureset, self.flavour)
- ignores = config.get('ignore-changes', None)
- if ignores is None:
- return set()
- return set(ignores.split())
-
-if __name__ == '__main__':
- sys.exit(checker(*sys.argv[1:])(sys.stdout))