Salome HOME
#19007 [CEA][Windows] SALOME non regression tests on Windows: fix KERNEL_SALOME_COMMA...
[modules/kernel.git] / bin / setenv.py
index 693a51feb09365dfcd52bab439c2f341c3846b62..2fc8b06d302da835c7bc874bcc880bf81d94f20a 100755 (executable)
@@ -1,6 +1,6 @@
-#!/usr/bin/env python
+#!/usr/bin/env python3
 #  -*- coding: iso-8859-1 -*-
-# Copyright (C) 2007-2016  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
@@ -39,29 +39,21 @@ salome_subdir = "salome"
 
 def add_path(directory, variable_name):
     """Function helper to add environment variables"""
-    if sys.platform == "win32":
-      splitsym = ";"
-    else:
-      splitsym = ":"
-    if not os.environ.has_key(variable_name):
+    if variable_name not in os.environ:
         os.environ[variable_name] = ""
         pass
     if os.path.exists(directory):
         newpath=[]
-        for _dir in os.environ[variable_name].split(splitsym):
+        for _dir in os.environ[variable_name].split(os.pathsep):
             if os.path.exists(_dir):
-                if sys.platform != "win32":
-                    if not os.path.samefile(_dir, directory):
-                        newpath.append(_dir)
-                else:
+                if not os.path.samefile(_dir, directory):
                     newpath.append(_dir)
             else:
                 if os.path.abspath(_dir) != os.path.abspath(directory):
                   newpath.append(_dir)
             pass
-        import string
         newpath[:0] = [ directory ]
-        newpath = string.join(newpath, splitsym)
+        newpath = os.pathsep.join(newpath)
         os.environ[variable_name] = newpath
         if variable_name == "PYTHONPATH":
             sys.path[:0] = [os.path.realpath(directory)]
@@ -78,7 +70,7 @@ def get_lib_dir():
 
 # -----------------------------------------------------------------------------
 
