Salome HOME
sat source: Adding the application environment when getting sources of a product
authorSerge Rehbinder <serge.rehbinder@cea.fr>
Wed, 21 Sep 2016 07:56:48 +0000 (09:56 +0200)
committerSerge Rehbinder <serge.rehbinder@cea.fr>
Wed, 21 Sep 2016 07:56:48 +0000 (09:56 +0200)
commands/source.py
src/system.py

index 79068ce667d27289aae617f5d5c0002388b86e07..8ca970d57e8c8c92ccb67917c4b444a99d02fefc 100644 (file)
@@ -60,7 +60,12 @@ def get_source_for_dev(config, product_info, source_dir, logger, pad):
     
     return retcode
 
-def get_source_from_git(product_info, source_dir, logger, pad, is_dev=False):
+def get_source_from_git(product_info,
+                        source_dir,
+                        logger,
+                        pad,
+                        is_dev=False,
+                        environ = None):
     '''The method called if the product is to be get in git mode
     
     :param product_info Config: The configuration specific to 
@@ -70,6 +75,8 @@ def get_source_from_git(product_info, source_dir, logger, pad, is_dev=False):
     :param logger Logger: The logger instance to use for the display and logging
     :param pad int: The gap to apply for the terminal display
     :param is_dev boolean: True if the product is in development mode
+    :param environ src.environment.Environ: The environment to source when
+                                                extracting.
     :return: True if it succeed, else False
     :rtype: boolean
     '''
@@ -99,7 +106,7 @@ def get_source_from_git(product_info, source_dir, logger, pad, is_dev=False):
     # Call the system function that do the extraction in git mode
     retcode = src.system.git_extract(repo_git,
                                  product_info.git_info.tag,
-                                 source_dir, logger)
+                                 source_dir, logger, environ)
     return retcode
 
 def get_source_from_archive(product_info, source_dir, logger):
@@ -138,7 +145,13 @@ def get_source_from_archive(product_info, source_dir, logger):
     
     return retcode
 
-def get_source_from_cvs(user, product_info, source_dir, checkout, logger, pad):
+def get_source_from_cvs(user,
+                        product_info,
+                        source_dir,
+                        checkout,
+                        logger,
+                        pad,
+                        environ = None):
     '''The method called if the product is to be get in cvs mode
     
     :param user str: The user to use in for the cvs command
@@ -149,6 +162,8 @@ def get_source_from_cvs(user, product_info, source_dir, checkout, logger, pad):
     :param checkout boolean: If True, get the source in checkout mode
     :param logger Logger: The logger instance to use for the display and logging
     :param pad int: The gap to apply for the terminal display
+    :param environ src.environment.Environ: The environment to source when
+                                                extracting.
     :return: True if it succeed, else False
     :rtype: boolean
     '''
@@ -196,10 +211,15 @@ def get_source_from_cvs(user, product_info, source_dir, checkout, logger, pad):
                                  product_info.cvs_info.product_base,
                                  product_info.cvs_info.tag,
                                  product_info.cvs_info.source,
-                                 source_dir, logger, checkout)
+                                 source_dir, logger, checkout, environ)
     return retcode
 
-def get_source_from_svn(user, product_info, source_dir, checkout, logger):
+def get_source_from_svn(user,
+                        product_info,
+                        source_dir,
+                        checkout,
+                        logger,
+                        environ = None):
     '''The method called if the product is to be get in svn mode
     
     :param user str: The user to use in for the svn command
@@ -209,6 +229,8 @@ def get_source_from_svn(user, product_info, source_dir, checkout, logger):
                             directory where to put the sources
     :param checkout boolean: If True, get the source in checkout mode
     :param logger Logger: The logger instance to use for the display and logging
+    :param environ src.environment.Environ: The environment to source when
+                                                extracting.
     :return: True if it succeed, else False
     :rtype: boolean
     '''
@@ -228,7 +250,8 @@ def get_source_from_svn(user, product_info, source_dir, checkout, logger):
                                      product_info.svn_info.tag,
                                      source_dir, 
                                      logger, 
