mirror of
https://github.com/intel/llvm.git
synced 2026-01-13 19:08:21 +08:00
[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)
This commit is contained in:
@@ -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)
|
||||
|
||||
differ = 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)
|
||||
|
||||
differ = 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))
|
||||
differ = True
|
||||
continue
|
||||
elif b is None:
|
||||
print 'B MISSING:',' '.join(a)
|
||||
print('B MISSING:',' '.join(a))
|
||||
differ = True
|
||||
continue
|
||||
|
||||
diff = DriverZipperDiff(a,b)
|
||||
diffs = list(diff.getDiffs())
|
||||
if diffs:
|
||||
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(diffs):
|
||||
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)
|
||||
differ = 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)
|
||||
differ = True
|
||||
|
||||
if differ:
|
||||
|
||||
Reference in New Issue
Block a user