]> SALOME platform Git repositories - tools/sat.git/commitdiff
Salome HOME
fix #10458
authorChristian Van Wambeke <christian.van-wambeke@cea.fr>
Wed, 21 Mar 2018 08:50:05 +0000 (09:50 +0100)
committerChristian Van Wambeke <christian.van-wambeke@cea.fr>
Wed, 21 Mar 2018 08:50:05 +0000 (09:50 +0100)
commands/compile.py
commands/generate.py
src/environment.py
src/fileEnviron.py

index 2859abdd02ae4cbc65057811190bb3e4825d1168..0f4d13f299cc2dfd6cb7acd35e6634b3e2f5363d 100644 (file)
@@ -299,8 +299,10 @@ def compile_all_products(sat, config, options, products_infos, logger):
         logger.flush()
 
         # Do nothing if the product is not compilable
-        if ("properties" in p_info and "compilation" in p_info.properties and 
-                                            p_info.properties.compilation == "no"):
+        if ("properties" in p_info and
+            "compilation" in p_info.properties and
+            p_info.properties.compilation == "no"):
+
             log_step(logger, header, "ignored")
             logger.write("\n", 3, False)
             continue
@@ -340,18 +342,18 @@ def compile_all_products(sat, config, options, products_infos, logger):
         # Check if sources was already successfully installed
         check_source = src.product.check_source(p_info)
         if not check_source:
-            logger.write(_("Sources of product not found (try 'sat -h prepare')\n"))
+            logger.write(_("Sources of product not found (try 'sat -h prepare') "))
             res += 1 #BUG
             continue
         
         # Check if it was already successfully installed
         if src.product.check_installation(p_info):
-            logger.write(_("Already installed\n"))
+            logger.write(_("Already installed "))
             continue
         
         # If the show option was called, do not launch the compilation
         if options.no_compile:
-            logger.write(_("Not installed\n"))
+            logger.write(_("Not installed "))
             continue
         
         # Check if the dependencies are installed
index c1c66c756fe9b1c42c550726fdb1ea151ac9d2cd..f0d1175fb666385b64c0ac93eaa8a874a55a387b 100644 (file)
@@ -23,6 +23,7 @@ import imp
 import subprocess
 
 import src
+import src.debug as DBG
 
 parser = src.options.Options()
 parser.add_option('p', 'products', 'list2', 'products',
index c69f377e4b06f9b6227672f928b896fdcd55b2eb..650efe59e9e8830f85ad2ef1c9c6776fa63cafdd 100644 (file)
@@ -22,6 +22,8 @@ import string
 import sys
 
 import src
+import src.debug as DBG
+import pprint as PP
 
 class Environ:
     '''Class to manage the environment context
@@ -40,9 +42,7 @@ class Environ:
     def __repr__(self):
         """easy non exhaustive quick resume for debug print
         """
-        res={}
-        res["environ"]=self.environ
-        return self.__class__.__name__ + str(res)[0:-1] + " ...etc...}"
+        return "%s(\n%s\n)" % (self.__class__.__name__, PP.pformat(self.environ))
 
     def _expandvars(self, value):
         '''replace some $VARIABLE into its actual value in the environment
@@ -191,11 +191,13 @@ class SalomeEnviron:
         self.silent = False
 
     def __repr__(self):
-        """easy non exhaustive quick resume for debug print"""
-        res={}
-        res["environ"]=str(self.environ)
-        res["forBuild"]=self.forBuild
-        return self.__class__.__name__ + str(res)[0:-1] + " ...etc...}"
+        """easy almost exhaustive quick resume for debug print"""
+        res = {
+          "environ" : self.environ,
+          "forBuild" : self.forBuild,
+          "for_package" : self.for_package,
+        }
+        return "%s(\n%s\n)" % (self.__class__.__name__, PP.pformat(res))
 
     def append(self, key, value, sep=os.pathsep):
         '''append value to key using sep
@@ -333,6 +335,13 @@ class SalomeEnviron:
         :param logger Logger: The logger instance to display messages
         """
         
+        # add variable PRODUCT_ROOT_DIR as $workdir in APPLICATION.environ section if not present
+        try: 
+          tmp = self.cfg.APPLICATION.environ.PRODUCT_ROOT_DIR
+        except:
+          self.cfg.APPLICATION.environ.PRODUCT_ROOT_DIR = src.pyconf.Reference(self.cfg, src.pyconf.DOLLAR, "workdir")
+          DBG.write("set_application_env add default Config.APPLICATION.environ.PRODUCT_ROOT_DIR", self.cfg.APPLICATION.environ)
+          
         # Set the variables defined in the "environ" section
         if 'environ' in self.cfg.APPLICATION:
             # we write PRODUCT environment it in order to conform to 
@@ -363,6 +372,7 @@ class SalomeEnviron:
         :param logger Logger: The logger instance to display messages        
         """
         # set root dir
+        DBG.write("set_salome_minimal_product_env", product_info)
         root_dir = product_info.name + "_ROOT_DIR"
         if not self.is_defined(root_dir):
             if 'install_dir' in product_info and product_info.install_dir:
@@ -677,6 +687,8 @@ class SalomeEnviron:
         :param logger Logger: The logger instance to display messages
         :param env_info list: the list of products
         """
+        DBG.write("set_full_environ for", env_info)
+        # DBG.write("set_full_environ config", self.cfg.APPLICATION.environ, True)
         # set product environ
         self.set_application_env(logger)
 
index 10cefbc7d8da68d79ee1288e40cf541a44083d76..8ff7a2f913e4e35e29ba3c36f11d2818c0a0d93d 100644 (file)
@@ -17,6 +17,8 @@
 #  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
 
 import os
+import pprint as PP
+import src.debug as DBG
 
 bat_header="""@echo off
 
@@ -97,7 +99,7 @@ def get_file_environ(output, shell, environ=None):
         return ContextFileEnviron(output, environ)
     raise Exception("FileEnviron: Unknown shell = %s" % shell)
 
-class FileEnviron:
+class FileEnviron(object):
     """Base class for shell environment
     """
     def __init__(self, output, environ=None):
@@ -108,6 +110,15 @@ class FileEnviron:
         """
         self._do_init(output, environ)
 
+    def __repr__(self):
+        """easy non exhaustive quick resume for debug print"""
+        res = {
+          "output" : self.output,
+          "environ" : self.environ,
+        }
+        return "%s(\n%s\n)" % (self.__class__.__name__, PP.pformat(res))
+        
+
     def _do_init(self, output, environ=None):
         """Initialization
         
@@ -117,9 +128,13 @@ class FileEnviron:
         self.output = output
         self.toclean = []
         if environ is not None:
+            #if str(type(environ)) == "<type 'instance'>":
+            if id(environ) == id(os.environ):
+               DBG.tofix("set %s environ as python os.environ, are you sure it is safe ?" % self.__class__.__name__, True)
             self.environ = environ
         else:
-            self.environ = os.environ
+            DBG.tofix("set %s environ as COPY of python os.environ, are you sure it is safe ?" % self.__class__.__name__, True)
+            self.environ = dict(os.environ) #make a copy cvw 180320
 
     def add_line(self, number):
         """Add some empty lines in the shell file