-def get_config(silent=False, exeName=None):
+def get_config(silent=False, exeName=None, keepEnvironment=True):
     """
     Get list of modules, paths.
 
@@ -89,24 +81,17 @@ def get_config(silent=False, exeName=None):
 
     # read args from launch configure xml file and command line options
 
-    #*** Test additional option
-    #*** import optparse
-    #*** help_str = "Test options addition."
-    #*** o_j = optparse.Option("-j", "--join", action="store_true", dest="join", help=help_str)
 
     import launchConfigureParser
-    args = launchConfigureParser.get_env(exeName=exeName)
+    args = launchConfigureParser.get_env(exeName=exeName, keepEnvironment=keepEnvironment)
 
-    #*** Test additional option
-    #*** args = launchConfigureParser.get_env([o_j])
-    #*** if args.has_key("join"): print args["join"]
 
     # Check variables <module>_ROOT_DIR
     # and set list of used modules (without KERNEL)
 
     modules_list = []
-    if args.has_key("modules"):
-        modules_list += args["modules"]
+    if "modules" in args:
+        modules_list += [a for a in args["modules"] if a.strip()]
     # KERNEL must be last in the list to locate it at the first place in PATH
     if args["gui"] :
         modules_list[:0] = ["GUI"]
@@ -118,14 +103,14 @@ def get_config(silent=False, exeName=None):
     to_remove_list=[]
     for module in modules_list :
         module_variable=module+"_ROOT_DIR"
-        if not os.environ.has_key(module_variable):
+        if module_variable not in os.environ:
             if not silent:
-                print "*******************************************************"
-                print "*"
-                print "* Environment variable",module_variable,"must be set"
-                print "* Module", module, "will be not available"
-                print "*"
-                print "********************************************************"
+                print("*******************************************************")
+                print("*")
+                print("* Environment variable",module_variable,"must be set")
+                print("* Module", module, "will be not available")
+                print("*")
+                print("********************************************************")
                 pass
             to_remove_list.append(module)
             continue
@@ -148,12 +133,19 @@ def get_config(silent=False, exeName=None):
 
 # -----------------------------------------------------------------------------
 
-def set_env(args, modules_list, modules_root_dir, silent=False):
+def set_env(args, modules_list, modules_root_dir, silent=False, keepEnvironment=True):
     """Add to the PATH-variables modules specific paths"""
 
     import os
     from salome_utils import getLogDir, generateFileName, makeTmpDir, getPortNumber
 
+    if 'launcher' in args:
+      pos = args['launcher'].find(":")
+      if pos != -1:
+        machine = args['launcher'][0:pos]
+        port = args['launcher'][pos+1:]
+        os.environ["NSPORT"] = port
+
     # create temporary directory for environment files needed by modules from the list
     port = getPortNumber(False)
     if port:
@@ -168,86 +160,83 @@ def set_env(args, modules_list, modules_root_dir, silent=False):
       os.putenv('SALOME_BATCH','0')
     if args["gui"] :
         modules_list = modules_list[:] + ["GUI"]
-    modules_list = modules_list[:] + ["KERNEL"]
-    for module in modules_list :
-        if modules_root_dir.has_key(module):
-            module_root_dir = modules_root_dir[module]
-            if module_root_dir not in modules_root_dir_list:
-              modules_root_dir_list[:0] = [module_root_dir]
-            if sys.platform == "win32":
-              add_path(os.path.join(module_root_dir,get_lib_dir(),salome_subdir),
-                     "PATH")
-            elif sys.platform == "darwin":
-              add_path(os.path.join(module_root_dir,get_lib_dir(),salome_subdir),
-                     "DYLD_LIBRARY_PATH")
-            else:
-              add_path(os.path.join(module_root_dir,get_lib_dir(),salome_subdir),
-                     "LD_LIBRARY_PATH")
-            add_path(os.path.join(module_root_dir,"bin",salome_subdir),
-                     "PATH")
-            if os.path.exists(module_root_dir + "/examples") :
-                add_path(os.path.join(module_root_dir,"examples"),
+    if not keepEnvironment:
+        modules_list = modules_list[:] + ["KERNEL"]
+        for module in modules_list :
+            if module in modules_root_dir:
+                module_root_dir = modules_root_dir[module]
+                if module_root_dir not in modules_root_dir_list:
+                  modules_root_dir_list[:0] = [module_root_dir]
+                if sys.platform == "win32":
+                  add_path(os.path.join(module_root_dir,get_lib_dir(),salome_subdir),
+                         "PATH")
+                elif sys.platform == "darwin":
+                  add_path(os.path.join(module_root_dir,get_lib_dir(),salome_subdir),
+                         "DYLD_LIBRARY_PATH")
+                else:
+                  add_path(os.path.join(module_root_dir,get_lib_dir(),salome_subdir),
+                         "LD_LIBRARY_PATH")
+                add_path(os.path.join(module_root_dir,"bin",salome_subdir),
+                         "PATH")
+                if os.path.exists(os.path.join(module_root_dir, "examples")):
+                    add_path(os.path.join(module_root_dir,"examples"),
+                             "PYTHONPATH")
+                    pass
+                add_path(os.path.join(module_root_dir,"bin",salome_subdir),
                          "PYTHONPATH")
-                pass
-            add_path(os.path.join(module_root_dir,"bin",salome_subdir),
-                     "PYTHONPATH")
-            # add lib before site-packages to load script instead of dll if any (win32 platform)
-            add_path(os.path.join(module_root_dir,get_lib_dir(),salome_subdir),
-                     "PYTHONPATH")
-            add_path(os.path.join(module_root_dir,get_lib_dir(),
-                                  python_version,"site-packages",
-                                  salome_subdir),
-                     "PYTHONPATH")
-            import platform
-            if platform.machine() == "x86_64":
-                add_path(os.path.join(module_root_dir,"lib64",
+                # add lib before site-packages to load script instead of dll if any (win32 platform)
+                add_path(os.path.join(module_root_dir,get_lib_dir(),salome_subdir),
+                         "PYTHONPATH")
+                add_path(os.path.join(module_root_dir,get_lib_dir(),
                                       python_version,"site-packages",
                                       salome_subdir),
                          "PYTHONPATH")
-                pass
-            add_path(os.path.join(module_root_dir,get_lib_dir(),
-                                  python_version,"site-packages",
-                                  salome_subdir,
-                                  "shared_modules"),
-                     "PYTHONPATH")
-
-            # set environment by modules from the list
-            if port:
-                try:
-                    mod=__import__(module.lower()+"_setenv")
-                    mod.set_env(args)
+                import platform
+                if platform.machine() == "x86_64":
+                    add_path(os.path.join(module_root_dir,"lib64",
+                                          python_version,"site-packages",
+                                          salome_subdir),
+                             "PYTHONPATH")
                     pass
-                except:
+                add_path(os.path.join(module_root_dir,get_lib_dir(),
+                                      python_version,"site-packages",
+                                      salome_subdir,
+                                      "shared_modules"),
+                         "PYTHONPATH")
+
+                # set environment by modules from the list
+                if port:
+                    try:
+                        mod=__import__(module.lower()+"_setenv")
+                        mod.set_env(args)
+                        pass
+                    except:
+                        pass
                     pass
                 pass
             pass
-        pass
 
-    if sys.platform == 'win32':
-        os.environ["SALOMEPATH"]=";".join(modules_root_dir_list)
-    else:
-        os.environ["SALOMEPATH"]=":".join(modules_root_dir_list)
+        if sys.platform == 'win32':
+            os.environ["SALOMEPATH"]=";".join(modules_root_dir_list)
+        else:
+            os.environ["SALOMEPATH"]=":".join(modules_root_dir_list)
 
+        pass
     # set trace environment variable
 
-    if not os.environ.has_key("SALOME_trace"):
+    if "SALOME_trace" not in os.environ:
         os.environ["SALOME_trace"]="local"
     if args['file']:
         os.environ["SALOME_trace"]="file:"+args['file'][0]
     if args['logger']:
         os.environ["SALOME_trace"]="with_logger"
 
-    # set resources variables if not yet set
-
-    os.environ["CSF_SALOMEDS_ResourcesDefaults"] \
-    = os.path.join(modules_root_dir["KERNEL"],"share",
-                   salome_subdir,"resources","kernel")
-
 # -----------------------------------------------------------------------------
 
 def main(silent=False, exeName=None):
-    args, modules_list, modules_root_dir = get_config(silent=silent, exeName=exeName)
-    set_env(args, modules_list, modules_root_dir, silent=silent)
+    keep_env = not os.getenv('SALOME_PLEASE_SETUP_ENVIRONMENT_AS_BEFORE')
+    args, modules_list, modules_root_dir = get_config(silent=silent, exeName=exeName, keepEnvironment=keep_env)
+    set_env(args, modules_list, modules_root_dir, silent=silent, keepEnvironment=keep_env)
     return args
 
 # -----------------------------------------------------------------------------