Salome HOME
Fixed problem with dump study and small optimization:
[modules/kernel.git] / bin / salomeContext.py
index b2fdc14bfcf04fd8fe1130d9e1faccce8294087f..c5eda0a516aae432bd351660860b6baa6970c852 100644 (file)
@@ -85,6 +85,7 @@ class SalomeContext:
   to .cfg format before setting the context.
   """
   def __init__(self, configFileNames=0):
+    self.getLogger().setLevel(logging.INFO)
     #it could be None explicitely (if user use multiples setVariable...for standalone)
     if configFileNames is None:
        return
@@ -142,8 +143,8 @@ class SalomeContext:
     absoluteAppliPath = os.getenv('ABSOLUTE_APPLI_PATH','')
     env_copy = os.environ.copy()
     proc = subprocess.Popen(['python', os.path.join(absoluteAppliPath,"bin","salome","salomeContext.py"), pickle.dumps(self), pickle.dumps(args)], shell=False, close_fds=True, env=env_copy)
-    msg = proc.communicate()
-    return msg, proc.returncode
+    out, err = proc.communicate()
+    return out, err, proc.returncode
   #
 
   """Append value to PATH environment variable"""
@@ -293,7 +294,8 @@ class SalomeContext:
       file_base = os.path.basename(filename)
       base_no_ext, ext = os.path.splitext(file_base)
       sh_file = os.path.join(file_dir, base_no_ext+'.sh')
-      if ext == ".cfg" and os.path.isfile(sh_file):
+      #if ext == ".cfg" and os.path.isfile(sh_file):
+      if False:
         msg += "Found similar %s file; trying to parse this one instead..."%(base_no_ext+'.sh')
         temp = tempfile.NamedTemporaryFile(suffix='.cfg')
         try:
@@ -445,6 +447,24 @@ class SalomeContext:
     return runTests.runTests(args, exe="salome test")
   #
 
+  def _showSoftwareVersions(self):
+    config = ConfigParser.SafeConfigParser()
+    absoluteAppliPath = os.getenv('ABSOLUTE_APPLI_PATH')
+    filename = os.path.join(absoluteAppliPath, ".softwares_versions")
+    try:
+      config.read(filename)
+      sections = config.sections()
+      for section in sections:
+        entries = config.items(section, raw=True) # do not use interpolation
+        for key,val in entries:
+          version,text = [ x.strip() for x in val.split(',') ]
+          print "%s: %s"%(text, version)
+    except:
+      import traceback
+      traceback.print_exc()
+      return
+    pass
+
   def _showInfo(self, args=None):
     if args is None:
       args = []
@@ -453,7 +473,8 @@ class SalomeContext:
     epilog  = """\n
 Display some information about SALOME.\n
 Available options are:
-    -p,--ports        Show list of busy ports (running SALOME instances).
+    -p,--ports        Show the list of busy ports (running SALOME instances).
+    -s,--softwares    Show the list and versions of SALOME softwares.
     -v,--version      Show running SALOME version.
     -h,--help         Show this message.
 """
@@ -471,6 +492,9 @@ Available options are:
       if ports:
         print "Last started instance on port %s"%ports[-1]
 
+    if "-s" in args or "--softwares" in args:
+      self._showSoftwareVersions()
+
     if "-v" in args or "--version" in args:
       print "Running with python", platform.python_version()
       self._runAppli(["--version"])