Salome HOME
Windows compatibility.
[modules/yacs.git] / bin / appli_gen.py
old mode 100644 (file)
new mode 100755 (executable)
index 4e04d1d..0dbab54
@@ -1,6 +1,6 @@
 #! /usr/bin/env python
 #  -*- coding: iso-8859-1 -*-
-# Copyright (C) 2007-2016  CEA/DEN, EDF R&D, OPEN CASCADE
+# Copyright (C) 2007-2017  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
@@ -51,6 +51,8 @@ samples_tag = "samples"
 extra_tests_tag = "extra_tests"
 extra_test_tag = "extra_test"
 resources_tag = "resources"
+env_modules_tag = "env_modules"
+env_module_tag = "env_module"
 
 # --- names of attributes in XML configuration file
 nam_att  = "name"
@@ -69,6 +71,7 @@ class xml_parser:
         self.config["modules"] = []
         self.config["guimodules"] = []
         self.config["extra_tests"] = []
+        self.config["env_modules"] = []
         parser = xml.sax.make_parser()
         parser.setContentHandler(self)
         parser.parse(fileName)
@@ -126,6 +129,12 @@ class xml_parser:
                 self.config["guimodules"].append(nam)
                 pass
             pass
+        # --- if we are analyzing "env_module" element then store its "name" attribute
+        elif self.space == [appli_tag, env_modules_tag, env_module_tag] and \
+                nam_att in attrs.getNames():
+            nam = attrs.getValue( nam_att )
+            self.config["env_modules"].append(nam)
+            pass
         # --- if we are analyzing "extra_test" element then store its "name" and "path" attributes
         elif self.space == [appli_tag,extra_tests_tag,extra_test_tag] and \
             nam_att in attrs.getNames() and \
@@ -190,8 +199,9 @@ def install(prefix, config_file, verbose=0):
         print inst.args
         print "Configure parser: error in configuration file %s" % filename
         pass
-    except:
+    except Exception as e:
         print "Configure parser: Error : can not read configuration file %s, check existence and rights" % filename
+        print(e)
         pass
 
     if verbose:
@@ -244,7 +254,7 @@ def install(prefix, config_file, verbose=0):
                'getAppliPath.py',
                'kill_remote_containers.py',
                'runRemote.sh',
-               'salome',
+               '.salome_run',
                'update_catalogs.py',
                '.bashrc',
                ):
@@ -256,6 +266,19 @@ def install(prefix, config_file, verbose=0):
         pass
 
 
+    # Copy salome script 
+    salome_script = open(os.path.join(appliskel_dir, "salome")).read()
+    salome_file = os.path.join(home_dir, "salome")
+    try:
+        os.remove(salome_file)
+    except:
+        pass
+    env_modules = [m.encode('utf8') for m in _config.get('env_modules', [])]
+    with open(salome_file, 'w') as fd:
+        fd.write(salome_script.replace('MODULES = []', 'MODULES = {}'.format(env_modules)))
+    os.chmod(salome_file, 0o755)
+
+
     # Add .salome-completion.sh file
     shutil.copyfile(os.path.join(appliskel_dir, ".salome-completion.sh"),
                     os.path.join(home_dir, ".salome-completion.sh"))
@@ -285,7 +308,7 @@ def install(prefix, config_file, verbose=0):
                         os.path.join(home_dir, 'sha1_collections.txt'))
         pass
     else:
-        print "WARNING: context file does not exist"
+        print "WARNING: sha1 collections file does not exist"
         pass
 
     if _config.has_key("system_conf_path") and os.path.isfile(_config["system_conf_path"]):