Salome HOME
#19007 [CEA][Windows] SALOME non regression tests on Windows: fix KERNEL_SALOME_COMMA...
[modules/kernel.git] / bin / setenv.py
index ec968d5e3963d8fe6902e93af37238435dbad597..2fc8b06d302da835c7bc874bcc880bf81d94f20a 100755 (executable)
@@ -1,6 +1,6 @@
 #!/usr/bin/env python3
 #  -*- coding: iso-8859-1 -*-
-# Copyright (C) 2007-2019  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,28 +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 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
         newpath[:0] = [ directory ]
-        newpath = splitsym.join(newpath)
+        newpath = os.pathsep.join(newpath)
         os.environ[variable_name] = newpath
         if variable_name == "PYTHONPATH":
             sys.path[:0] = [os.path.realpath(directory)]
@@ -77,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.
 
@@ -90,7 +83,7 @@ def get_config(silent=False, exeName=None):
 
 
     import launchConfigureParser
-    args = launchConfigureParser.get_env(exeName=exeName)
+    args = launchConfigureParser.get_env(exeName=exeName, keepEnvironment=keepEnvironment)
 
 
     # Check variables <module>_ROOT_DIR
@@ -140,7 +133,7 @@ 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
@@ -167,66 +160,68 @@ 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 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"),
+    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 "SALOME_trace" not in os.environ:
@@ -239,8 +234,9 @@ def set_env(args, modules_list, modules_root_dir, silent=False):
 # -----------------------------------------------------------------------------
 
 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
 
 # -----------------------------------------------------------------------------