#!/usr/bin/python3 from subprocess import call from sys import argv, platform, exit, stderr from os import environ, getenv, chdir import shlex import subprocess if __name__ == '__main__': r = {environ.get('PATH')} setup_path = getenv('HFS') if not setup_path: # Use static paths setup = { 'darwin': '/Applications/Houdini/Houdini17.5.173/Frameworks/Houdini.framework/Versions/Current/Resources', 'linux': '/opt/hfs17.5.229', 'win32': r'C:\Program Files\Side Effects Software\Houdini 17.5.173' } if platform not in setup.keys(): print('Platform `{}` not supported... yet.'.format(platform), file=stderr) exit(1) setup_path = setup[platform] chdir(setup_path) if platform == 'win32': if '-rs3' in argv: redshift_path = 'C:/ProgramData/Redshift3' else: redshift_path = 'C:/ProgramData/Redshift' else: if '-rs3' in argv: redshift_path = '/opt/redshift3' else: redshift_path = '/opt/redshift' environ.update({ 'HOUDINI_NO_SPLASH': '1', 'HOUDINI_DSO_ERROR': '2', 'PATH': ';'.join(['{}/bin'.format(redshift_path), environ.get('PATH')]), 'REDSHIFT_COREDATAPATH': redshift_path, 'HOUDINI_OCL_DEVICETYPE': 'GPU', 'HOUDINI_OCL_DEVICENUMBER': '0', 'HOUDINI_PATH': "{}/Plugins/Houdini/17.5.173;&".format(redshift_path), }) # Initialize env vars. if platform != 'win32': command = shlex.split("env -i sh -c '. houdini_setup >/dev/null && env'") proc = subprocess.Popen(command, stdout=subprocess.PIPE, universal_newlines=True) for line in proc.stdout: (key, _, value) = str(line.strip()).partition('=') environ[key] = value print(key, '=', value) proc.communicate() call(['./bin/houdini'], env=environ)