#---------------------------------------------------------------------------- # Name: sysutils.py # Purpose: System Utilities # # Author: Joel Hare # # Created: 7/28/04 # CVS-ID: $Id$ # Copyright: (c) 2004-2005 ActiveGrid, Inc. # License: wxWindows License #---------------------------------------------------------------------------- import sys import os import time # this will be set to true in IDE.py when we are running release builds. isRelease = False # Commented out for now..... # Required for Unicode support with python # Put over here because of py2exe problems # Python suggests modifying site.py #if hasattr(sys,"setdefaultencoding"): # sys.setdefaultencoding("UTF-8") MAINMODULE_DIR = "AG_MAINMODULE_DIR" IS_RELEASE = "AG_IS_RELEASE" IS_COMMERCIAL = "AG_IS_COMMERCIAL" AG_SYSTEM_START_TIME_ENV_NAME = "AG_SYSTEM_START_TIME" def isCommercial(): return os.path.exists(os.path.join(mainModuleDir,"commercial.txt")) or 'true' == (str(os.getenv(IS_COMMERCIAL)).lower()) def isRelease(): return 'true' == (str(os.getenv(IS_RELEASE)).lower()) def setRelease(value): if value: os.environ[IS_RELEASE]= "TRUE" else: os.environ[IS_RELEASE]= "FALSE" def isWindows(): return os.name == 'nt' __isServer = False def setServerMode(isServer): global __isServer __isServer = isServer def isServer(): global __isServer return __isServer def _generateMainModuleDir(): mainModuleDir = os.getenv(MAINMODULE_DIR) if mainModuleDir: # if environment variable set, return it return mainModuleDir # On Mac, the python executable sometimes has a capital "P" so we need to # lower the string first sysExecLower = sys.executable.lower() if sysExecLower == "/" or sysExecLower.find('python') != -1 or sysExecLower.find('apache') != -1: utilModuleDir = os.path.dirname(__file__) if not os.path.isabs(utilModuleDir): utilModuleDir = os.path.join(os.getcwd(), utilModuleDir) mainModuleDir = os.path.normpath(os.path.join(utilModuleDir, os.path.join(os.path.pardir, os.path.pardir))) if mainModuleDir.endswith('.zip'): mainModuleDir = os.path.dirname(mainModuleDir) # Get rid of library.zip else: mainModuleDir = os.path.dirname(sys.executable) os.environ[MAINMODULE_DIR] = mainModuleDir # pythonBug: os.putenv doesn't work, set environment variable return mainModuleDir mainModuleDir = _generateMainModuleDir() def _generatePythonExecPath(): # On Mac, the python executable sometimes has a capital "P" so we need to # lower the string first sysExecLower = sys.executable.lower() if sysExecLower.find('python') != -1 or sysExecLower.find('apache') != -1: pythonExecPath = sys.executable else: # this is where py2app puts the Python executable if sys.platform == "darwin": pythonExecPath = os.path.join(os.path.dirname(sys.executable), "../Frameworks/Python.Framework/Versions/2.4/Python/bin") else: pythonExecPath = os.path.join(os.path.dirname(sys.executable), '3rdparty\python2.4\python') return pythonExecPath pythonExecPath = _generatePythonExecPath() def getCommandNameForExecPath(execPath): if isWindows(): return '"%s"' % execPath return execPath def getUserName(): if isWindows(): return os.getenv('USERNAME') else: # 06-Feb-06 stoens@activegrid.com -- # this blows up the linux cc runs with "Inappropriate ioctl for device" #return os.getlogin() return os.getenv('USER') def getCurrentTimeAsFloat(): return time.time() systemStartTime = getCurrentTimeAsFloat()