X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=bin%2FrunSalome.py;h=172298f984413af787eb7b8aa69b5abac9e276ef;hb=561c8837aca34ed658cc6fbe04cf2f8778d824c4;hp=2a3852720b4eddc1d243384f402834ecfb9609aa;hpb=9817903f2ee7b0a92e68fa1441412f1c80bb5f56;p=modules%2Fkernel.git diff --git a/bin/runSalome.py b/bin/runSalome.py index 2a3852720..172298f98 100755 --- a/bin/runSalome.py +++ b/bin/runSalome.py @@ -1,6 +1,6 @@ -#!/usr/bin/env python +#!/usr/bin/env python3 # -*- coding: iso-8859-1 -*- -# Copyright (C) 2007-2013 CEA/DEN, EDF R&D, OPEN CASCADE +# Copyright (C) 2007-2020 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 @@ -8,7 +8,7 @@ # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either -# version 2.1 of the License. +# version 2.1 of the License, or (at your option) any later version. # # This library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of @@ -32,8 +32,9 @@ import setenv from launchConfigureParser import verbose from server import process_id, Server import json -from salomeLauncherUtils import formatScriptsAndArgs import subprocess +from salomeContextUtils import ScriptAndArgsObjectEncoder +import platform # ----------------------------------------------------------------------------- @@ -41,7 +42,7 @@ from killSalome import killAllPorts def killLocalPort(): """ - kill servers from a previous SALOME exection, if needed, + kill servers from a previous SALOME execution, if needed, on the CORBA port given in args of runSalome """ @@ -50,13 +51,13 @@ def killLocalPort(): try: killMyPort(my_port) except: - print "problem in killLocalPort()" + print("problem in killLocalPort()") pass pass def givenPortKill(port): """ - kill servers from a previous SALOME exection, if needed, + kill servers from a previous SALOME execution, if needed, on the same CORBA port """ @@ -65,7 +66,7 @@ def givenPortKill(port): try: killMyPort(my_port) except: - print "problem in LocalPortKill(), killMyPort(%s)"%port + print("problem in LocalPortKill(), killMyPort(%s)"%port) pass pass @@ -89,21 +90,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) + print("INTERPSERVER::command = ", command) + import subprocess + pid = subprocess.Popen(command).pid process_id[pid]=self.CMD self.PID = pid @@ -116,7 +117,7 @@ def get_cata_path(list_modules,modules_root_dir): cata_path=[] for module in list_modules: - if modules_root_dir.has_key(module): + if module in modules_root_dir: module_root_dir=modules_root_dir[module] module_cata=module+"Catalog.xml" cata_file=os.path.join(module_root_dir, "share",setenv.salome_subdir, "resources",module.lower(), module_cata) @@ -134,23 +135,29 @@ def get_cata_path(list_modules,modules_root_dir): if os.path.exists(path): for cata_file in glob.glob(os.path.join(path,"*Catalog.xml")): module_name= os.path.basename(cata_file)[:-11] - if not modules_cata.has_key(module_name): + if module_name not in modules_cata: cata_path.append(cata_file) modules_cata[module_name]=cata_file return cata_path - - class CatalogServer(Server): def __init__(self,args): self.args=args self.initArgs() - self.SCMD1=['SALOME_ModuleCatalog_Server','-common'] + self.SCMD1=['SALOME_ModuleCatalog_Server'] + if 'launcher' in self.args: + pos = args['launcher'].find(":") + if pos != -1: + self.SCMD1+=['-ORBInitRef'] + machine = args['launcher'][0:pos] + port = args['launcher'][pos+1:] + self.SCMD1+=["NameService=corbaname::" + machine + ":" + port] + self.SCMD1+=['-common'] self.SCMD2=[] - home_dir=os.getenv('HOME') + home_dir=os.path.expanduser("~") if home_dir is not None: - self.SCMD2=['-personal',os.path.join(home_dir,'Salome/resources/CatalogModulePersonnel.xml')] + self.SCMD2=['-personal',os.path.join(home_dir,'Salome', 'resources', 'CatalogModulePersonnel.xml')] def setpath(self,modules_list,modules_root_dir): list_modules = modules_list[:] @@ -162,7 +169,7 @@ class CatalogServer(Server): cata_path=get_cata_path(list_modules,modules_root_dir) - self.CMD=self.SCMD1 + ['"' + string.join(cata_path,'"::"') + '"'] + self.SCMD2 + self.CMD=self.SCMD1 + ['"' + '"::"'.join(cata_path) + '"'] + self.SCMD2 # --- @@ -171,6 +178,13 @@ class SalomeDSServer(Server): self.args=args self.initArgs() self.CMD=['SALOMEDS_Server'] + if 'launcher' in self.args: + pos = args['launcher'].find(":") + if pos != -1: + self.CMD+=['-ORBInitRef'] + machine = args['launcher'][0:pos] + port = args['launcher'][pos+1:] + self.CMD+=["NameService=corbaname::" + machine + ":" + port] # --- @@ -179,6 +193,14 @@ class ConnectionManagerServer(Server): self.args=args self.initArgs() self.CMD=['SALOME_ConnectionManagerServer'] + if 'launcher' in self.args: + pos = args['launcher'].find(":") + if pos != -1: + self.CMD+=['-ORBInitRef'] + machine = args['launcher'][0:pos] + port = args['launcher'][pos+1:] + self.CMD+=["NameService=corbaname::" + machine + ":" + port] + # --- @@ -187,14 +209,37 @@ class RegistryServer(Server): self.args=args self.initArgs() self.CMD=['SALOME_Registry_Server', '--salome_session','theSession'] + if 'launcher' in self.args: + pos = args['launcher'].find(":") + if pos != -1: + self.CMD+=['-ORBInitRef'] + machine = args['launcher'][0:pos] + port = args['launcher'][pos+1:] + self.CMD+=["NameService=corbaname::" + machine + ":" + port] # --- class ContainerCPPServer(Server): - def __init__(self,args): + def __init__(self,args,with_gui=False): self.args=args self.initArgs() - self.CMD=['SALOME_Container','FactoryServer'] + self.CMD=['SALOME_Container'] + if 'launcher' in self.args: + pos = args['launcher'].find(":") + if pos != -1: + self.CMD+=['-ORBInitRef'] + machine = args['launcher'][0:pos] + port = args['launcher'][pos+1:] + self.CMD+=["NameService=corbaname::" + machine + ":" + port] + self.CMD+=['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 # --- @@ -202,19 +247,17 @@ 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, with_hostname=True, with_port=True) - print "===========================================================" - print "Logger server: put log to the file:" - print logfile - print "===========================================================" + print("===========================================================") + print("Logger server: put log to the file:") + print(logfile) + print("===========================================================") self.CMD=['SALOME_Logger_Server', logfile] pass pass # end of LoggerServer class @@ -229,15 +272,27 @@ class SessionServer(Server): # self.initArgs() self.SCMD1=['SALOME_Session_Server'] + if "SQUISH_PREFIX" in os.environ: + if platform.system() == "Windows" : + self.SCMD1 = [os.path.join(os.getenv("SQUISH_PREFIX"), "bin", "dllpreload.exe"),os.path.join(os.getenv("SQUISH_SALOME_PATH"), "W64", "GUI", "bin", "salome", self.SCMD1[0])] + else : + os.environ["LD_LIBRARY_PATH"] = os.environ["SQUISH_PREFIX"] + "/lib:" + os.environ["LD_LIBRARY_PATH"] self.SCMD2=[] + if 'launcher' in self.args: + pos = args['launcher'].find(":") + if pos != -1: + self.SCMD1+=['-ORBInitRef'] + machine = args['launcher'][0:pos] + port = args['launcher'][pos+1:] + self.SCMD1+=["NameService=corbaname::" + machine + ":" + port] if 'registry' in self.args['embedded']: self.SCMD1+=['--with','Registry', '(','--salome_session','theSession',')'] if 'moduleCatalog' in self.args['embedded']: self.SCMD1+=['--with','ModuleCatalog','(','-common'] - home_dir=os.getenv('HOME') + home_dir=os.path.expanduser("~") if home_dir is not None: - self.SCMD2+=['-personal',os.path.join(home_dir,'Salome/resources/CatalogModulePersonnel.xml')] + self.SCMD2+=['-personal',os.path.join(home_dir,'Salome','resources','CatalogModulePersonnel.xml')] self.SCMD2+=[')'] if 'study' in self.args['embedded']: self.SCMD2+=['--with','SALOMEDS','(',')'] @@ -251,29 +306,28 @@ class SessionServer(Server): if 'pyContainer' in self.args['standalone'] or 'pyContainer' in self.args['embedded']: raise Exception('Python containers no longer supported') if self.args['gui']: - session_gui = True - if self.args.has_key('session_gui'): - session_gui = self.args['session_gui'] - if session_gui: - self.SCMD2+=['GUI'] - if self.args['splash']: - self.SCMD2+=['SPLASH'] + session_gui = self.args.get('session_gui', True) + if not session_gui: + self.SCMD2+=['--hide-desktop'] + else: + if not self.args['splash']: + self.SCMD2+=['--hide-splash'] pass if self.args['study_hdf'] is not None: self.SCMD2+=['--study-hdf=%s'%self.args['study_hdf']] pass pass - if self.args.has_key('pyscript') and len(self.args['pyscript']) > 0: - msg = json.dumps(self.args['pyscript']) + if 'pyscript' in self.args and len(self.args['pyscript']) > 0: + msg = json.dumps(self.args['pyscript'], cls=ScriptAndArgsObjectEncoder) self.SCMD2+=['--pyscript=%s'%(msg)] pass pass pass if self.args['noexcepthandler']: - self.SCMD2+=['noexcepthandler'] - if self.args.has_key('user_config'): + self.SCMD2+=['--no-exception-handler'] + if 'user_config' in self.args: self.SCMD2+=['--resources=%s'%self.args['user_config']] - if self.args.has_key('modules'): + if 'modules' in self.args: list_modules = [] #keep only modules with GUI for m in modules_list: @@ -287,6 +341,8 @@ class SessionServer(Server): list_modules.reverse() self.SCMD2+=['--modules (%s)' % ":".join(list_modules)] pass + if 'language' in self.args: + self.SCMD2+=['--language=%s' % self.args['language']] pass def setpath(self,modules_list,modules_root_dir): @@ -299,14 +355,14 @@ class SessionServer(Server): cata_path=get_cata_path(list_modules,modules_root_dir) - if (self.args["gui"]) & ('moduleCatalog' in self.args['embedded']): + if ("gui" in self.args) & ('moduleCatalog' in self.args['embedded']): #Use '::' instead ":" because drive path with "D:\" is invalid on windows platform - self.CMD=self.SCMD1 + ['"' + string.join(cata_path,'"::"') + '"'] + self.SCMD2 + self.CMD=self.SCMD1 + ['"' + '"::"'.join(cata_path) + '"'] + self.SCMD2 else: self.CMD=self.SCMD1 + self.SCMD2 - if self.args.has_key('test'): + if 'test' in self.args: self.CMD+=['-test'] + self.args['test'] - elif self.args.has_key('play'): + elif 'play' in self.args: self.CMD+=['-play'] + self.args['play'] if self.args["gdb_session"] or self.args["ddd_session"]: @@ -348,8 +404,10 @@ class LauncherServer(Server): '(','--salome_session','theSession',')'] if 'moduleCatalog' in self.args['embedded']: self.SCMD1+=['--with','ModuleCatalog','(','-common'] - self.SCMD2+=['-personal', - '${HOME}/Salome/resources/CatalogModulePersonnel.xml',')'] + home_dir=os.path.expanduser("~") + if home_dir is not None: + self.SCMD2=['-personal',os.path.join(home_dir,'Salome','resources','CatalogModulePersonnel.xml')] + self.SCMD2+=[')'] if 'study' in self.args['embedded']: self.SCMD2+=['--with','SALOMEDS','(',')'] if 'cppContainer' in self.args['embedded']: @@ -365,26 +423,11 @@ class LauncherServer(Server): cata_path=get_cata_path(list_modules,modules_root_dir) - if (self.args["gui"]) & ('moduleCatalog' in self.args['embedded']): + if ("gui" in self.args) & ('moduleCatalog' in self.args['embedded']): #Use '::' instead ":" because drive path with "D:\" is invalid on windows platform - self.CMD=self.SCMD1 + ['"' + string.join(cata_path,'"::"') + '"'] + self.SCMD2 + self.CMD=self.SCMD1 + ['"' + '"::"'.join(cata_path) + '"'] + self.SCMD2 else: self.CMD=self.SCMD1 + self.SCMD2 - -class NotifyServer(Server): - def __init__(self,args,modules_root_dir): - self.args=args - self.initArgs() - self.modules_root_dir=modules_root_dir - myLogName = os.environ["LOGNAME"] - self.CMD=['notifd','-c', - self.modules_root_dir["KERNEL"] +'/share/salome/resources/kernel/channel.cfg', - '-DFactoryIORFileName=/tmp/'+myLogName+'_rdifact.ior', - '-DChannelIORFileName=/tmp/'+myLogName+'_rdichan.ior', - '-DReportLogFile=/tmp/'+myLogName+'_notifd.report', - '-DDebugLogFile=/tmp/'+myLogName+'_notifd.debug', - ] - # # ----------------------------------------------------------------------------- @@ -404,12 +447,12 @@ def startSalome(args, modules_list, modules_root_dir): """Launch all SALOME servers requested by args""" init_time = os.times() - if verbose(): print "startSalome ", args + if verbose(): print("startSalome ", args) # # Set server launch command # - if args.has_key('server_launch_mode'): + if 'server_launch_mode' in args: Server.set_server_launch_mode(args['server_launch_mode']) # @@ -437,6 +480,7 @@ def startSalome(args, modules_list, modules_root_dir): # clt=orbmodule.client(args) + addToPidict(args) # # Wake up session option @@ -468,15 +512,6 @@ def startSalome(args, modules_list, modules_root_dir): args["session_object"] = session return clt - # Save Naming service port name into - # the file args["ns_port_log_file"] - if args.has_key('ns_port_log_file'): - omniorbUserPath = os.getenv("OMNIORB_USER_PATH") - file_name = os.path.join(omniorbUserPath, args["ns_port_log_file"]) - f = open(file_name, "w") - f.write(os.environ['NSPORT']) - f.close() - # Launch Logger Server (optional) # and wait until it is registered in naming service # @@ -485,23 +520,16 @@ def startSalome(args, modules_list, modules_root_dir): myServer=LoggerServer(args) myServer.run() clt.waitLogger("Logger") - - # Notify Server launch - # - - if sys.platform != "win32": - if verbose(): print "Notify Server to launch" - - myServer=NotifyServer(args,modules_root_dir) - myServer.run() + addToPidict(args) # Launch Session Server (to show splash ASAP) # - if args["gui"]: + if args["gui"] and not args['launcher_only']: mySessionServ = SessionServer(args,args['modules'],modules_root_dir) mySessionServ.setpath(modules_list,modules_root_dir) mySessionServ.run() + addToPidict(args) # # Launch Registry Server, @@ -515,6 +543,7 @@ def startSalome(args, modules_list, modules_root_dir): clt.waitNS("/Registry") else: clt.waitNSPID("/Registry",myServer.PID) + addToPidict(args) # # Launch Catalog Server, @@ -530,37 +559,41 @@ def startSalome(args, modules_list, modules_root_dir): clt.waitNS("/Kernel/ModulCatalog",SALOME_ModuleCatalog.ModuleCatalog) else: clt.waitNSPID("/Kernel/ModulCatalog",cataServer.PID,SALOME_ModuleCatalog.ModuleCatalog) + addToPidict(args) # # Launch SalomeDS Server, # and wait until it is registered in naming service # - #print "ARGS = ",args + # print("ARGS = ",args) if ('study' not in args['embedded']) | (args["gui"] == 0): - print "RunStudy" + print("RunStudy") myServer=SalomeDSServer(args) myServer.run() if sys.platform == "win32": - clt.waitNS("/myStudyManager") + clt.waitNS("/Study") else: - clt.waitNSPID("/myStudyManager",myServer.PID) + clt.waitNSPID("/Study",myServer.PID) + addToPidict(args) # # Launch LauncherServer # - myCmServer = LauncherServer(args) - myCmServer.setpath(modules_list,modules_root_dir) - myCmServer.run() + if not 'launcher' in args: + myCmServer = LauncherServer(args) + myCmServer.setpath(modules_list,modules_root_dir) + myCmServer.run() + addToPidict(args) # # Launch ConnectionManagerServer # - myConnectionServer = ConnectionManagerServer(args) - myConnectionServer.run() - + if not args['launcher_only']: + myConnectionServer = ConnectionManagerServer(args) + myConnectionServer.run() from Utils_Identity import getShortHostName @@ -578,17 +611,13 @@ 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") else: clt.waitNSPID("/Containers/" + theComputer + "/FactoryServer",myServer.PID) - - # - # Launch local Python Container (FactoryServerPy), - # and wait until it is registered in naming service - # + addToPidict(args) if 'pyContainer' in args['standalone']: raise Exception('Python containers no longer supported') @@ -597,7 +626,7 @@ def startSalome(args, modules_list, modules_root_dir): # Wait until Session Server is registered in naming service # - if args["gui"]: + if args["gui"] and not args['launcher_only']: ##---------------- import Engines import SALOME @@ -610,16 +639,16 @@ def startSalome(args, modules_list, modules_root_dir): session=clt.waitNSPID("/Kernel/Session",mySessionServ.PID,SALOME.Session) args["session_object"] = session end_time = os.times() - if verbose(): print - print "Start SALOME, elapsed time : %5.1f seconds"% (end_time[4] - - init_time[4]) + if verbose(): print() + print("Start SALOME, elapsed time : %5.1f seconds"% (end_time[4] + - init_time[4])) # ASV start GUI without Loader #if args['gui']: # session.GetInterface() # - # additionnal external python interpreters + # additional external python interpreters # nbaddi=0 @@ -629,14 +658,14 @@ def startSalome(args, modules_list, modules_root_dir): except: import traceback traceback.print_exc() - print "-------------------------------------------------------------" - print "-- to get an external python interpreter:runSalome --interp=1" - print "-------------------------------------------------------------" + print("-------------------------------------------------------------") + print("-- to get an external python interpreter:runSalome --interp=1") + print("-------------------------------------------------------------") - if verbose(): print "additional external python interpreters: ", nbaddi + if verbose(): print("additional external python interpreters: ", nbaddi) if nbaddi: for i in range(nbaddi): - print "i=",i + print("i=",i) anInterp=InterpServer(args) anInterp.run() @@ -666,21 +695,21 @@ def useSalome(args, modules_list, modules_root_dir): except: import traceback traceback.print_exc() - print - print - print "--- Error during Salome launch ---" + print() + print() + print("--- Error during Salome launch ---") - #print process_id + # print(process_id) from addToKillList import addToKillList from killSalomeWithPort import getPiDict filedict = getPiDict(args['port']) - for pid, cmd in process_id.items(): + for pid, cmd in list(process_id.items()): addToKillList(pid, cmd, args['port']) pass - if verbose(): print """ + if verbose(): print(""" Saving of the dictionary of Salome processes in %s To kill SALOME processes from a console (kill all sessions from all ports): python killSalome.py @@ -692,7 +721,7 @@ def useSalome(args, modules_list, modules_root_dir): runSalome, with --killall option, starts with killing the processes resulting from the previous execution. - """%filedict + """%filedict) # # Print Naming Service directory list @@ -700,8 +729,8 @@ def useSalome(args, modules_list, modules_root_dir): if clt != None: if verbose(): - print - print " --- registered objects tree in Naming Service ---" + print() + print(" --- registered objects tree in Naming Service ---") clt.showNS() pass @@ -717,28 +746,38 @@ def useSalome(args, modules_list, modules_root_dir): self.killSalomeWithPort.killMyPort(self.port) return pass - args['shutdown_servers'] = __utils__(args['port']) + def func(s): + del s + import atexit + atexit.register(func, __utils__(args['port'])) pass pass # 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 'gui' in args and 'session_gui' in args: + if not args['gui'] or not args['session_gui']: + if 'study_hdf' in args: + toopen = args['study_hdf'] + if toopen: + import salome + salome.salome_init(path=toopen) + if 'pyscript' in args: toimport = args['pyscript'] - - command = formatScriptsAndArgs(toimport) + from salomeContextUtils import formatScriptsAndArgs + command = formatScriptsAndArgs(toimport, escapeSpaces=True) if command: proc = subprocess.Popen(command, shell=True) - proc.wait() + addToKillList(proc.pid, command, args['port']) + res = proc.wait() + if res: sys.exit(1) # if there's an error when executing script, we should explicitly exit return clt def execScript(script_path): - print 'executing', script_path - sys.path.insert(0, os.path.dirname(script_path)) - execfile(script_path,globals()) + print('executing', script_path) + sys.path.insert(0, os.path.realpath(os.path.dirname(script_path))) + exec(compile(open(script_path).read(), script_path, 'exec'),globals()) del sys.path[0] # ----------------------------------------------------------------------------- @@ -748,12 +787,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) @@ -776,40 +813,46 @@ def no_main(): # ----------------------------------------------------------------------------- -def main(): +def addToPidict(args): + global process_id + from addToKillList import addToKillList + for pid, cmd in list(process_id.items()): + addToKillList(pid, cmd, args['port']) + +# ----------------------------------------------------------------------------- + +def main(exeName=None): """Salome launch as a main application""" - ### TEMP >>> ### - if not os.getenv("OMNIORB_USER_PATH"): - homePath = os.path.realpath(os.path.expanduser('~')) - #defaultOmniorbUserPath = os.path.join(homePath, ".salomeConfig/USERS") - defaultOmniorbUserPath = homePath - if os.getenv("APPLI"): - defaultOmniorbUserPath = os.path.join(homePath, os.getenv("APPLI"), "USERS") - os.environ["OMNIORB_USER_PATH"] = defaultOmniorbUserPath - pass - ### <<< TEMP ### + # define folder to store omniorb config (initially in virtual application folder) + try: + from salomeContextUtils import setOmniOrbUserPath + setOmniOrbUserPath() + except Exception as e: + print(e) + sys.exit(1) from salome_utils import getHostName - print "runSalome running on %s" % getHostName() - args, modules_list, modules_root_dir = setenv.get_config() + keep_env = not os.getenv('SALOME_PLEASE_SETUP_ENVIRONMENT_AS_BEFORE') + args, modules_list, modules_root_dir = setenv.get_config(exeName=exeName, keepEnvironment=keep_env) + print("runSalome running on %s" % getHostName()) kill_salome(args) save_config = True - if args.has_key('save_config'): + if 'save_config' in args: save_config = args['save_config'] # -- test = True if args['wake_up_session']: test = False pass - if test: + if test and not 'launcher' in args: from searchFreePort import searchFreePort searchFreePort(args, save_config, args.get('useport')) pass # -- #setenv.main() - setenv.set_env(args, modules_list, modules_root_dir) + setenv.set_env(args, modules_list, modules_root_dir, keepEnvironment=keep_env) clt = useSalome(args, modules_list, modules_root_dir) return clt,args @@ -828,10 +871,12 @@ def foreGround(clt, args): dt = 0.1 nbtot = 100 nb = 0 + session_pid = None while 1: try: status = session.GetStatSession() gui_detected = status.activeGUI + session_pid = session.getPID() except: pass if gui_detected: @@ -851,9 +896,9 @@ def foreGround(clt, args): # -- server = Server({}) if sys.platform == "win32": - server.CMD = [os.getenv("PYTHONBIN"), "-m", "killSalomeWithPort", "--spy", "%s"%(os.getpid()), "%s"%(port)] + server.CMD = [os.getenv("PYTHONBIN"), "-m", "killSalomeWithPort", "--spy", "%s"%(session_pid or os.getpid()), "%s"%(port)] else: - server.CMD = ["killSalomeWithPort.py", "--spy", "%s"%(os.getpid()), "%s"%(port)] + server.CMD = ["killSalomeWithPort.py", "--spy", "%s"%(session_pid or os.getpid()), "%s"%(port)] server.run() # os.system("killSalomeWithPort.py --spy %s %s &"%(os.getpid(), port)) # -- @@ -877,13 +922,12 @@ def foreGround(clt, args): # def runSalome(): - import user clt,args = main() # -- test = args['gui'] and args['session_gui'] test = test or args['wake_up_session'] # -- - # The next test covers the --pinter option or var PYTHONINSPECT setted + # The next test covers the --pinter option or if var PYTHONINSPECT is set # -- test = test and not os.environ.get('PYTHONINSPECT') # -- @@ -896,13 +940,12 @@ def runSalome(): except: pass # -- - test = test and os.getenv("SALOME_TEST_MODE", "0") != "1" +# test = test and os.getenv("SALOME_TEST_MODE", "0") != "1" test = test and args['foreground'] # -- if test: foreGround(clt, args) pass - # -- pass #