Salome HOME
Restore registering CORBA objects, removed by previous wrong commit
[modules/kernel.git] / bin / appli_gen.py
index 5b6ee5411479c0ac8a7a70a27341877a97dee372..4c64c7a79b8a234254d55d6ee4ba961521a7ad48 100644 (file)
@@ -1,6 +1,6 @@
 #! /usr/bin/env python
 #  -*- coding: iso-8859-1 -*-
-# Copyright (C) 2007-2014  CEA/DEN, EDF R&D, OPEN CASCADE
+# Copyright (C) 2007-2016  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
@@ -19,7 +19,7 @@
 # License along with this library; if not, write to the Free Software
 # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
 #
-# See http://www.salome-platform.org or email : webmaster.salome@opencascade.com
+# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 #
 
 ## \file appli_gen.py
@@ -32,12 +32,12 @@ Typical use with options is:
   python %(prog)s --verbose --prefix=<install directory> --config=<configuration file>
 """
 
-import argparse
 import os
 import sys
 import shutil
 import virtual_salome
 import xml.sax
+import optparse
 
 # --- names of tags in XML configuration file
 appli_tag   = "application"
@@ -47,6 +47,8 @@ system_conf_tag  = "system_conf"
 modules_tag = "modules"
 module_tag  = "module"
 samples_tag = "samples"
+extra_tests_tag = "extra_tests"
+extra_test_tag = "extra_test"
 resources_tag = "resources"
 
 # --- names of attributes in XML configuration file
@@ -65,6 +67,7 @@ class xml_parser:
         self.config = {}
         self.config["modules"] = []
         self.config["guimodules"] = []
+        self.config["extra_tests"] = []
         parser = xml.sax.make_parser()
         parser.setContentHandler(self)
         parser.parse(fileName)
@@ -118,6 +121,15 @@ class xml_parser:
                 self.config["guimodules"].append(nam)
                 pass
             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 \
+            path_att in attrs.getNames():
+            nam = attrs.getValue( nam_att )
+            path = attrs.getValue( path_att )
+            self.config["extra_tests"].append(nam)
+            self.config[nam]=path
+            pass
         pass
 
     def endElement(self, name):
@@ -182,6 +194,13 @@ def install(prefix, config_file, verbose=0):
             print cle, val
             pass
 
+    # Remove CTestTestfile.cmake; this file will be filled by successive calls to link_module and link_extra_test
+    try:
+      ctest_file = os.path.join(home_dir, 'bin', 'salome', 'test', "CTestTestfile.cmake")
+      os.remove(ctest_file)
+    except:
+      pass
+
     for module in _config.get("modules", []):
         if _config.has_key(module):
             print "--- add module ", module, _config[module]
@@ -189,21 +208,37 @@ def install(prefix, config_file, verbose=0):
             options.verbose = verbose
             options.clear = 0
             options.prefix = home_dir
-            options.module = _config[module]
+            options.module_name = module
+            options.module_path = _config[module]
             virtual_salome.link_module(options)
             pass
         pass
 
+    for extra_test in _config.get("extra_tests", []):
+        if _config.has_key(extra_test):
+            print "--- add extra test ", extra_test, _config[extra_test]
+            options = params()
+            options.verbose = verbose
+            options.clear = 0
+            options.prefix = home_dir
+            options.extra_test_name = extra_test
+            options.extra_test_path = _config[extra_test]
+            virtual_salome.link_extra_test(options)
+            pass
+        pass
+
+    # Generate CTestCustom.cmake to handle long output
+    ctest_custom = os.path.join(home_dir, 'bin', 'salome', 'test', "CTestCustom.cmake")
+    with open(ctest_custom, 'w') as f:
+      f.write("SET(CTEST_CUSTOM_MAXIMUM_PASSED_TEST_OUTPUT_SIZE 1048576) # 1MB\n")
+      f.write("SET(CTEST_CUSTOM_MAXIMUM_FAILED_TEST_OUTPUT_SIZE 1048576) # 1MB\n")
+
     appliskel_dir = os.path.join(home_dir, 'bin', 'salome', 'appliskel')
 
     for fn in ('envd',
                'getAppliPath.py',
                'kill_remote_containers.py',
-               'runAppli',           # OBSOLETE (replaced by salome)
-               'runConsole',         # OBSOLETE (replaced by salome)
                'runRemote.sh',
-               'runSalomeScript',
-               'runSession',         # OBSOLETE (replaced by salome)
                'salome',
                'update_catalogs.py',
                '.bashrc',
@@ -215,11 +250,17 @@ def install(prefix, config_file, verbose=0):
         shutil.copyfile(filename, os.path.join(home_dir,"config_appli.xml"))
         pass
 
+
+    # Add .salome-completion.sh file
+    shutil.copyfile(os.path.join(appliskel_dir, ".salome-completion.sh"),
+                    os.path.join(home_dir, ".salome-completion.sh"))
+
+
     # Creation of env.d directory
     virtual_salome.mkdir(os.path.join(home_dir,'env.d'))
 
     if _config.has_key("prereq_path") and os.path.isfile(_config["prereq_path"]):
-        shutil.copyfile(_config["prereq_path"], 
+        shutil.copyfile(_config["prereq_path"],
                         os.path.join(home_dir, 'env.d', 'envProducts.sh'))
         pass
     else:
@@ -235,11 +276,10 @@ def install(prefix, config_file, verbose=0):
         pass
 
     if _config.has_key("system_conf_path") and os.path.isfile(_config["system_conf_path"]):
-        shutil.copyfile(_config["system_conf_path"], 
+        shutil.copyfile(_config["system_conf_path"],
                         os.path.join(home_dir, 'env.d', 'envConfSystem.sh'))
         pass
 
-
     # Create environment file: configSalome.sh
     with open(os.path.join(home_dir, 'env.d', 'configSalome.sh'),'w') as f:
         for module in _config.get("modules", []):
@@ -326,19 +366,18 @@ MMGT_REENTRANT=1
     os.chmod(users_dir, 0777)
 
 def main():
-    parser = argparse.ArgumentParser(usage=usage)
+    parser = optparse.OptionParser(usage=usage)
 
-    parser.add_argument('--prefix', default='.', metavar="<install directory>",
-                      help="Installation directory (default %(default)s)")
+    parser.add_option('--prefix', dest="prefix", default='.',
+                      help="Installation directory (default .)")
 
-    parser.add_argument('--config', default='config_appli.xml',
-                      metavar="<configuration file>",
-                      help="XML configuration file (default %(default)s)")
+    parser.add_option('--config', dest="config", default='config_appli.xml',
+                      help="XML configuration file (default config_appli.xml)")
 
-    parser.add_argument('-v', '--verbose', action='count', 
+    parser.add_option('-v', '--verbose', action='count', dest='verbose',
                       default=0, help="Increase verbosity")
 
-    options = parser.parse_args()
+    options, args = parser.parse_args()
     if not os.path.exists(options.config):
         print "ERROR: config file %s does not exist. It is mandatory." % options.config
         sys.exit(1)