X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=bin%2FrunSalome.py;h=243ec39c1a2d76138891d1300eca2e646d6f3c12;hb=3f353148bd2e75cc28815529b40ab04f3966460b;hp=c819b857c8513c044d2a650d8e4e63e69cbf26d6;hpb=a89e43dcb1f807899f8b08857599f84775e11a1c;p=modules%2Fkernel.git diff --git a/bin/runSalome.py b/bin/runSalome.py index c819b857c..243ec39c1 100755 --- a/bin/runSalome.py +++ b/bin/runSalome.py @@ -1,6 +1,6 @@ #!/usr/bin/env python # -*- coding: iso-8859-1 -*- -# Copyright (C) 2007-2014 CEA/DEN, EDF R&D, OPEN CASCADE +# Copyright (C) 2007-2016 CEA/DEN, EDF R&D, OPEN CASCADE # # Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, # CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -33,6 +33,7 @@ from launchConfigureParser import verbose from server import process_id, Server import json import subprocess +from salomeContextUtils import ScriptAndArgsObjectEncoder # ----------------------------------------------------------------------------- @@ -88,21 +89,21 @@ def kill_salome(args): class InterpServer(Server): def __init__(self,args): self.args=args - if sys.platform != "win32": - env_ld_library_path=['env', 'LD_LIBRARY_PATH=' + os.getenv("LD_LIBRARY_PATH")] - self.CMD=['xterm', '-e']+ env_ld_library_path + ['python'] - else: + if sys.platform == "win32": self.CMD=['cmd', '/c', 'start cmd.exe', '/K', 'python'] + elif sys.platform == "darwin": + env_ld_library_path=['env', 'DYLD_LIBRARY_PATH=' + os.getenv("LD_LIBRARY_PATH")] + self.CMD=['xterm', '-e'] + env_ld_library_path + ['python'] + else: + env_ld_library_path=['env', 'LD_LIBRARY_PATH=' + os.getenv("LD_LIBRARY_PATH")] + self.CMD=['xterm', '-e'] + env_ld_library_path + ['python'] def run(self): global process_id command = self.CMD print "INTERPSERVER::command = ", command - if sys.platform == "win32": - import win32pm - pid = win32pm.spawnpid( string.join(command, " "),'-nc' ) - else: - pid = os.spawnvp(os.P_NOWAIT, command[0], command) + import subprocess + pid = subprocess.Popen(command).pid process_id[pid]=self.CMD self.PID = pid @@ -139,29 +140,6 @@ def get_cata_path(list_modules,modules_root_dir): return cata_path -_siman_name = None -def simanStudyName(args): - global _siman_name - if _siman_name is None: - # siman session paramenters and checkout processing - _siman_name = "" - if 'siman' in args: - siman_data = [] - for param in [ 'study', 'scenario', 'user']: - siman_param = "siman_%s"%param - if siman_param in args: - siman_data.append(args[siman_param]) - else: - print "SIMAN %s must be defined using parameter --siman-%s=XXX" % (siman_param, siman_param) - pass - pass - if len(siman_data) == 3: - _siman_name = "_".join(siman_data) - pass - pass - pass - return _siman_name - class CatalogServer(Server): def __init__(self,args): self.args=args @@ -211,10 +189,18 @@ class RegistryServer(Server): # --- class ContainerCPPServer(Server): - def __init__(self,args): + def __init__(self,args,with_gui=False): self.args=args self.initArgs() self.CMD=['SALOME_Container','FactoryServer'] + if not with_gui and self.args["valgrind_session"]: + l = ["valgrind"] + val = os.getenv("VALGRIND_OPTIONS") + if val: + l += val.split() + pass + self.CMD = l + self.CMD + pass # --- @@ -222,10 +208,8 @@ class LoggerServer(Server): def __init__(self,args): self.args=args self.initArgs() - from salome_utils import generateFileName - if sys.platform == "win32": dirpath = os.environ["HOME"] - else: dirpath = "/tmp" - logfile = generateFileName( dirpath, + from salome_utils import generateFileName, getLogDir + logfile = generateFileName( getLogDir(), prefix="logger", extension="log", with_username=True, @@ -282,12 +266,9 @@ class SessionServer(Server): if self.args['study_hdf'] is not None: self.SCMD2+=['--study-hdf=%s'%self.args['study_hdf']] pass - if simanStudyName(self.args): - self.SCMD2+=['--siman-study=%s'%simanStudyName(self.args)] - pass pass if self.args.has_key('pyscript') and len(self.args['pyscript']) > 0: - msg = json.dumps(self.args['pyscript']) + msg = json.dumps(self.args['pyscript'], cls=ScriptAndArgsObjectEncoder) self.SCMD2+=['--pyscript=%s'%(msg)] pass pass @@ -310,6 +291,8 @@ class SessionServer(Server): list_modules.reverse() self.SCMD2+=['--modules (%s)' % ":".join(list_modules)] pass + if self.args.has_key('language'): + self.SCMD2+=['--language=%s' % self.args['language']] pass def setpath(self,modules_list,modules_root_dir): @@ -485,12 +468,6 @@ def startSalome(args, modules_list, modules_root_dir): myServer.run() clt.waitLogger("Logger") - # set siman python path before the session server launching to import scripts inside python console - if simanStudyName(args): - # MPV: use os.environ here because session server is launched in separated process and sys.path is missed in this case - os.environ["PYTHONPATH"] = "/tmp/SimanSalome/" + args['siman_study'] + "/" + \ - args['siman_scenario'] + "/" + args['siman_user'] + os.pathsep + os.environ["PYTHONPATH"]; - # Launch Session Server (to show splash ASAP) # @@ -574,7 +551,7 @@ def startSalome(args, modules_list, modules_root_dir): # if ('cppContainer' in args['standalone']) | (args["gui"] == 0) : - myServer=ContainerCPPServer(args) + myServer=ContainerCPPServer(args, with_gui=args["gui"]!=0) myServer.run() if sys.platform == "win32": clt.waitNS("/Containers/" + theComputer + "/FactoryServer") @@ -639,27 +616,6 @@ def startSalome(args, modules_list, modules_root_dir): except ImportError: pass - # siman session paramenters and checkout processing - if simanStudyName(args): - print '**********************************************' - print "Siman study name= '" + simanStudyName(args) + "'" - import SALOMEDS - obj = clt.Resolve('myStudyManager') - myStudyManager = obj._narrow(SALOMEDS.StudyManager) - aNewStudy = myStudyManager.NewStudy(simanStudyName(args)) - aSimS = myStudyManager.GetSimanStudy() - aSimS._set_StudyId(args['siman_study']) - aSimS._set_ScenarioId(args['siman_scenario']) - aSimS._set_UserId(args['siman_user']) - aSimS.CheckOut(aNewStudy) - # if session server is enabled, activate the created study - if args["gui"]: - print "Activate the SIMAN study in the SALOME GUI" - obj = clt.Resolve('/Kernel/Session') - mySession = obj._narrow(SALOME.Session) - mySession.emitMessage("simanCheckoutDone " + simanStudyName(args)) - print '**********************************************' - return clt # ----------------------------------------------------------------------------- @@ -738,11 +694,15 @@ def useSalome(args, modules_list, modules_root_dir): # run python scripts, passed as command line arguments toimport = [] - if args.has_key('pyscript'): - if args.has_key('gui') and args.has_key('session_gui'): - if not args['gui'] or not args['session_gui']: + if args.has_key('gui') and args.has_key('session_gui'): + if not args['gui'] or not args['session_gui']: + if args.has_key('study_hdf'): + toopen = args['study_hdf'] + if toopen: + import salome + salome.salome_init(toopen) + if args.has_key('pyscript'): toimport = args['pyscript'] - from salomeContextUtils import formatScriptsAndArgs command = formatScriptsAndArgs(toimport) if command: @@ -755,7 +715,7 @@ def useSalome(args, modules_list, modules_root_dir): def execScript(script_path): print 'executing', script_path - sys.path.insert(0, os.path.dirname(script_path)) + sys.path.insert(0, os.path.realpath(os.path.dirname(script_path))) execfile(script_path,globals()) del sys.path[0] @@ -766,12 +726,10 @@ def registerEnv(args, modules_list, modules_root_dir): Register args, modules_list, modules_root_dir in a file for further use, when SALOME is launched embedded in an other application. """ - if sys.platform == "win32": - fileEnv = os.getenv('TEMP') - else: - fileEnv = '/tmp/' - - fileEnv += os.getenv('USER') + "_" + str(args['port']) \ + from salome_utils import getTmpDir + fileEnv = getTmpDir() + from salome_utils import getUserName + fileEnv += getUserName() + "_" + str(args['port']) \ + '_' + args['appname'].upper() + '_env' fenv=open(fileEnv,'w') pickle.dump((args, modules_list, modules_root_dir),fenv) @@ -794,7 +752,7 @@ def no_main(): # ----------------------------------------------------------------------------- -def main(): +def main(exeName=None): """Salome launch as a main application""" # define folder to store omniorb config (initially in virtual application folder) @@ -806,7 +764,7 @@ def main(): sys.exit(1) from salome_utils import getHostName - args, modules_list, modules_root_dir = setenv.get_config() + args, modules_list, modules_root_dir = setenv.get_config(exeName=exeName) print "runSalome running on %s" % getHostName() kill_salome(args)