--config=<file,folder,...>
==========================
Initialize SALOME context from a list of context files and/or a list
- of folders containing context files. The list is comma-separated, whithout
+ of folders containing context files. The list is comma-separated, without
any blank characters.
'''
"""
def __init__(self, configFileNames=0):
self.getLogger().setLevel(logging.INFO)
- #it could be None explicitely (if user use multiples setVariable...for standalone)
+ #it could be None explicitly (if user use multiples setVariable...for standalone)
if configFileNames is None:
return
configFileNames = configFileNames or []
self.getLogger().error("Unrecognized extension for configuration file: %s", filename)
#
- def __loadMPI(self, module_name):
- print "Trying to load MPI module: %s..."%module_name,
+ def __loadEnvModules(self, env_modules):
+ print("Trying to load env modules: %s..." % ' '.join(env_modules))
try:
- out, err = subprocess.Popen(["modulecmd", "python", "load", module_name], stdout=subprocess.PIPE).communicate()
- exec out # define specific environment variables
- print " OK"
+ out, err = subprocess.Popen(["modulecmd", "python", "load"] + env_modules, stdout=subprocess.PIPE).communicate()
+ exec(out) # define specific environment variables
+ print("OK")
except:
- print " ** Failed **"
+ print("** Failed **")
pass
#
import os
# Run this module as a script, in order to use appropriate Python interpreter
# according to current path (initialized from context files).
- mpi_module_option = "--with-mpi-module="
- mpi_module = [x for x in args if x.startswith(mpi_module_option)]
- if mpi_module:
- mpi_module = mpi_module[0][len(mpi_module_option):]
- self.__loadMPI(mpi_module)
- args = [x for x in args if not x.startswith(mpi_module_option)]
+ env_modules_option = "--with-env-modules="
+ env_modules_l = [x for x in args if x.startswith(env_modules_option)]
+ if env_modules_l:
+ env_modules = env_modules_l[-1][len(env_modules_option):].split(',')
+ self.__loadEnvModules(env_modules)
+ args = [x for x in args if not x.startswith(env_modules_option)]
else:
- mpi_module = os.getenv("SALOME_MPI_MODULE_NAME", None)
- if mpi_module:
- self.__loadMPI(mpi_module)
+ env_modules = os.getenv("SALOME_ENV_MODULES", None)
+ if env_modules:
+ self.__loadEnvModules(env_modules.split(','))
absoluteAppliPath = os.getenv('ABSOLUTE_APPLI_PATH','')
env_copy = os.environ.copy()
"""
Run SALOME!
- Args consist in a mandatory command followed by optionnal parameters.
+ Args consist in a mandatory command followed by optional parameters.
See usage for details on commands.
"""
def _startSalome(self, args):
try:
res = getattr(self, command)(options) # run appropriate method
- return res or (None, None)
- except SystemExit, returncode:
- if returncode != 0:
- self.getLogger().error("SystemExit %s in method %s.", returncode, command)
- return returncode
+ return res or 0
+ except SystemExit as ex:
+ if ex.code != 0:
+ self.getLogger().error("SystemExit %s in method %s.", ex.code, command)
+ return ex.code
except StandardError:
self.getLogger().error("Unexpected error:")
import traceback
import runSalome
runSalome.runSalome()
+ return 0
#
def _setContext(self, args=None):
print "*** SALOME context has already been set."
print "*** Enter 'exit' (only once!) to leave SALOME context."
print "***"
- return
+ return 0
os.environ["SALOME_CONTEXT_SET"] = "yes"
print "***"
cmd = ["/bin/bash"]
proc = subprocess.Popen(cmd, shell=False, close_fds=True)
- return proc.communicate()
+ proc.communicate()
+ return proc.returncode
#
def _runSession(self, args=None):
ports = args
if not ports:
print "Port number(s) not provided to command: salome kill <port(s)>"
- return
+ return 1
from multiprocessing import Process
from killSalomeWithPort import killMyPort
p = Process(target = killMyPort, args=(port,))
p.start()
p.join()
- pass
+ return 0
#
def _killAll(self, unused=None):
from killSalome import killAllPorts
killAllPorts()
pass
+ return 0
#
def _runTests(self, args=None):
if "-h" in args or "--help" in args:
print usage + epilog
- return
+ return 0
if "-p" in args or "--ports" in args:
import PortManager
if "-v" in args or "--version" in args:
print "Running with python", platform.python_version()
- self._runAppli(["--version"])
+ return self._runAppli(["--version"])
+
+ return 0
#
def _showDoc(self, args=None):
modules = args
if not modules:
print "Module(s) not provided to command: salome doc <module(s)>"
- return
+ return 1
appliPath = os.getenv("ABSOLUTE_APPLI_PATH")
if not appliPath:
context = pickle.loads(sys.argv[1])
args = pickle.loads(sys.argv[2])
- context._startSalome(args)
+ status = context._startSalome(args)
+ sys.exit(status)
else:
usage()
#