Salome HOME
limit the impact for users not having psutil
[tools/sat.git] / src / product.py
index 90879ead10d9b8f154279e19b42fe15faca83468..0413d212a415c5570e61f633b3409a0dd1f1b4b7 100644 (file)
@@ -178,7 +178,7 @@ def get_product_config(config, product_name, with_install_dir=True):
         # merge opt_depend in depend
         if prod_info is not None and 'opt_depend' in prod_info:
             for depend in prod_info.opt_depend:
-                if depend in config.APPLICATION.products:
+                if (depend in config.APPLICATION.products) and (depend not in prod_info.depend) :
                     prod_info.depend.append(depend,'')
         
 
@@ -797,15 +797,27 @@ def get_products_list(options, cfg, logger):
       ko = []
       res =[]
       prop, value = options.properties # for example 'is_SALOME_module', 'yes'
-      for p_name, p_info in resAll:
-        try:
-          if p_info.properties[prop] == value:
-            res.append((p_name, p_info))
-            ok.append(p_name)
-          else:
-            ko.append(p_name)
-        except:
-          ko.append(p_name)
+      if value[0] == '!':
+          for p_name, p_info in resAll:
+            try:
+              if p_info.properties[prop] == value[1:]:
+                ko.append(p_name)
+              else:
+                res.append((p_name, p_info))
+                ok.append(p_name)
+            except:
+              res.append((p_name, p_info))
+              ok.append(p_name)
+      else:
+          for p_name, p_info in resAll:
+            try:
+              if p_info.properties[prop] == value:
+                res.append((p_name, p_info))
+                ok.append(p_name)
+              else:
+                ko.append(p_name)
+            except:
+              ko.append(p_name)
 
       if len(ok) != len(resAll):
         logger.trace("on properties %s\n products accepted:\n %s\n products rejected:\n %s\n" %