- SCMD1=['SALOME_Session_Server']
- SCMD2=[]
- if 'registry' in args['embedded']:
- SCMD1+=['--with','Registry','(','--salome_session','theSession',')']
- if 'moduleCatalog' in args['embedded']:
- SCMD1+=['--with','ModuleCatalog','(','-common']
- SCMD2+=['-personal','${HOME}/Salome/resources/CatalogModulePersonnel.xml',')']
- if 'study' in args['embedded']:
- SCMD2+=['--with','SALOMEDS','(',')']
- if 'cppContainer' in args['embedded']:
- SCMD2+=['--with','Container','(','FactoryServer',')']
-
- def setpath(self,modules_list):
- cata_path=[]
- list_modules = modules_list[:]
- list_modules.reverse()
- for module in ["KERNEL"] + list_modules:
- module_root_dir=modules_root_dir[module]
- module_cata=module+"Catalog.xml"
- print " ", module_cata
- cata_path.extend(glob.glob(os.path.join(module_root_dir,"share",args['appname'],"resources",module_cata)))
- if 'moduleCatalog' in args['embedded']:
- self.CMD=self.SCMD1 + [string.join(cata_path,':')] + self.SCMD2
- else:
- self.CMD=self.SCMD1 + self.SCMD2
+ def __init__(self,args,modules_list,modules_root_dir):
+ self.args = args.copy()
+ # Bug 11512 (Problems with runSalome --xterm on Mandrake and Debian Sarge)
+ #self.args['xterm']=0
+ #
+ self.initArgs()
+ self.SCMD1=['SALOME_Session_Server']
+ self.SCMD2=[]
+ 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')
+ 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']:
+ self.SCMD2+=['--with','Container','(','FactoryServer',')']
+ if 'SalomeAppEngine' in self.args['embedded']:
+ self.SCMD2+=['--with','SalomeAppEngine','(',')']
+
+ if 'cppContainer' in self.args['standalone'] or 'cppContainer' in self.args['embedded']:
+ self.SCMD2+=['CPP']
+ 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']
+ pass
+ 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'])
+ self.SCMD2+=['--pyscript=%s'%(msg)]
+ pass
+ pass
+ pass
+ if self.args['noexcepthandler']:
+ self.SCMD2+=['noexcepthandler']
+ if self.args.has_key('user_config'):
+ self.SCMD2+=['--resources=%s'%self.args['user_config']]
+ if self.args.has_key('modules'):
+ list_modules = []
+ #keep only modules with GUI
+ for m in modules_list:
+ if m not in modules_root_dir:
+ list_modules.insert(0,m)
+ else:
+ fr1 = os.path.join(modules_root_dir[m],"share","salome","resources",m.lower(),"SalomeApp.xml")
+ fr2 = os.path.join(modules_root_dir[m],"share","salome","resources","SalomeApp.xml")
+ if os.path.exists(fr1) or os.path.exists(fr2):
+ list_modules.insert(0,m)
+ list_modules.reverse()
+ self.SCMD2+=['--modules (%s)' % ":".join(list_modules)]
+ pass
+ pass
+
+ def setpath(self,modules_list,modules_root_dir):
+ list_modules = modules_list[:]
+ list_modules.reverse()
+ if self.args["gui"] :
+ list_modules = ["KERNEL", "GUI"] + list_modules
+ else :
+ list_modules = ["KERNEL"] + list_modules
+
+ cata_path=get_cata_path(list_modules,modules_root_dir)
+
+ if (self.args["gui"]) & ('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
+ else:
+ self.CMD=self.SCMD1 + self.SCMD2
+ if self.args.has_key('test'):
+ self.CMD+=['-test'] + self.args['test']
+ elif self.args.has_key('play'):
+ self.CMD+=['-play'] + self.args['play']
+
+ if self.args["gdb_session"] or self.args["ddd_session"]:
+ f = open(".gdbinit4salome", "w")
+ f.write("set args ")
+ args = " ".join(self.CMD[1:])
+ args = args.replace("(", "\(")
+ args = args.replace(")", "\)")
+ f.write(args)
+ f.write("\n")
+ f.close()
+ if self.args["ddd_session"]:
+ self.CMD = ["ddd", "--command=.gdbinit4salome", self.CMD[0]]
+ elif self.args["gdb_session"]:
+ self.CMD = ["xterm", "-e", "gdb", "--command=.gdbinit4salome", self.CMD[0]]
+ pass
+ pass
+
+ if self.args["valgrind_session"]:
+ l = ["valgrind"]
+ val = os.getenv("VALGRIND_OPTIONS")
+ if val:
+ l += val.split()
+ pass
+ self.CMD = l + self.CMD
+ pass
+
+# ---
+
+class LauncherServer(Server):
+ def __init__(self,args):
+ self.args=args
+ self.initArgs()
+ self.SCMD1=['SALOME_LauncherServer']
+ self.SCMD2=[]
+ if args["gui"] :
+ if 'registry' in self.args['embedded']:
+ self.SCMD1+=['--with','Registry',
+ '(','--salome_session','theSession',')']
+ if 'moduleCatalog' in self.args['embedded']:
+ self.SCMD1+=['--with','ModuleCatalog','(','-common']
+ self.SCMD2+=['-personal',
+ '${HOME}/Salome/resources/CatalogModulePersonnel.xml',')']
+ if 'study' in self.args['embedded']:
+ self.SCMD2+=['--with','SALOMEDS','(',')']
+ if 'cppContainer' in self.args['embedded']:
+ self.SCMD2+=['--with','Container','(','FactoryServer',')']
+
+ def setpath(self,modules_list,modules_root_dir):
+ list_modules = modules_list[:]
+ list_modules.reverse()
+ if self.args["gui"] :
+ list_modules = ["KERNEL", "GUI"] + list_modules
+ else :
+ list_modules = ["KERNEL"] + list_modules
+
+ cata_path=get_cata_path(list_modules,modules_root_dir)
+
+ if (self.args["gui"]) & ('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
+ else:
+ self.CMD=self.SCMD1 + self.SCMD2