Salome HOME
Mise à jour du template PythonComponent
[tools/sat.git] / commands / launcher.py
index f0e0ece8ea43e1440cf3f2a45caae7a5ccf21234..0955d9544683c52d5afb8d304f3181d7ae3ccbfc 100644 (file)
@@ -73,6 +73,7 @@ def generate_launch_file(config,
     additional_env['APPLI'] = filepath
 
 
+
     # get KERNEL bin installation path 
     # (in order for the launcher to get python salomeContext API)
     kernel_cfg = src.product.get_product_config(config, "KERNEL")
@@ -86,13 +87,34 @@ def generate_launch_file(config,
     else:
         bin_kernel_install_dir = os.path.join(kernel_root_dir,"bin","salome") 
 
-    # Get the launcher template
-    withProfile = src.fileEnviron.withProfile\
-                     .replace("BIN_KERNEL_INSTALL_DIR", bin_kernel_install_dir)\
-                     .replace("KERNEL_INSTALL_DIR", kernel_root_dir)
+    # check if the application contains an application module
+    l_product_info = src.product.get_products_infos(config.APPLICATION.products.keys(),
+                                                    config)
+    salome_application_name="Not defined" 
+    for prod_name, prod_info in l_product_info:
+        # look for a salome application
+        if src.get_property_in_product_cfg(prod_info, "is_salome_application") == "yes":
+            salome_application_name=prod_info.install_dir
+            continue
+
+    # if the application contains an application module, we set ABSOLUTE_APPLI_PATH to it.
+    # if not we set it to KERNEL_INSTALL_DIR, which is sufficient, except for salome test
+    if salome_application_name == "Not defined":
+        app_root_dir=kernel_root_dir
+    else:
+        app_root_dir=salome_application_name
 
-    before, after = withProfile.split(
-                                "# here your local standalone environment\n")
+    # Get the launcher template (python3 or python2)
+    if "python3" in config.APPLICATION and config.APPLICATION.python3 == "yes":
+        withProfile = src.fileEnviron.withProfile3\
+                         .replace("BIN_KERNEL_INSTALL_DIR", bin_kernel_install_dir)\
+                         .replace("KERNEL_INSTALL_DIR", app_root_dir)
+    else:
+        withProfile = src.fileEnviron.withProfile\
+                         .replace("BIN_KERNEL_INSTALL_DIR", bin_kernel_install_dir)\
+                         .replace("KERNEL_INSTALL_DIR", app_root_dir)
+
+    before, after = withProfile.split("# here your local standalone environment\n")
 
     # create an environment file writer
     writer = src.environment.FileEnvWriter(config,
@@ -157,44 +179,49 @@ def generate_catalog(machines, config, logger):
     # Write into it
     catalog.write("<!DOCTYPE ResourcesCatalog>\n<resources>\n")
     for k in machines:
-        logger.write("    ssh %s " % (k + " ").ljust(20, '.'), 4)
-        logger.flush()
-
-        # Verify that the machine is accessible
-        ssh_cmd = 'ssh -o "StrictHostKeyChecking no" %s %s' % (k, cmd)
-        p = subprocess.Popen(ssh_cmd, shell=True,
-                stdin=subprocess.PIPE,
-                stdout=subprocess.PIPE,
-                stderr=subprocess.PIPE)
-        p.wait()
-
-        if p.returncode != 0: # The machine is not accessible
-            logger.write(src.printcolors.printc(src.KO_STATUS) + "\n", 4)
-            logger.write("    " + 
-                         src.printcolors.printcWarning(p.stderr.read()), 2)
-        else:
-            # The machine is accessible, write the corresponding section on
-            # the xml file
-            logger.write(src.printcolors.printc(src.OK_STATUS) + "\n", 4)
-            lines = p.stdout.readlines()
-            freq = lines[0][:-1].split(':')[-1].split('.')[0].strip()
-            nb_proc = len(lines) -1
-            memory = lines[-1].split(':')[-1].split()[0].strip()
-            memory = int(memory) / 1000
-
-            catalog.write("    <machine\n")
-            catalog.write("        protocol=\"ssh\"\n")
-            catalog.write("        nbOfNodes=\"1\"\n")
-            catalog.write("        mode=\"interactif\"\n")
-            catalog.write("        OS=\"LINUX\"\n")
+        if not src.architecture.is_windows(): 
+            logger.write("    ssh %s " % (k + " ").ljust(20, '.'), 4)
+            logger.flush()
+
+            # Verify that the machine is accessible
+            ssh_cmd = 'ssh -o "StrictHostKeyChecking no" %s %s' % (k, cmd)
+            p = subprocess.Popen(ssh_cmd, shell=True,
+                    stdin=subprocess.PIPE,
+                    stdout=subprocess.PIPE,
+                    stderr=subprocess.PIPE)
+            p.wait()
+
+            machine_access = (p.returncode == 0) 
+            if not machine_access: # The machine is not accessible
+                logger.write(src.printcolors.printc(src.KO_STATUS) + "\n", 4)
+                logger.write("    " + 
+                             src.printcolors.printcWarning(p.stderr.read()), 2)
+            else:
+                # The machine is accessible, write the corresponding section on
+                # the xml file
+                logger.write(src.printcolors.printc(src.OK_STATUS) + "\n", 4)
+                lines = p.stdout.readlines()
+                freq = lines[0][:-1].split(':')[-1].split('.')[0].strip()
+                nb_proc = len(lines) -1
+                memory = lines[-1].split(':')[-1].split()[0].strip()
+                memory = int(memory) / 1000
+
+        catalog.write("    <machine\n")
+        catalog.write("        protocol=\"ssh\"\n")
+        catalog.write("        nbOfNodes=\"1\"\n")
+        catalog.write("        mode=\"interactif\"\n")
+        catalog.write("        OS=\"LINUX\"\n")
+
+        if (not src.architecture.is_windows()) and machine_access :
             catalog.write("        CPUFreqMHz=\"%s\"\n" % freq)
             catalog.write("        nbOfProcPerNode=\"%s\"\n" % nb_proc)
             catalog.write("        memInMB=\"%s\"\n" % memory)
-            catalog.write("        userName=\"%s\"\n" % user)
-            catalog.write("        name=\"%s\"\n" % k)
-            catalog.write("        hostname=\"%s\"\n" % k)
-            catalog.write("    >\n")
-            catalog.write("    </machine>\n")
+
+        catalog.write("        userName=\"%s\"\n" % user)
+        catalog.write("        name=\"%s\"\n" % k)
+        catalog.write("        hostname=\"%s\"\n" % k)
+        catalog.write("    >\n")
+        catalog.write("    </machine>\n")
 
     catalog.write("</resources>\n")
     catalog.close()