Salome HOME
limit the impact for users not having psutil
[tools/sat.git] / src / product.py
index bbeeffa119f3d629535a7d24f2aa7fc4cd546b9c..0413d212a415c5570e61f633b3409a0dd1f1b4b7 100644 (file)
@@ -149,7 +149,7 @@ def get_product_config(config, product_name, with_install_dir=True):
         
         # Get the hpc if any
         if 'hpc' in dic_version:
-            hpc = dic_version.hpc
+            hpc = dic_version['hpc']
         elif 'hpc' in config.APPLICATION:
             hpc = config.APPLICATION.hpc
 
@@ -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" %
@@ -1229,11 +1241,15 @@ def check_system_dep(distrib, check_cmd, product_info):
     """
     runtime_dep={}
     build_dep={}
+
     if "system_info" in product_info:
-        if distrib in product_info.system_info:
-            sysinfo=product_info.system_info[distrib]
-        else:
-            sysinfo=product_info.system_info
+
+        sysinfo=product_info.system_info
+        additional_sysinfo = None
+
+        for key in sysinfo :
+            if distrib in key :
+                additional_sysinfo = sysinfo[key]
 
         if check_cmd[0]=="rpm":
             if "rpm" in sysinfo:
@@ -1242,6 +1258,13 @@ def check_system_dep(distrib, check_cmd, product_info):
             if "rpm_dev" in sysinfo:
                 for pkg in sysinfo.rpm_dev:
                     build_dep[pkg]=src.system.check_system_pkg(check_cmd,pkg)
+            if additional_sysinfo :
+                if "rpm" in additional_sysinfo:
+                    for pkg in additional_sysinfo.rpm:
+                        runtime_dep[pkg]=src.system.check_system_pkg(check_cmd,pkg)
+                if "rpm_dev" in additional_sysinfo:
+                    for pkg in additional_sysinfo.rpm_dev:
+                        build_dep[pkg]=src.system.check_system_pkg(check_cmd,pkg)
         if check_cmd[0]=="apt":
             if "apt" in sysinfo:
                 for pkg in sysinfo.apt:
@@ -1249,6 +1272,14 @@ def check_system_dep(distrib, check_cmd, product_info):
             if "apt_dev" in sysinfo:
                 for pkg in sysinfo.apt_dev:
                     build_dep[pkg]=src.system.check_system_pkg(check_cmd,pkg)
+            if additional_sysinfo :
+                if "apt" in additional_sysinfo:
+                    for pkg in additional_sysinfo.apt:
+                        runtime_dep[pkg]=src.system.check_system_pkg(check_cmd,pkg)
+                if "apt_dev" in additional_sysinfo:
+                    for pkg in additional_sysinfo.apt_dev:
+                        build_dep[pkg]=src.system.check_system_pkg(check_cmd,pkg)
+
     return runtime_dep,build_dep