Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 #!/usr/bin/env python2 | 1 #!/usr/bin/env python2 |
| 2 | 2 |
| 3 import argparse | 3 import argparse |
| 4 import os | 4 import os |
| 5 import shutil | |
| 5 import tempfile | 6 import tempfile |
| 6 from utils import shellcmd | 7 from utils import shellcmd |
| 7 from utils import FindBaseNaCl | 8 from utils import FindBaseNaCl |
| 8 | 9 |
| 9 if __name__ == '__main__': | 10 if __name__ == '__main__': |
| 10 argparser = argparse.ArgumentParser() | 11 argparser = argparse.ArgumentParser() |
| 11 argparser.add_argument('cfile', nargs='+', type=str, | 12 argparser.add_argument('cfile', nargs='+', type=str, |
| 12 help='C file(s) to convert') | 13 help='C file(s) to convert') |
| 13 argparser.add_argument('--dir', nargs='?', type=str, default='.', | 14 argparser.add_argument('--dir', nargs='?', type=str, default='.', |
| 14 help='Output directory. Default "%(default)s".') | 15 help='Output directory. Default "%(default)s".') |
| 15 argparser.add_argument('--disable-verify', action='store_true') | 16 argparser.add_argument('--disable-verify', action='store_true') |
| 16 args = argparser.parse_args() | 17 args = argparser.parse_args() |
| 17 | 18 |
| 18 nacl_root = FindBaseNaCl() | 19 nacl_root = FindBaseNaCl() |
| 19 # Prepend bin to $PATH. | 20 # Prepend bin to $PATH. |
| 20 os.environ['PATH'] = ( | 21 os.environ['PATH'] = ( |
| 21 nacl_root + '/toolchain/linux_x86/pnacl_newlib/bin' + os.pathsep + | 22 nacl_root + '/toolchain/linux_x86/pnacl_newlib/bin' + os.pathsep + |
| 22 os.pathsep + os.environ['PATH']) | 23 os.pathsep + os.environ['PATH']) |
| 23 | 24 |
| 24 tempdir = tempfile.mkdtemp() | 25 try: |
| 26 tempdir = tempfile.mkdtemp() | |
| 25 | 27 |
| 26 for cname in args.cfile: | 28 for cname in args.cfile: |
| 27 basename = os.path.splitext(cname)[0] | 29 basename = os.path.splitext(cname)[0] |
| 28 llname = os.path.join(tempdir, basename + '.ll') | 30 llname = os.path.join(tempdir, basename + '.ll') |
| 29 pnaclname = basename + '.pnacl.ll' | 31 pnaclname = basename + '.pnacl.ll' |
| 30 pnaclname = os.path.join(args.dir, pnaclname) | 32 pnaclname = os.path.join(args.dir, pnaclname) |
| 31 | 33 |
| 32 shellcmd('pnacl-clang -O2 -c {0} -o {1}'.format(cname, llname)) | 34 shellcmd('pnacl-clang -O2 -c {0} -o {1}'.format(cname, llname)) |
| 33 shellcmd('pnacl-opt ' + | 35 shellcmd('pnacl-opt ' + |
| 34 '-pnacl-abi-simplify-preopt -pnacl-abi-simplify-postopt' + | 36 '-pnacl-abi-simplify-preopt -pnacl-abi-simplify-postopt' + |
| 35 ('' if args.disable_verify else | 37 ('' if args.disable_verify else |
| 36 ' -verify-pnaclabi-module -verify-pnaclabi-functions') + | 38 ' -verify-pnaclabi-module -verify-pnaclabi-functions') + |
| 37 ' -pnaclabi-allow-debug-metadata' | 39 ' -pnaclabi-allow-debug-metadata' |
| 38 ' {0} -S -o {1}'.format(llname, pnaclname)) | 40 ' {0} -S -o {1}'.format(llname, pnaclname)) |
| 41 finally: | |
| 42 try: | |
| 43 shutil.rmtree(tempdir) | |
| 44 except OSError as exc: | |
| 45 if exc.errno != errno.ENOENT: # ENOENT - no such file or directory | |
|
jvoung (off chromium)
2014/09/15 21:36:17
I think this file should import errno, to get errn
Jim Stichnoth
2014/09/15 21:52:10
Python didn't complain for some reason, but done i
| |
| 46 raise # re-raise exception | |
| OLD | NEW |