]> SALOME platform Git repositories - tools/sat.git/commitdiff
Salome HOME
sat #18350 : option -f pour forcer la (re)compilation d'un produit, independamment...
authorcrouzet <nicolas.crouzet@cea.fr>
Thu, 18 Jun 2020 09:41:54 +0000 (11:41 +0200)
committercrouzet <nicolas.crouzet@cea.fr>
Thu, 18 Jun 2020 09:41:54 +0000 (11:41 +0200)
commands/compile.py
complete_sat.sh
doc/src/commands/compile.rst

index 885223eed1cc261809fbe1b8c8820a4ba5541076..f814c882c26f15108123b25a46ce55355fbdf521 100644 (file)
@@ -34,6 +34,8 @@ except NameError:
 parser = src.options.Options()
 parser.add_option('p', 'products', 'list2', 'products',
     _('Optional: products to compile. This option accepts a comma separated list.'))
+parser.add_option('f', 'force', 'boolean', 'force',
+    'Optional: force the compilation of product, even if it is already installed. The BUILD directory is cleaned before compilation.')
 parser.add_option('', 'with_fathers', 'boolean', 'fathers',
     _("Optional: build all necessary products to the given product (KERNEL is "
       "build before building GUI)."), False)
@@ -194,6 +196,17 @@ def compile_all_products(sat, config, options, products_infos, all_products_dict
                       verbose=0,
                       logger_add_link = logger)
         
+        # Clean the the install directory 
+        # if the corresponding option was called
+        if options.force and not options.clean_all:
+            log_step(logger, header, "CLEAN BUILD ")
+            sat.clean(config.VARS.application + 
+                      " --products " + p_name + 
+                      " --build",
+                      batch=True,
+                      verbose=0,
+                      logger_add_link = logger)
+
         # Recompute the product information to get the right install_dir
         # (it could change if there is a clean of the install directory)
         p_info = src.product.get_product_config(config, p_name)
@@ -234,8 +247,9 @@ def compile_all_products(sat, config, options, products_infos, all_products_dict
                 res += 1
                 continue
         
-        # Check if it was already successfully installed
-        if src.product.check_installation(config, p_info):
+        # if we don't force compilation, check if the was already successfully installed.
+        # we don't compile in this case.
+        if (not options.force) and src.product.check_installation(config, p_info):
             logger.write(_("Already installed"))
             logger.write(_(" in %s" % p_info.install_dir), 4)
             logger.write(_("\n"))
index b499b1e91321f4e292396c487d6493616c28810e..53dbdb4271ff9cf3f1cbc1a2a358e61a1b2e0570 100755 (executable)
@@ -207,7 +207,7 @@ _salomeTools_complete()
             return 0
             ;;
         compile)
-            opts="--products --properties --with_fathers --with_children --clean_all --clean_make --install_flags --show --stop_first_fail --check --clean_build_after"
+            opts="--products --force --properties --with_fathers --with_children --clean_all --clean_make --install_flags --show --stop_first_fail --check --clean_build_after"
             COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) )
             return 0
             ;;
index 55c77f9137d447378ee729758a0f9b9ef2e3c398..b646fe01eb659a7d9f4212795151e36c5cd9bced 100644 (file)
@@ -31,6 +31,10 @@ Usage
   
     sat compile <application> --products med --with_children
 
+* Force the compilation of a module, even if it is already installed. This option clean the build before compiling: ::
+  
+    sat compile <application> --products med --force
+
 * Clean the build and install directories before starting compilation: ::
 
     sat compile <application> --products GEOM  --clean_all