1 #! /usr/bin/env python3
2 # Copyright (C) 2007-2019 CEA/DEN, EDF R&D, OPEN CASCADE
4 # This library is free software; you can redistribute it and/or
5 # modify it under the terms of the GNU Lesser General Public
6 # License as published by the Free Software Foundation; either
7 # version 2.1 of the License, or (at your option) any later version.
9 # This library is distributed in the hope that it will be useful,
10 # but WITHOUT ANY WARRANTY; without even the implied warranty of
11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 # Lesser General Public License for more details.
14 # You should have received a copy of the GNU Lesser General Public
15 # License along with this library; if not, write to the Free Software
16 # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
18 # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
21 import os, sys, string
22 from salome_utils import getLogDir, generateFileName, uniteFiles
23 from setenv import add_path, get_lib_dir, salome_subdir
25 # -----------------------------------------------------------------------------
28 """Add to the PATH-variables modules specific paths"""
30 python_version="python%d.%d" % sys.version_info[0:2]
33 env_dir = generateFileName( tmp_dir, prefix="env", with_port=True )
34 res_dir = os.path.join( os.getenv( "GEOM_ROOT_DIR" ), "share", salome_subdir, "resources", "geom" )
36 csf_list = ["Plugin", "GEOMDS_Resources", "ShHealing"]
39 uniteFiles( os.path.join( res_dir, csf ), os.path.join( env_dir, csf ) )
40 csf_var = "CSF_%sDefaults" % csf
41 if not os.getenv( csf_var ):
42 os.environ[ csf_var ] = env_dir
48 resource_path_list = []
51 plugin_list.append("BREPPlugin")
52 plugin_list.append("STEPPlugin")
53 plugin_list.append("IGESPlugin")
54 plugin_list.append("STLPlugin")
55 plugin_list.append("XAOPlugin")
56 plugin_list.append("VTKPlugin")
57 plugin_list.append("AdvancedGEOM")
59 # find additional plugins
60 for env_var in os.environ:
61 value = os.environ[env_var]
62 if env_var[-9:] == "_ROOT_DIR" and value:
64 plugin = env_var[:-9] # plugin name may have wrong case
66 # look for NAMEOFPlugin.xml file among resource files
67 resource_dir = os.path.join(plugin_root, "share", salome_subdir, "resources", plugin.lower())
68 if not os.access(resource_dir, os.F_OK): continue
70 for resource_file in os.listdir(resource_dir):
71 if resource_file.endswith(".xml") and \
72 resource_file.lower() == plugin.lower() + ".xml":
73 # use "name" attribute of "geom-plugin" as name of plugin in a right case
75 from xml.dom.minidom import parse
76 xml_doc = parse(os.path.join(resource_dir, resource_file))
77 plugin_nodes = xml_doc.getElementsByTagName("geom-plugin")
78 if not plugin_nodes or not plugin_nodes[0].hasAttribute("name"): continue
80 plugin = plugin_nodes[0].getAttribute("name")
81 if plugin in plugin_list: continue
83 plugin_list.append(plugin)
86 if "SALOME_"+plugin+"Resources" not in os.environ:
87 resource_path = os.path.join(plugin_root, "share", salome_subdir, "resources", plugin.lower())
88 os.environ["SALOME_"+plugin+"Resources"] = resource_path
89 resource_path_list.append(resource_path)
90 add_path(os.path.join(plugin_root, get_lib_dir(), python_version, "site-packages", salome_subdir), "PYTHONPATH")
91 add_path(os.path.join(plugin_root, get_lib_dir(), salome_subdir), "PYTHONPATH")
92 if sys.platform == "win32":
93 add_path(os.path.join(plugin_root, get_lib_dir(), salome_subdir), "PATH")
94 add_path(os.path.join(plugin_root, "bin", salome_subdir), "PYTHONPATH")
96 add_path(os.path.join(plugin_root, get_lib_dir(), salome_subdir), "LD_LIBRARY_PATH")
97 add_path(os.path.join(plugin_root, "bin", salome_subdir), "PYTHONPATH")
98 add_path(os.path.join(plugin_root, "bin", salome_subdir), "PATH")
109 os.environ["GEOM_PluginsList"] = ":".join(plugin_list)
110 os.environ["SalomeAppConfig"] = os.environ["SalomeAppConfig"] + psep + psep.join(resource_path_list)