1 2import os 3import sys 4import subprocess 5import signal 6import glob 7 8admin_dir = os.path.dirname(os.path.abspath(__file__)) 9 10# Local packages to include in the Python virtualenv 11packages=[('admin','acro-admin'), ('tpl','cxxtest','python'), ('packages','*','python')] 12local_packages = [] 13for package in packages: 14 tmp_ = package 15 for pkg in glob.glob( os.path.join(*tmp_) ): 16 local_packages.append(pkg) 17 18 19def signal_handler(signum, frame): 20 pid=os.getpid() 21 pgid=os.getpgid(pid) 22 if pgid == -1: 23 sys.stderr.write(" ERROR: invalid pid %s\n" % (pid,)) 24 sys.exit(1) 25 os.killpg(pgid,signal.SIGTERM) 26 sys.exit(1) 27 28signal.signal(signal.SIGINT,signal_handler) 29if sys.platform[0:3] != "win": 30 signal.signal(signal.SIGHUP, signal_handler) 31signal.signal(signal.SIGTERM, signal_handler) 32 33 34def run(): 35 # Copy any / all setup scripts from the bootstrap directory 36 rc = subprocess.call([os.path.join('.','bootstrap','bootstrap'), 'all']) 37 if rc != 0: 38 sys.stderr.write("ERROR bootstrapping the source tree\n") 39 sys.exit(rc) 40 41 # Set up the virtual environment (if it doesn't exist) 42 trunk = (len(sys.argv) > 1 and '--trunk' in sys.argv) 43 if trunk: 44 sys.argv.remove('--trunk') 45 rc=0 46 if os.path.exists('python'): 47 logfile = open('tpl/python.log', 'w+') 48 else: 49 logfile = open('tpl/python.log', 'w') 50 cmd = [ sys.executable, 51 os.path.join('bin','pyomo_install'),'--venv', 'python' ] 52 if trunk: 53 sys.stdout.write("Installing Python from trunk\n") 54 cmd.append('--trunk') 55 cmd.extend([ '--config', os.path.join(admin_dir,'vpy','dev.ini') ]) 56 else: 57 sys.stdout.write("Installing Python from cached packages\n") 58 cmd.extend(['--zip', os.path.join(admin_dir,'vpy','python.zip')]) 59 60 # Add any local packages that also need to be installed in editable mode 61 cmd.extend(local_packages) 62 63 print cmd 64 sys.stdout.flush() 65 rc = subprocess.call(cmd, stdout=logfile, stderr=subprocess.STDOUT) 66 logfile.flush() 67 if rc != 0: 68 sys.stderr.write("ERROR installing Python virtual environment. " 69 "See tpl/python.log\n") 70 sys.exit(rc) 71 72 73 # Set up the (autotools) build: targets include: 74 # configure, reconfigure, build 75 if len(sys.argv) > 1: 76 rc = subprocess.call([ 77 os.path.join('.','python','bin','python'), 78 os.path.join('python','bin','driver') ] + sys.argv[1:]) 79 sys.exit(rc) 80 81