Salome HOME
sat #8594 : extension des logs de sat log --last_compile au make check
[tools/sat.git] / src / __init__.py
index 2a4a7420b9bc057174b0812b0205594caf432ff2..02f27a6e521a8ae290942c1331fa2c4c930b1bd2 100644 (file)
@@ -26,6 +26,7 @@ import shutil
 import errno
 import stat
 import fnmatch
+import pprint as PP
 from ftplib import FTP
 
 from . import pyconf
@@ -110,6 +111,24 @@ def get_cfg_param(config, param_name, default):
         return config[param_name]
     return default
 
+def strSplitN(aList, nb, skip="\n     "):
+    """
+    example
+    aStr = 'this-is-a-string'
+    splitN(aStr, 2, '-')
+    split it by every 2nd '-' rather than every '-'
+    """
+    strValue = ""
+    i = 0
+    for v in aList:
+      strValue += "%15s, " % str(v)
+      i += 1
+      if i >= nb:
+        strValue += skip
+        i = 0
+    if len(aList) > nb:
+        strValue = skip + strValue
+    return strValue
 
 def getProductNames(cfg, wildcards, logger):
     """get products names using * or ? as wildcards like shell Linux"""
@@ -118,16 +137,25 @@ def getProductNames(cfg, wildcards, logger):
       wilds = wildcards
     else:
       wilds = [wildcards]
+    notFound = {}
     products = cfg.APPLICATION.products.keys()
-    for prod in products:
-      for wild in wildcards:
+    for wild in wildcards:
+      ok = False
+      for prod in products:
         filtered = fnmatch.filter([prod], wild)
         # print("filtered", prod, wild, filtered)
         if len(filtered) > 0:
           res.append(prod)
-          break
+          ok = True
+          continue
+      if not ok:
+        notFound[wild] = None
     if len(res) == 0:
       logger.warning("Empty list of products, from %s" % wilds)
+    if len(notFound.keys()) > 0:
+      strProd = strSplitN( sorted(products), 5)
+      logger.warning("products not found: %s\n  availables products are:\n%s" % \
+                     (sorted(notFound.keys()), strProd) )
     return res
 
 
@@ -390,8 +418,21 @@ def find_file_in_ftppath(file_name, ftppath, installation_dir, logger):
     :param logger Logger: The logging instance to use for the prints.
     :rtype: str
     """
+
+    # make sure installation_dir exists
+    if not os.path.exists(installation_dir):
+        os.makedirs(installation_dir)
+
     destination=os.path.join(installation_dir, file_name)
-    for ftp_archive in ftppath:
+
+    # paths in ftppath may contain several paths separated by ":"
+    # we plit them, and push all paths in bigftppath
+    bigftppath=[]
+    for ipath in ftppath:
+        splpath=ipath.split(":")
+        bigftppath+=splpath
+        
+    for ftp_archive in bigftppath:
        try:
            # ftp_archive has the form ftp.xxx.yyy/dir1/dir2/...
            ftp_archive_split=ftp_archive.split("/")