summaryrefslogtreecommitdiff
path: root/script
diff options
context:
space:
mode:
authorUri Simchoni <urisimchoni@gmail.com>2015-05-19 11:50:41 +0300
committerAndrew Bartlett <abartlet@samba.org>2015-05-20 11:19:11 +0200
commit4a0d599518bc6312e887d1bb4c2b9063c1c78d83 (patch)
tree4be21e5c18233997e75d45839d2ac9401e11952f /script
parent13ce285b24d4f1a3e9e1e2f6eb45a53ff9f2d642 (diff)
downloadsamba-4a0d599518bc6312e887d1bb4c2b9063c1c78d83.tar.gz
waf: add a script that compares configurations
This script is intended for use with the cross-build infrastructure self-test during autobuild. The script takes two or more "default.cache.py" files which are the result of the waf configure process, and performs an intelligent comparison - allowing for a limited set of variables to be different. If the configurations are identical (apart from allowed differences) then the script exit with 0 code. If there are differences, the script outputs them to standard output in unified diff format. Signed-off-by: Uri Simchoni <urisimchoni@gmail.com> Reviewed-by: Andrew Bartlett <abartlet@samba.org> Reviewed-by: Alexander Bokovoy <ab@samba.org>
Diffstat (limited to 'script')
-rwxr-xr-xscript/compare_cc_results.py40
1 files changed, 40 insertions, 0 deletions
diff --git a/script/compare_cc_results.py b/script/compare_cc_results.py
new file mode 100755
index 00000000000..b8ed3994c04
--- /dev/null
+++ b/script/compare_cc_results.py
@@ -0,0 +1,40 @@
+#!/usr/bin/env python
+
+#
+# Compare the results of native and cross-compiled configure tests
+#
+
+import sys
+import difflib
+
+exceptions = ['BUILD_DIRECTORY', 'CROSS_COMPILE', 'CROSS_ANSWERS',
+ 'CROSS_EXECUTE', 'SELFTEST_PREFIX']
+
+base_lines = list()
+base_fname = ''
+
+found_diff = False
+
+for fname in sys.argv[1:]:
+ lines = list()
+ f = open(fname, 'r')
+ for line in f:
+ if len(line.split('=', 1)) == 2:
+ key = line.split('=', 1)[0].strip()
+ if key in exceptions:
+ continue
+ lines.append(line)
+ f.close()
+ if base_fname:
+ diff = list(difflib.unified_diff(base_lines,lines,base_fname,fname))
+ if diff:
+ print 'configuration files %s and %s do not match' % (base_fname, fname)
+ for l in diff:
+ sys.stdout.write(l)
+ found_diff = True
+ else:
+ base_fname = fname
+ base_lines = lines
+
+if found_diff:
+ sys.exit(1)