Subversion Repositories Kolibri OS

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
5564 serge 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  '
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)