EVOLUTION-MANAGER
Edit File: interactive.py
import os import sys from pprint import pformat __all__ = ['interactive_sys_argv'] def show_information(*args): print 'Python',sys.version for a in ['platform','prefix','byteorder','path']: print 'sys.%s = %s' % (a,pformat(getattr(sys,a))) for a in ['name']: print 'os.%s = %s' % (a,pformat(getattr(os,a))) if hasattr(os,'uname'): print 'system,node,release,version,machine = ',os.uname() def show_environ(*args): for k,i in os.environ.items(): print ' %s = %s' % (k, i) def show_fortran_compilers(*args): from fcompiler import show_fcompilers show_fcompilers() def show_compilers(*args): from distutils.ccompiler import show_compilers show_compilers() def show_tasks(argv,ccompiler,fcompiler): print """\ Tasks: i - Show python/platform/machine information ie - Show environment information c - Show C compilers information c<name> - Set C compiler (current:%s) f - Show Fortran compilers information f<name> - Set Fortran compiler (current:%s) e - Edit proposed sys.argv[1:]. Task aliases: 0 - Configure 1 - Build 2 - Install 2<prefix> - Install with prefix. 3 - Inplace build 4 - Source distribution 5 - Binary distribution Proposed sys.argv = %s """ % (ccompiler, fcompiler, argv) import shlex def edit_argv(*args): argv = args[0] readline = args[1] if readline is not None: readline.add_history(' '.join(argv[1:])) try: s = raw_input('Edit argv [UpArrow to retrive %r]: ' % (' '.join(argv[1:]))) except EOFError: return if s: argv[1:] = shlex.split(s) return def interactive_sys_argv(argv): print '='*72 print 'Starting interactive session' print '-'*72 readline = None try: try: import readline except ImportError: pass else: import tempfile tdir = tempfile.gettempdir() username = os.environ.get('USER',os.environ.get('USERNAME','UNKNOWN')) histfile = os.path.join(tdir,".pyhist_interactive_setup-" + username) try: try: readline.read_history_file(histfile) except IOError: pass import atexit atexit.register(readline.write_history_file, histfile) except AttributeError: pass except Exception, msg: print msg task_dict = {'i':show_information, 'ie':show_environ, 'f':show_fortran_compilers, 'c':show_compilers, 'e':edit_argv, } c_compiler_name = None f_compiler_name = None while 1: show_tasks(argv,c_compiler_name, f_compiler_name) try: task = raw_input('Choose a task (^D to quit, Enter to continue with setup): ') except EOFError: print task = 'quit' ltask = task.lower() if task=='': break if ltask=='quit': sys.exit() task_func = task_dict.get(ltask,None) if task_func is None: if ltask[0]=='c': c_compiler_name = task[1:] if c_compiler_name=='none': c_compiler_name = None continue if ltask[0]=='f': f_compiler_name = task[1:] if f_compiler_name=='none': f_compiler_name = None continue if task[0]=='2' and len(task)>1: prefix = task[1:] task = task[0] else: prefix = None if task == '4': argv[1:] = ['sdist','-f'] continue elif task in '01235': cmd_opts = {'config':[],'config_fc':[], 'build_ext':[],'build_src':[], 'build_clib':[]} if c_compiler_name is not None: c = '--compiler=%s' % (c_compiler_name) cmd_opts['config'].append(c) if task != '0': cmd_opts['build_ext'].append(c) cmd_opts['build_clib'].append(c) if f_compiler_name is not None: c = '--fcompiler=%s' % (f_compiler_name) cmd_opts['config_fc'].append(c) if task != '0': cmd_opts['build_ext'].append(c) cmd_opts['build_clib'].append(c) if task=='3': cmd_opts['build_ext'].append('--inplace') cmd_opts['build_src'].append('--inplace') conf = [] sorted_keys = ['config','config_fc','build_src', 'build_clib','build_ext'] for k in sorted_keys: opts = cmd_opts[k] if opts: conf.extend([k]+opts) if task=='0': if 'config' not in conf: conf.append('config') argv[1:] = conf elif task=='1': argv[1:] = conf+['build'] elif task=='2': if prefix is not None: argv[1:] = conf+['install','--prefix=%s' % (prefix)] else: argv[1:] = conf+['install'] elif task=='3': argv[1:] = conf+['build'] elif task=='5': if sys.platform=='win32': argv[1:] = conf+['bdist_wininst'] else: argv[1:] = conf+['bdist'] else: print 'Skipping unknown task:',`task` else: print '-'*68 try: task_func(argv,readline) except Exception,msg: print 'Failed running task %s: %s' % (task,msg) break print '-'*68 print print '-'*72 return argv