73 lines
2.6 KiB
Python
73 lines
2.6 KiB
Python
|
import sys
|
||
|
import argparse
|
||
|
import os
|
||
|
import subprocess
|
||
|
import json
|
||
|
|
||
|
from .numba_sysinfo import display_sysinfo, get_sysinfo
|
||
|
from .numba_gdbinfo import display_gdbinfo
|
||
|
|
||
|
|
||
|
def make_parser():
|
||
|
parser = argparse.ArgumentParser()
|
||
|
parser.add_argument('--annotate', help='Annotate source',
|
||
|
action='store_true')
|
||
|
parser.add_argument('--dump-llvm', action="store_true",
|
||
|
help='Print generated llvm assembly')
|
||
|
parser.add_argument('--dump-optimized', action='store_true',
|
||
|
help='Dump the optimized llvm assembly')
|
||
|
parser.add_argument('--dump-assembly', action='store_true',
|
||
|
help='Dump the LLVM generated assembly')
|
||
|
parser.add_argument('--annotate-html', nargs=1,
|
||
|
help='Output source annotation as html')
|
||
|
parser.add_argument('-s', '--sysinfo', action="store_true",
|
||
|
help='Output system information for bug reporting')
|
||
|
parser.add_argument('-g', '--gdbinfo', action="store_true",
|
||
|
help='Output system information about gdb')
|
||
|
parser.add_argument('--sys-json', nargs=1,
|
||
|
help='Saves the system info dict as a json file')
|
||
|
parser.add_argument('filename', nargs='?', help='Python source filename')
|
||
|
return parser
|
||
|
|
||
|
|
||
|
def main():
|
||
|
parser = make_parser()
|
||
|
args = parser.parse_args()
|
||
|
|
||
|
if args.sysinfo:
|
||
|
print("System info:")
|
||
|
display_sysinfo()
|
||
|
|
||
|
if args.gdbinfo:
|
||
|
print("GDB info:")
|
||
|
display_gdbinfo()
|
||
|
|
||
|
if args.sysinfo or args.gdbinfo:
|
||
|
sys.exit(0)
|
||
|
|
||
|
if args.sys_json:
|
||
|
info = get_sysinfo()
|
||
|
info.update({'Start': info['Start'].isoformat()})
|
||
|
info.update({'Start UTC': info['Start UTC'].isoformat()})
|
||
|
with open(args.sys_json[0], 'w') as f:
|
||
|
json.dump(info, f, indent=4)
|
||
|
sys.exit(0)
|
||
|
|
||
|
os.environ['NUMBA_DUMP_ANNOTATION'] = str(int(args.annotate))
|
||
|
if args.annotate_html is not None:
|
||
|
try:
|
||
|
from jinja2 import Template
|
||
|
except ImportError:
|
||
|
raise ImportError("Please install the 'jinja2' package")
|
||
|
os.environ['NUMBA_DUMP_HTML'] = str(args.annotate_html[0])
|
||
|
os.environ['NUMBA_DUMP_LLVM'] = str(int(args.dump_llvm))
|
||
|
os.environ['NUMBA_DUMP_OPTIMIZED'] = str(int(args.dump_optimized))
|
||
|
os.environ['NUMBA_DUMP_ASSEMBLY'] = str(int(args.dump_assembly))
|
||
|
|
||
|
if args.filename:
|
||
|
cmd = [sys.executable, args.filename]
|
||
|
subprocess.call(cmd)
|
||
|
else:
|
||
|
print("numba: error: the following arguments are required: filename")
|
||
|
sys.exit(1)
|