Salome HOME
Windows compatibility.
[modules/yacs.git] / bin / appli_gen.py
old mode 100644 (file)
new mode 100755 (executable)
index 4c64c7a..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
@@ -43,6 +43,7 @@ import optparse
 appli_tag   = "application"
 prereq_tag  = "prerequisites"
 context_tag = "context"
+sha1_collect_tag = "sha1_collections"
 system_conf_tag  = "system_conf"
 modules_tag = "modules"
 module_tag  = "module"
@@ -50,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"
@@ -68,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)
@@ -93,6 +97,10 @@ class xml_parser:
         if self.space == [appli_tag, context_tag] and path_att in attrs.getNames():
             self.config["context_path"] = attrs.getValue( path_att )
             pass
+        # --- if we are analyzing "sha1_collection" element then store its "path" attribute
+        if self.space == [appli_tag, sha1_collect_tag] and path_att in attrs.getNames():
+            self.config["sha1_collect_path"] = attrs.getValue( path_att )
+            pass
         # --- if we are analyzing "system_conf" element then store its "path" attribute
         if self.space == [appli_tag, system_conf_tag] and path_att in attrs.getNames():
             self.config["system_conf_path"] = attrs.getValue( path_att )
@@ -121,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 \
@@ -185,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:
@@ -239,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',
                ):
@@ -251,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"))
@@ -275,6 +303,14 @@ def install(prefix, config_file, verbose=0):
         print "WARNING: context file does not exist"
         pass
 
+    if _config.has_key("sha1_collect_path") and os.path.isfile(_config["sha1_collect_path"]):
+        shutil.copyfile(_config["sha1_collect_path"],
+                        os.path.join(home_dir, 'sha1_collections.txt'))
+        pass
+    else:
+        print "WARNING: sha1 collections file does not exist"
+        pass
+
     if _config.has_key("system_conf_path") and os.path.isfile(_config["system_conf_path"]):
         shutil.copyfile(_config["system_conf_path"],
                         os.path.join(home_dir, 'env.d', 'envConfSystem.sh'))