Author: David Spickett Date: 2025-10-31T09:49:16Z New Revision: aaf7aa3c2f0a5c050902b257660fb4eda390e83e
URL: https://github.com/llvm/llvm-project/commit/aaf7aa3c2f0a5c050902b257660fb4eda390e83e DIFF: https://github.com/llvm/llvm-project/commit/aaf7aa3c2f0a5c050902b257660fb4eda390e83e.diff LOG: [clang][utils] Make CmpDriver Python3 compatible (#163740) The majority of this is running 2to3 on it: * print is a function in 3.x * next(it) instead of it.next() Then there was a use of "map(None, iterables..)" which in Python 2 was a way of saying "combine these iterables, and if one is shorter, pad with None". This no longer works in Python3, the equivalent is zip_longest: https://docs.python.org/3/library/itertools.html#itertools.zip_longest fillvalue defaults to None but I made it explicit since it may help someone debugging this script in future. (I doubt it has been used for a very long time) Added: Modified: clang/utils/CmpDriver Removed: ################################################################################ diff --git a/clang/utils/CmpDriver b/clang/utils/CmpDriver index 12ce7a3250f66..0732baa76d01c 100755 --- a/clang/utils/CmpDriver +++ b/clang/utils/CmpDriver @@ -5,6 +5,7 @@ A simple utility that compares tool invocations and exit codes issued by compiler drivers that support -### (e.g. gcc and clang). """ +from itertools import zip_longest import subprocess def splitArgs(s): @@ -22,7 +23,7 @@ def splitArgs(s): elif inQuote: if c == '\\': current += c - current += it.next() + current += next(it) else: current += c elif not c.isspace(): @@ -135,77 +136,77 @@ def main(): # Compare stdout. if infoA.stdout != infoB.stdout: - print '-- STDOUT DIFFERS -' - print 'A OUTPUT: ',infoA.stdout - print 'B OUTPUT: ',infoB.stdout - print + print('-- STDOUT DIFFERS -') + print('A OUTPUT: ',infoA.stdout) + print('B OUTPUT: ',infoB.stdout) + print() diff = ZipperDiff(infoA.stdout.split('\n'), infoB.stdout.split('\n')) for i,(aElt,bElt) in enumerate( diff .getDiffs()): if aElt is None: - print 'A missing: %s' % bElt + print('A missing: %s' % bElt) elif bElt is None: - print 'B missing: %s' % aElt + print('B missing: %s' % aElt) else: - print 'mismatch: A: %s' % aElt - print ' B: %s' % bElt + print('mismatch: A: %s' % aElt) + print(' B: %s' % bElt) diff er = True # Compare stderr. if infoA.stderr != infoB.stderr: - print '-- STDERR DIFFERS -' - print 'A STDERR: ',infoA.stderr - print 'B STDERR: ',infoB.stderr - print + print('-- STDERR DIFFERS -') + print('A STDERR: ',infoA.stderr) + print('B STDERR: ',infoB.stderr) + print() diff = ZipperDiff(infoA.stderr.split('\n'), infoB.stderr.split('\n')) for i,(aElt,bElt) in enumerate( diff .getDiffs()): if aElt is None: - print 'A missing: %s' % bElt + print('A missing: %s' % bElt) elif bElt is None: - print 'B missing: %s' % aElt + print('B missing: %s' % aElt) else: - print 'mismatch: A: %s' % aElt - print ' B: %s' % bElt + print('mismatch: A: %s' % aElt) + print(' B: %s' % bElt) diff er = True # Compare commands. - for i,(a,b) in enumerate(map(None, infoA.commands, infoB.commands)): + for i,(a,b) in enumerate(zip_longest(infoA.commands, infoB.commands, fillvalue=None)): if a is None: - print 'A MISSING:',' '.join(b) + print('A MISSING:',' '.join(b)) diff er = True continue elif b is None: - print 'B MISSING:',' '.join(a) + print('B MISSING:',' '.join(a)) diff er = True continue diff = DriverZipperDiff(a,b) diff s = list( diff .getDiffs()) if diff s: - print '-- COMMAND %d DIFFERS -' % i - print 'A COMMAND:',' '.join(a) - print 'B COMMAND:',' '.join(b) - print + print('-- COMMAND %d DIFFERS -' % i) + print('A COMMAND:',' '.join(a)) + print('B COMMAND:',' '.join(b)) + print() for i,(aElt,bElt) in enumerate( diff s): if aElt is None: - print 'A missing: %s' % bElt + print('A missing: %s' % bElt) elif bElt is None: - print 'B missing: %s' % aElt + print('B missing: %s' % aElt) else: - print 'mismatch: A: %s' % aElt - print ' B: %s' % bElt + print('mismatch: A: %s' % aElt) + print(' B: %s' % bElt) diff er = True # Compare result codes. if infoA.exitCode != infoB.exitCode: - print '-- EXIT CODES DIFFER -' - print 'A: ',infoA.exitCode - print 'B: ',infoB.exitCode + print('-- EXIT CODES DIFFER -') + print('A: ',infoA.exitCode) + print('B: ',infoB.exitCode) diff er = True if diff er: _______________________________________________ cfe-commits mailing list [email protected] https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
