From 6141c5ec9b95f68860edb0e6c5cc5bb2fc5f8e73 Mon Sep 17 00:00:00 2001 From: crouzet Date: Mon, 22 Jun 2020 17:06:59 +0200 Subject: [PATCH] sat #18831 : do all the cleaning, then compile products --- commands/compile.py | 118 +++++++++++++++++++++++++------------------- 1 file changed, 66 insertions(+), 52 deletions(-) diff --git a/commands/compile.py b/commands/compile.py index f814c88..6c4a53b 100644 --- a/commands/compile.py +++ b/commands/compile.py @@ -143,40 +143,21 @@ def compile_all_products(sat, config, options, products_infos, all_products_dict :return: the number of failing commands. :rtype: int ''' - res = 0 + # first loop for the cleaning + check_salome_configuration=False for p_name_info in products_infos: p_name, p_info = p_name_info - # Logging - len_end_line = 30 - header = _("Compilation of %s") % src.printcolors.printcLabel(p_name) - header += " %s " % ("." * (len_end_line - len(p_name))) - logger.write(header, 3) - logger.flush() - - # Do nothing if the product is not compilable - if not src.product.product_compiles(p_info): - log_step(logger, header, "ignored") - logger.write("\n", 3, False) - continue - - # Do nothing if the product is native - if src.product.product_is_native(p_info): - log_step(logger, header, "native") - logger.write("\n", 3, False) - continue - - # Do nothing if the product is fixed (already compiled by third party) - if src.product.product_is_fixed(p_info): - log_step(logger, header, "native") - logger.write("\n", 3, False) + # nothing to clean for native or fixed products + if (not src.product.product_compiles(p_info)) or\ + src.product.product_is_native(p_info) or\ + src.product.product_is_fixed(p_info): continue # Clean the build and the install directories # if the corresponding options was called if options.clean_all: - log_step(logger, header, "CLEAN BUILD AND INSTALL ") sat.clean(config.VARS.application + " --products " + p_name + " --build --install", @@ -188,7 +169,6 @@ def compile_all_products(sat, config, options, products_infos, all_products_dict # Clean the the install directory # if the corresponding option was called if options.clean_install and not options.clean_all: - log_step(logger, header, "CLEAN INSTALL ") sat.clean(config.VARS.application + " --products " + p_name + " --install", @@ -199,13 +179,72 @@ def compile_all_products(sat, config, options, products_infos, all_products_dict # 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) + if src.product.product_is_salome(p_info): + check_salome_configuration=True + + if check_salome_configuration: + # For salome applications, we check if the sources of configuration modules are present + # configuration modules have the property "configure_dependency" + # they are implicit prerequisites of the compilation. + res=0 + + # get the list of all modules in application + all_products_infos = src.product.get_products_infos(config.APPLICATION.products, + config) + check_source = True + # for configuration modules, check if sources are present + for prod in all_products_dict: + product_name, product_info = all_products_dict[prod] + if ("properties" in product_info and + "configure_dependency" in product_info.properties and + product_info.properties.configure_dependency == "yes"): + check_source = check_source and src.product.check_source(product_info) + if not check_source: + logger.write(_("\nERROR : SOURCES of %s not found! It is required for" + " the configuration\n" % product_name)) + logger.write(_(" Get it with the command : sat prepare %s -p %s \n" % + (config.APPLICATION.name, product_name))) + res += 1 + if res>0: + return res # error configure dependency : we stop the compilation + + # second loop to compile + res = 0 + for p_name_info in products_infos: + + p_name, p_info = p_name_info + + # Logging + len_end_line = 30 + header = _("Compilation of %s") % src.printcolors.printcLabel(p_name) + header += " %s " % ("." * (len_end_line - len(p_name))) + logger.write(header, 3) + logger.flush() + + # Do nothing if the product is not compilable + if not src.product.product_compiles(p_info): + log_step(logger, header, "ignored") + logger.write("\n", 3, False) + continue + + # Do nothing if the product is native + if src.product.product_is_native(p_info): + log_step(logger, header, "native") + logger.write("\n", 3, False) + continue + + # Do nothing if the product is fixed (already compiled by third party) + if src.product.product_is_fixed(p_info): + log_step(logger, header, "native") + logger.write("\n", 3, False) + continue + # Recompute the product information to get the right install_dir # (it could change if there is a clean of the install directory) @@ -222,31 +261,6 @@ def compile_all_products(sat, config, options, products_infos, all_products_dict res += 1 # one more error continue - if src.product.product_is_salome(p_info): - # For salome modules, we check if the sources of configuration modules are present - # configuration modules have the property "configure_dependency" - - # get the list of all modules in application - all_products_infos = src.product.get_products_infos(config.APPLICATION.products, - config) - check_source = True - # for configuration modules, check if sources are present - for prod in all_products_dict: - product_name, product_info = all_products_dict[prod] - if ("properties" in product_info and - "configure_dependency" in product_info.properties and - product_info.properties.configure_dependency == "yes"): - check_source = check_source and src.product.check_source(product_info) - if not check_source: - logger.write(_("\nERROR : SOURCES of %s not found! It is required for" - " the configuration\n" % product_name)) - logger.write(_(" Get it with the command : sat prepare %s -p %s \n" % - (config.APPLICATION.name, product_name))) - if not check_source: - # if at least one configuration module is not present, we stop compilation - res += 1 - continue - # 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): -- 2.30.2