-                                     checkout)
+                                     checkout,
+                                     environ)
     return retcode
 
 def get_product_sources(config, 
@@ -252,6 +275,14 @@ def get_product_sources(config,
     :return: True if it succeed, else False
     :rtype: boolean
     '''
+    
+    # Get the application environment
+    logger.write(_("Set the application environment\n"), 5)
+    env_appli = src.environment.SalomeEnviron(config,
+                                      src.environment.Environ(dict(os.environ)))
+    env_appli.set_application_env(logger)
+    
+    # Call the right function to get sources regarding the product settings
     if not checkout and is_dev:
         return get_source_for_dev(config, 
                                    product_info, 
@@ -261,7 +292,7 @@ def get_product_sources(config,
 
     if product_info.get_source == "git":
         return get_source_from_git(product_info, source_dir, logger, pad, 
-                                    is_dev)
+                                    is_dev,env_appli)
 
     if product_info.get_source == "archive":
         return get_source_from_archive(product_info, source_dir, logger)
@@ -273,13 +304,15 @@ def get_product_sources(config,
                                     source_dir, 
                                     checkout, 
                                     logger,
-                                    pad)
+                                    pad,
+                                    env_appli)
 
     if product_info.get_source == "svn":
         svn_user = config.USER.svn_user
         return get_source_from_svn(svn_user, product_info, source_dir, 
                                     checkout,
-                                    logger)
+                                    logger,
+                                    env_appli)
 
     if product_info.get_source == "native":
         # skip
index 1969bacaa22c914738a333cadc5cfb8607252b38..78e9946b6f50f4ca4c5050e9f3af9ad3731786c0 100644 (file)
@@ -51,13 +51,15 @@ def show_in_editor(editor, filePath, logger):
                                              % filePath), 1)
 
 
-def git_extract(from_what, tag, where, logger):
+def git_extract(from_what, tag, where, logger, environment=None):
     '''Extracts sources from a git repository.
     
     :param from_what str: The remote git repository.
     :param tag str: The tag.
     :param where str: The path where to extract.
     :param logger Logger: The logger instance to use.
+    :param environment src.environment.Environ: The environment to source when
+                                                extracting.
     :return: True if the extraction is successful
     :rtype: boolean
     '''
@@ -81,8 +83,12 @@ def git_extract(from_what, tag, where, logger):
 
     logger.logTxtFile.write("\n" + command + "\n")
     logger.logTxtFile.flush()
-    res = subprocess.call(command, cwd=str(where.dir()), shell=True,
-                          stdout=logger.logTxtFile, stderr=subprocess.STDOUT)
+    res = subprocess.call(command,
+                          cwd=str(where.dir()),
+                          env=environment.environ.environ,
+                          shell=True,
+                          stdout=logger.logTxtFile,
+                          stderr=subprocess.STDOUT)
     return (res == 0)
 
 def archive_extract(from_what, where, logger):
@@ -104,7 +110,7 @@ def archive_extract(from_what, where, logger):
         return False, None
 
 def cvs_extract(protocol, user, server, base, tag, product, where,
-                logger, checkout=False):
+                logger, checkout=False, environment=None):
     '''Extracts sources from a cvs repository.
     
     :param protocol str: The cvs protocol.
@@ -116,6 +122,8 @@ def cvs_extract(protocol, user, server, base, tag, product, where,
     :param where str: The path where to extract.
     :param logger Logger: The logger instance to use.
     :param checkout boolean: If true use checkout cvs.
+    :param environment src.environment.Environ: The environment to source when
+                                                extracting.
     :return: True if the extraction is successful
     :rtype: boolean
     '''
@@ -147,11 +155,21 @@ def cvs_extract(protocol, user, server, base, tag, product, where,
 
     logger.logTxtFile.write("\n" + command + "\n")
     logger.logTxtFile.flush()        
-    res = subprocess.call(command, cwd=str(where.dir()), shell=True,
-                          stdout=logger.logTxtFile, stderr=subprocess.STDOUT)
+    res = subprocess.call(command,
+                          cwd=str(where.dir()),
+                          env=environment.environ.environ,
+                          shell=True,
+                          stdout=logger.logTxtFile,
+                          stderr=subprocess.STDOUT)
     return (res == 0)
 
-def svn_extract(user, from_what, tag, where, logger, checkout=False):
+def svn_extract(user,
+                from_what,
+                tag,
+                where,
+                logger,
+                checkout=False,
+                environment=None):
     '''Extracts sources from a svn repository.
     
     :param user str: The user to be used.
@@ -160,6 +178,8 @@ def svn_extract(user, from_what, tag, where, logger, checkout=False):
     :param where str: The path where to extract.
     :param logger Logger: The logger instance to use.
     :param checkout boolean: If true use checkout svn.
+    :param environment src.environment.Environ: The environment to source when
+                                                extracting.
     :return: True if the extraction is successful
     :rtype: boolean
     '''
@@ -187,6 +207,10 @@ def svn_extract(user, from_what, tag, where, logger, checkout=False):
     logger.write(command + "\n", 5)
     logger.logTxtFile.write("\n" + command + "\n")
     logger.logTxtFile.flush()
-    res = subprocess.call(command, cwd=str(where.dir()), shell=True,
-                          stdout=logger.logTxtFile, stderr=subprocess.STDOUT)
+    res = subprocess.call(command,
+                          cwd=str(where.dir()),
+                          env=environment.environ.environ,
+                          shell=True,
+                          stdout=logger.logTxtFile,
+                          stderr=subprocess.STDOUT)
     return (res == 0)
\ No newline at end of file