]> SALOME platform Git repositories - modules/kernel.git/commitdiff
Salome HOME
[bos #32522][EDF] SALOME on Demand. Added starting salome with only installed on...
authorKonstantin Leontev <konstantin.leontev@opencascade.com>
Thu, 22 Dec 2022 14:18:57 +0000 (17:18 +0300)
committerKonstantin LEONTEV <konstantin.leontev@opencascade.com>
Wed, 8 Mar 2023 12:46:28 +0000 (13:46 +0100)
bin/SalomeOnDemandTK/Base_env.py
bin/SalomeOnDemandTK/GEOM_env.py
bin/SalomeOnDemandTK/PYHELLO_env.py
bin/SalomeOnDemandTK/SMESH_and_plugins_env.py
bin/SalomeOnDemandTK/extension_utilities.py
bin/launchConfigureParser.py
bin/runSalome.py
bin/runSalomeCommon.py
bin/runSalomeOnDemand.py

index 98f7a564c488c4d5bb87014a5a86a016b94b358f..db19eb288c76ef57a97c81f8df312bfaff3373f9 100644 (file)
@@ -47,4 +47,4 @@ def init(context, root_dir):
     if reinitialise_paths:
         context.setVariable('SalomeAppConfig', gui_res_dir, overwrite=True)
     else:
-        context.addToPath('SalomeAppConfig', gui_res_dir, separator=':')
+        context.addToVariable('SalomeAppConfig', gui_res_dir, separator=':')
index b08b07357ad7afbb3ec031550cb54409fc3a2196..7912bbf87f3c32f3ecd54ff1f6d3fdf8cc50cd60 100644 (file)
@@ -35,7 +35,7 @@ def init(context, root_dir):
     context.setVariable('PARALLEL_VISU', '1', overwrite=True)
 
     geom_res_dir = os.path.join(geom_root_dir, 'share', 'salome', 'resources', 'geom')
-    context.addToPath('SalomeAppConfig', geom_res_dir, separator=':')
+    context.addToVariable('SalomeAppConfig', geom_res_dir, separator=':')
     context.setVariable('GEOM_PluginsList',
         'BREPPlugin:STEPPlugin:IGESPlugin:STLPlugin:XAOPlugin:VTKPlugin:AdvancedGEOM',
         overwrite=True)
index 7e23aacc019a6d15ca0cc69839d18e45738ae022..0fa0788136318c0db07d619d4d256d28758053a8 100644 (file)
@@ -31,7 +31,7 @@ def init(context, root_dir):
     context.addToPythonPath(os.path.join(pyhello_root_dir, 'bin', 'salome'))
     context.addToPythonPath(os.path.join(pyhello_root_dir, 'lib', 'salome'))
     context.addToPythonPath(os.path.join(pyhello_root_dir, python_libdir, 'salome'))
-    context.addToPath('SALOME_MODULES', 'PYHELLO', separator=',')
+    context.addToVariable('SALOME_MODULES', 'PYHELLO', separator=',')
 
     pyhello_res_dir = os.path.join(pyhello_root_dir, 'share', 'salome', 'resources', 'pyhello')
-    context.addToPath('SalomeAppConfig', pyhello_res_dir, separator=':')
+    context.addToVariable('SalomeAppConfig', pyhello_res_dir, separator=':')
index 26cd9a1507db435375c90004546b938cdf7834e8..10cde6887b37ab1cff9a89fee10aed2eeda1ab52 100644 (file)
@@ -39,7 +39,7 @@ def init(context, root_dir):
         context.addToVariable('SMESH_MeshersList', 'StdMeshers', separator=':')
 
     smesh_res_dir = os.path.join(smesh_root_dir, 'share', 'salome', 'resources', 'smesh')
-    context.addToPath('SalomeAppConfig', smesh_res_dir, separator=':')
+    context.addToVariable('SalomeAppConfig', smesh_res_dir, separator=':')
 
     #[gmsh]
     gmsh_root_dir = os.path.join(root_dir, 'gmsh')
@@ -59,4 +59,4 @@ def init(context, root_dir):
 
     netgenplugin_res_dir = os.path.join(netgenplugin_root_dir,
         'share', 'salome', 'resources', 'netgenplugin')
-    context.addToPath('SalomeAppConfig', netgenplugin_res_dir, separator=':')
+    context.addToVariable('SalomeAppConfig', netgenplugin_res_dir, separator=':')
index ebfa9c519c3666e37d0487f2c25af24351f23e1a..f60c80efd3754a90f6337bd937fe45046b3ca50e 100644 (file)
@@ -37,9 +37,6 @@ import logging
 import json
 from traceback import format_exc
 
-# Setup logger's output
-FORMAT = '%(funcName)s():%(lineno)s: %(message)s'
-logging.basicConfig(format=FORMAT, level=logging.DEBUG)
 logger = logging.getLogger()
 
 SALOME_EXTDIR = '__SALOME_EXT__'
index 42c90e6f4d4fd9542d7683b4a1fa63795285696a..fde0362886a9005fa1fe8a4b122265076a560c71 100644 (file)
@@ -85,6 +85,7 @@ salomecfgname  = "salome"
 salomeappname  = "SalomeApp"
 script_nam     = "pyscript"
 verbosity_nam  = "verbosity"
+on_demand_nam  = "on_demand"
 
 # possible choices for the "embedded" and "standalone" parameters
 embedded_choices   = [ "registry", "study", "moduleCatalog", "cppContainer", "SalomeAppEngine" ]
@@ -92,7 +93,7 @@ standalone_choices = [ "registry", "study", "moduleCatalog", "cppContainer"]
 
 # values of boolean type (must be '0' or '1').
 # xml_parser.boolValue() is used for correct setting
-boolKeys = ( gui_nam, splash_nam, logger_nam, file_nam, xterm_nam, portkill_nam, killall_nam, except_nam, pinter_nam, shutdown_servers_nam, launcher_only_nam )
+boolKeys = ( gui_nam, splash_nam, logger_nam, file_nam, xterm_nam, portkill_nam, killall_nam, except_nam, pinter_nam, shutdown_servers_nam, launcher_only_nam, on_demand_nam )
 intKeys = ( interp_nam, )
 strKeys = ( launcher_nam )
 
@@ -827,6 +828,17 @@ Python file arguments, if any, must be comma-separated (without blank characters
                       default="0",
                       help=help_str)
 
+    # On demand
+    help_str  = "Use installed salome on-demand extensions."
+    help_str += "0 to run without salome extensions [default], "
+    help_str += "1 to run only installed salome extensions. "
+    pars.add_argument("--on-demand",
+                      dest="on_demand",
+                      metavar="<0/1>",
+                      action=StoreBooleanAction,
+                      default=False,
+                      help=help_str)
+
 
     # Positional arguments (hdf file, python file)
     pars.add_argument("arguments", nargs=argparse.REMAINDER)
@@ -1046,6 +1058,7 @@ def get_env(appname=salomeappname, cfgname=salomecfgname, exeName=None, keepEnvi
         args[script_nam] = new_args
 
     args[verbosity_nam] = cmd_opts.verbosity
+    args[on_demand_nam] = cmd_opts.on_demand
 
     # xterm
     if cmd_opts.xterm is not None:
index eb6fa9a1b07bb02fc7d468d56d99c62bb6e4f765..6094707b499292f629db757da41db49de3fb2687 100755 (executable)
@@ -33,6 +33,8 @@ from salomeContextUtils import ScriptAndArgsObjectEncoder
 import runSalomeNoServer
 import runSalomeCommon
 import platform
+import runSalomeOnDemand
+from launchConfigureParser import verbosity_nam, on_demand_nam
 import logging
 logger = logging.getLogger()
 
@@ -81,7 +83,7 @@ def startSalome(args, modules_list, modules_root_dir):
         mySessionServ.run()
         ior_fakens_filename = mySessionServ.iorfakens
         logger.debug("Rendez-vous file for to retrieve IOR of session is \"{}\"".format(ior_fakens_filename))
-    
+
     end_time = os.times()
 
     #
@@ -175,9 +177,15 @@ def main(exeName=None):
     """Salome launch as a main application"""
     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)
-    runSalomeCommon.setVerbose(args["verbosity"])
+    runSalomeCommon.setVerbose(args[verbosity_nam])
+
     kill_salome(args)
     # --
+
+    # Setup extension's env in salome on demand case
+    if args[on_demand_nam]:
+        runSalomeOnDemand.set_ext_env()
+
     setenv.set_env(args, modules_list, modules_root_dir, keepEnvironment=keep_env)
     ior_fakens_filename = useSalome(args, modules_list, modules_root_dir)
     # Management of -t <script.py>
@@ -200,7 +208,7 @@ def main(exeName=None):
         proc = subprocess.Popen(command, shell=True, env = env)
         addToKillList(proc.pid, command)
         res = proc.wait()
-        if res: sys.exit(1) 
+        if res: sys.exit(1)
     return args, ior_fakens_filename
 
 # -----------------------------------------------------------------------------
index 7ff22727dc9b530a240d82e45a53a27de97688ff..63b3c8d8dca97f79b5b3f550a8dd8a5132c362f3 100755 (executable)
@@ -34,6 +34,11 @@ import subprocess
 from salomeContextUtils import ScriptAndArgsObjectEncoder
 import platform
 import logging
+
+# Setting formatter in setVerbose() was commented because adding of handler
+# breaks using of root logger in other modules and cause many double lines in logs.
+FORMAT = '%(levelname)s : %(asctime)s : [%(filename)s:%(funcName)s:%(lineno)s] : %(message)s'
+logging.basicConfig(format=FORMAT, force=True)
 logger = logging.getLogger()
 
 class ColoredFormatter(logging.Formatter):
@@ -66,20 +71,20 @@ class BackTraceFormatter(logging.Formatter):
         return logging.Formatter.format(self, record)
 
 def setVerbose(verbose):
-    from packaging import version
-    current_version = version.parse("{}.{}".format(sys.version_info.major,sys.version_info.minor))
-    version_ref = version.parse("3.5.0")
-    global logger
-    formatter = None
-    if current_version >= version_ref:
-        formatter = BackTraceFormatter('%(levelname)s : %(asctime)s : %(message)s ',style='%')
-    else:
-        formatter = logging.Formatter('%(levelname)s : %(asctime)s : %(message)s ',style='%')
-    formatter.default_time_format = '%H:%M:%S'
-    formatter.default_msec_format = "%s.%03d"
-    stream_handler = logging.StreamHandler()
-    stream_handler.setFormatter(formatter)
-    logger.addHandler(stream_handler)
+    from packaging import version
+    current_version = version.parse("{}.{}".format(sys.version_info.major,sys.version_info.minor))
+    version_ref = version.parse("3.5.0")
+    global logger
+    formatter = None
+    if current_version >= version_ref:
+        formatter = BackTraceFormatter('%(levelname)s : %(asctime)s : %(message)s ',style='%')
+    else:
+        formatter = logging.Formatter('%(levelname)s : %(asctime)s : %(message)s ',style='%')
+    formatter.default_time_format = '%H:%M:%S'
+    formatter.default_msec_format = "%s.%03d"
+    stream_handler = logging.StreamHandler()
+    stream_handler.setFormatter(formatter)
+    logger.addHandler(stream_handler)
 
     verbose_map = { "0": logging.WARNING, "1": logging.INFO, "2": logging.DEBUG}
     if verbose in verbose_map:
@@ -356,7 +361,7 @@ class CommonSessionServer(Server):
     @abc.abstractmethod
     def getSessionServerExe(self):
         pass
-    
+
     def setpath(self,modules_list,modules_root_dir):
         list_modules = modules_list[:]
         list_modules.reverse()
@@ -407,7 +412,7 @@ class SessionServer(CommonSessionServer):
         super().__init__(args,modules_list,modules_root_dir)
         import KernelBasis
         KernelBasis.setSSLMode(False)
-    
+
     def getSessionServerExe(self):
         return "SALOME_Session_Server"
 # ---
index 3a0272ee9b1a31f7b1172303ea4be92f62f22c5c..47351851b878050f2bb84b9fe5a4362796073995 100755 (executable)
@@ -33,7 +33,6 @@ import os
 import sys
 import importlib.util
 from pathlib import Path
-import runSalome
 import salomeContext
 from SalomeOnDemandTK.extension_utilities import logger, \
     DFILE_EXT, SALOME_EXTDIR, \
@@ -73,7 +72,7 @@ def module_from_filename(filename):
     return module
 
 
-def set_ext_env(app_name, version):
+def set_ext_env(app_name='', version=''):
     """
     Set an environment to start SALOME as a set of extensions.
 
@@ -88,7 +87,7 @@ def set_ext_env(app_name, version):
     logger.debug('Set an env for app: %s, version: %s...', app_name, version)
 
     # Get the root directory
-    levels_up = 2
+    levels_up = 4
     app_root = str(Path(__file__).resolve().parents[levels_up - 1])
     logger.debug('App root: %s', app_root)
 
@@ -123,10 +122,8 @@ def set_ext_env(app_name, version):
 
 if __name__ == "__main__":
     if len(sys.argv) == 3:
-        arg_1, arg_2 = sys.argv[1:] # pylint: disable=unbalanced-tuple-unpacking
+        arg_1, arg_2 = sys.argv[1:]
         set_ext_env(arg_1, arg_2)
-
-        runSalome.runSalome()
     else:
         logger.error('You must provide all the arguments!')
         logger.info(set_ext_env.__doc__)