Subversion Repositories Kolibri OS

Rev

Go to most recent revision | Blame | Last modification | View Log | RSS feed

  1. #!/usr/bin/env python
  2. # coding=utf-8
  3. #
  4. # Copyright © 2011 Intel Corporation
  5. #
  6. # Permission is hereby granted, free of charge, to any person obtaining a
  7. # copy of this software and associated documentation files (the "Software"),
  8. # to deal in the Software without restriction, including without limitation
  9. # the rights to use, copy, modify, merge, publish, distribute, sublicense,
  10. # and/or sell copies of the Software, and to permit persons to whom the
  11. # Software is furnished to do so, subject to the following conditions:
  12. #
  13. # The above copyright notice and this permission notice (including the next
  14. # paragraph) shall be included in all copies or substantial portions of the
  15. # Software.
  16. #
  17. # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
  18. # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
  19. # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
  20. # THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
  21. # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
  22. # FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
  23. # DEALINGS IN THE SOFTWARE.
  24.  
  25. # Compare two files containing IR code.  Ignore formatting differences
  26. # and declaration order.
  27.  
  28. import os
  29. import os.path
  30. import subprocess
  31. import sys
  32. import tempfile
  33.  
  34. from sexps import *
  35.  
  36. if len(sys.argv) != 3:
  37.     print 'Usage: compare_ir <file1> <file2>'
  38.     exit(1)
  39.  
  40. with open(sys.argv[1]) as f:
  41.     ir1 = sort_decls(parse_sexp(f.read()))
  42. with open(sys.argv[2]) as f:
  43.     ir2 = sort_decls(parse_sexp(f.read()))
  44.  
  45. if ir1 == ir2:
  46.     exit(0)
  47. else:
  48.     file1, path1 = tempfile.mkstemp(os.path.basename(sys.argv[1]))
  49.     file2, path2 = tempfile.mkstemp(os.path.basename(sys.argv[2]))
  50.     try:
  51.         os.write(file1, '{0}\n'.format(sexp_to_string(ir1)))
  52.         os.close(file1)
  53.         os.write(file2, '{0}\n'.format(sexp_to_string(ir2)))
  54.         os.close(file2)
  55.         subprocess.call(['diff', '-u', path1, path2])
  56.     finally:
  57.         os.remove(path1)
  58.         os.remove(path2)
  59.     exit(1)
  60.