Salome HOME
ordre de compilation : généralisation du traitement particulier de Python au produits...
authorcrouzet <nicolas.crouzet@cea.fr>
Tue, 23 Jun 2020 10:28:32 +0000 (12:28 +0200)
committercrouzet <nicolas.crouzet@cea.fr>
Tue, 23 Jun 2020 10:28:32 +0000 (12:28 +0200)
commands/compile.py
src/product.py

index 6c4a53b0185f984d9f25108b8bea2de7244a6af5..87e5359d2d41c382d447812a985c9099e524ee70 100644 (file)
@@ -734,21 +734,24 @@ def run(args, runner, logger):
 
     # Use the sorted list of all products to sort the list of products we have to compile
     sorted_product_list=[]
-    sorted_product_list_runtime=[]
-    # python has no dependencies. it is sometimes required by compile time products.
-    #it's simplier to always compile python first!
-    if "Python" in products_list:
-        sorted_product_list.append("Python")
-        sorted_nodes.remove("Python")
+    product_list_runtime=[]
+    product_list_compiletime=[]
+    product_list_compile_and_runtime=[]
 
     # store at beginning compile time products, we need to compile them before!
     for n in sorted_nodes:
         if n in products_list:
-            if src.product.product_is_compile_time(all_products_dict[n][1]):
-                sorted_product_list.append(n)
+            if src.product.product_is_compile_and_runtime(all_products_dict[n][1]):
+                # these products (python/graphviz) are used at compile and run time
+                # they have no dependencies.
+                # we always compile them in the first place
+                product_list_compile_and_runtime.append(n)
             else:
-                sorted_product_list_runtime.append(n)
-    sorted_product_list+=sorted_product_list_runtime
+                if src.product.product_is_compile_time(all_products_dict[n][1]):
+                    product_list_compiletime.append(n)
+                else:
+                    product_list_runtime.append(n)
+    sorted_product_list = product_list_compile_and_runtime + product_list_compiletime + product_list_runtime
     logger.write("Sorted list of products to compile : %s\n" % sorted_product_list, 5)
     
     # from the sorted list of products to compile, build a sorted list of products infos
index 32af95964dddbc89b09562d50dc7dcee5be7a045..e0bc0871409854b1c79292d54252600fd7f06b82 100644 (file)
@@ -1174,6 +1174,19 @@ def product_is_compile_time(product_info):
             "compile_time" in product_info.properties and
             product_info.properties.compile_time == "yes")
 
+def product_is_compile_and_runtime(product_info):
+    """Know if a product is only used at compile time
+    
+    :param product_info Config: The configuration specific to 
+                               the product
+    :return: True if the product is only used at compile time
+    :rtype: boolean
+    """
+    return ("properties" in product_info and
+            "compile_and_runtime" in product_info.properties and
+            product_info.properties.compile_and_runtime == "yes")
+
+
 
 def product_test_property(product_info, property_name, property_value):
     """Generic function to test if a product has a property set to a value