Salome HOME
Merge branch 'nct/jan21' of https://codev-tuleap.cea.fr/plugins/git/salome/sat into...
[tools/sat.git] / commands / patch.py
index fec8f9f1e7a2ebec2a1ba492b78dc1caefe6ff46..ec438655fd61df9be55ada8452628d251ee8fc97 100644 (file)
 
 import os
 import subprocess
+import re
 
 import src
 import prepare
 
 # Define all possible option for patch command :  sat patch <options>
 parser = src.options.Options()
-parser.add_option('p', 'product', 'list2', 'products',
-    _('products to get the sources. This option can be'
-    ' passed several time to get the sources of several products.'))
+parser.add_option('p', 'products', 'list2', 'products',
+    _('Optional: products to get the sources. This option accepts a comma separated list.'))
 
 def apply_patch(config, product_info, max_product_name_len, logger):
     '''The method called to apply patches on a product
@@ -39,6 +39,18 @@ def apply_patch(config, product_info, max_product_name_len, logger):
     :rtype: (boolean, str)
     '''
 
+    # if the product is native, do not apply patch
+    if src.product.product_is_native(product_info):
+        # display and log
+        logger.write('%s: ' % src.printcolors.printcLabel(product_info.name), 4)
+        logger.write(' ' * (max_product_name_len - len(product_info.name)), 4, False)
+        logger.write("\n", 4, False)
+        msg = _("The %s product is native. Do not apply "
+                "any patch.") % product_info.name
+        logger.write(msg, 4)
+        logger.write("\n", 4)
+        return True, ""       
+
     if not "patches" in product_info or len(product_info.patches) == 0:
         # display and log
         logger.write('%s: ' % src.printcolors.printcLabel(product_info.name), 4)
@@ -68,10 +80,8 @@ def apply_patch(config, product_info, max_product_name_len, logger):
         
         # Check the existence and apply the patch
         if os.path.isfile(patch):
-            #patch_exe = "patch" # old patch command (now replace by patching.py)
-            patch_exe = os.path.join(config.VARS.srcDir, "patching.py")
-            patch_cmd = "python %s -p1 -- < %s" % (patch_exe, patch)
-
+            patch_cmd = "patch -p1 < %s" % patch
+            
             # Write the command in the terminal if verbose level is at 5
             logger.write(("    >%s\n" % patch_cmd),5)
             
@@ -118,7 +128,8 @@ def description():
     :rtype: str
     '''
     return _("The patch command apply the patches on the sources of "
-             "the application products if there is any")
+             "the application products if there is any.\n\nexample:\nsat "
+             "patch SALOME-master --products qt,boost")
   
 def run(args, runner, logger):
     '''method that is called when salomeTools is called with patch parameter.
@@ -138,7 +149,7 @@ def run(args, runner, logger):
     logger.write("\n", 2, False)
 
     # Get the products list with products informations regarding the options
-    products_infos = prepare.get_products_list(options, runner.cfg, logger)
+    products_infos = src.product.get_products_list(options, runner.cfg, logger)
     
     # Get the maximum name length in order to format the terminal display
     max_product_name_len = 1
@@ -149,7 +160,10 @@ def run(args, runner, logger):
     good_result = 0
     for __, product_info in products_infos:
         # Apply the patch
-        return_code, patch_res = apply_patch(runner.cfg, product_info, max_product_name_len, logger)
+        return_code, patch_res = apply_patch(runner.cfg,
+                                             product_info,
+                                             max_product_name_len,
+                                             logger)
         logger.write(patch_res, 1, False)
         if return_code:
             good_result += 1
@@ -169,4 +183,4 @@ def run(args, runner, logger):
     logger.write(" " + src.printcolors.printc(status), 1, False)
     logger.write(" (%s)\n" % res_count, 1, False)
     
-    return len(products_infos) - good_result
\ No newline at end of file
+    return len(products_infos) - good_result