#!/usr/bin/env python # calls ACE import birchenv import copy import os import subprocess def call_ace(ACEDB): ACEENV = copy.copy(os.environ) if not ACEENV.has_key('BIRCH') or not ACEENV.has_key('BIRCH_PLATFORM'): print("ERROR - BIRCH environment not properly set") exit() # Top directory for your lab database BINDIR = os.path.join(ACEDB, 'bin') # Top directory for your lab database ACEENV['ACEDB'] = ACEDB ACEENV['ACEDB_COMMON'] = ACEDB # Directory to contain the binary database file ACEENV['DBDIR'] = os.path.join(ACEDB, 'database') # Directory for executable code specific for your database # eg. this script ACEENV['BINDIR'] = BINDIR # Run xace, and call cleanup.csh to make sure all files # have correct group membership and permissions. if ACEENV.has_key('PATH'): ACEENV['PATH'] = BINDIR + os.pathsep + str(ACEENV['PATH']) else: ACEENV['PATH'] = BINDIR #TODO: make relative ACEENV['ACE_FILE_LAUNCHER'] = os.path.join(birchenv.BIRCH, "script", 'chooseviewer.py') print birchenv.BIRCHLIBS if (birchenv.BIRCHLIBS != ''): if ACEENV.has_key('LD_LIBRARY_PATH'): ACEENV['LD_LIBRARY_PATH'] = str(ACEENV['LD_LIBRARY_PATH']) + os.pathsep + birchenv.BIRCHLIBS else: ACEENV['LD_LIBRARY_PATH'] = birchenv.BIRCHLIBS if (birchenv.BIRCH_PLATFORM == 'osx-x86_64'): ACEENV['DYLD_LIBRARY_PATH'] = str(ACEENV['LD_LIBRARY_PATH']) ACEENV['local'] = str(os.path.join(birchenv.BIRCH, "local")) # Set X11 fonts for use by xace if (birchenv.BIRCH_PLATFORM == 'solaris-sparc'): ACEFONTS="" elif (birchenv.BIRCH_PLATFORM == 'solaris-sparc'): ACEFONTS="" elif (birchenv.BIRCH_PLATFORM == 'linux-intel'): ACEFONTS=os.path.join(birchenv.BIRCH, 'lib-' + birchenv.BIRCH_PLATFORM, 'gde.fonts', 'misc') elif (birchenv.BIRCH_PLATFORM == 'linux-x86_64'): ACEFONTS=os.path.join(birchenv.BIRCH, 'lib-' + birchenv.BIRCH_PLATFORM, 'gde.fonts', 'misc') elif (birchenv.BIRCH_PLATFORM == 'osx-x86_64'): ACEFONTS=os.path.join(birchenv.BIRCH, 'lib-' + birchenv.BIRCH_PLATFORM, 'gde.fonts', 'misc') # ----- This is a bit of test code that works. Now we need to do this properly, # using an if/elif statement to cover each platform. # Not all systems have the old X11 fonts, so we provide them for use by xace. print 'ACEFONTS=' + ACEFONTS if ACEFONTS != "" : subprocess.call(['xset', '+fp', ACEFONTS], env=ACEENV) #(xace; $BINDIR/cleanup.csh)& # cleanup.csh will give error messages if run by users who don't # have write permissions for the database directroy. # We should fix this. subprocess.call(['xace'], env=ACEENV) # & subprocess.call([os.path.join(BINDIR, 'cleanup.sh')], env=ACEENV) # &