#endif
#include <sstream>
+#ifdef WIN32
+ static const char SEPARATOR = '\\';
+#else
+ static const char SEPARATOR = '/';
+#endif
Launcher::Job::Job()
{
std::string user_name = "";
if (resource_definition.UserName == "")
{
+#ifndef WIN32
user_name = getenv("USER");
+#else
+ user_name = getenv("USERNAME");
+#endif
if (user_name == "")
user_name = getenv("LOGNAME");
if (user_name == "")
}
_job_file = job_file;
- std::string::size_type p1 = _job_file.find_last_of("/");
+ std::string::size_type p1 = _job_file.find_last_of(SEPARATOR);
std::string::size_type p2 = _job_file.find_last_of(".");
_job_file_name_complete = _job_file.substr(p1+1);
_job_file_name = _job_file.substr(p1+1,p2-p1-1);
}
else
{
+#ifndef WIN32
_work_directory = std::string("/$HOME/Batch/workdir_");
+#else
+ _work_directory = std::string("%USERPROFILE%\\Batch\\workdir_");
+#endif
_work_directory += date;
}
}
// If result_directory is not defined, we use HOME environnement
if (_result_directory == "")
+#ifndef WIN32
_result_directory = getenv("HOME");
-
+#else
+ _result_directory = getenv("USERPROFILE");
+#endif
// _in_files
std::list<std::string> in_files(_in_files);
in_files.push_back(_job_file);
// local file -> If file is not an absolute path, we apply _local_directory
std::string local_file;
+#ifndef WIN32
if (file.substr(0, 1) == std::string("/"))
+#else
+ // On Windows, absolute paths may begin with something like "C:"
+ if (file.substr(1, 1) == std::string(":"))
+#endif
local_file = file;
else if (file.substr(0, 1) == std::string("-")) // using rsync options
local_file = file;
// /a/b/./c/f -> _working_directory/c/f
local_file = _local_directory + "/./" + file;
#else
- local_file = file;
+ local_file = _local_directory + SEPARATOR + file;
#endif
// remote file -> get only file name from in_files
std::string launch_date_port_file = launch_date;
std::ostringstream str_pid;
str_pid << ::getpid();
- std::string launch_script = Kernel_Utils::GetTmpDir() + "runCommand_" + _job_file_name + "_" + launch_date + "-" + str_pid.str() + ".sh";
+ std::string launch_script = Kernel_Utils::GetTmpDir() + "runCommand_"
+ + _job_file_name + "_" + launch_date + "-"
+ + str_pid.str();
+#ifndef WIN32
+ launch_script += ".sh";
+#else
+ launch_script += ".bat";
+#endif
std::ofstream launch_script_stream;
launch_script_stream.open(launch_script.c_str(), std::ofstream::out);
// Script
+#ifndef WIN32
launch_script_stream << "#!/bin/sh -f" << std::endl;
launch_script_stream << "cd " << work_directory << std::endl;
launch_script_stream << "export PYTHONPATH=" << work_directory << ":$PYTHONPATH" << std::endl;
std::string::size_type last = _env_file.find_last_of("/");
launch_script_stream << ". ./" << _env_file.substr(last+1) << std::endl;
}
+#else
+ launch_script_stream << "echo OFF" << std::endl;
+ launch_script_stream << "cd " << work_directory << std::endl;
+ launch_script_stream << "set PYTHONPATH=" << work_directory << ";%PYTHONPATH%" << std::endl;
+ launch_script_stream << "set PATH=" << work_directory << ";%PATH%" << std::endl;
+ if (_env_file != "")
+ {
+ std::string::size_type last = _env_file.find_last_of("\\");
+ launch_script_stream << "call " << _env_file.substr(last+1) << std::endl;
+ }
+#endif
launch_script_stream << runCommandString() << std::endl;
// Return
std::string Launcher::Job_Command::runCommandString()
{
std::ostringstream result;
+#ifndef WIN32
result << "./" << _job_file_name_complete;
+#else
+ result << "call " << _job_file_name_complete;
+#endif
return result.str();
}
#endif
def create_JobParameters(self):
job_params = salome.JobParameters()
- job_params.wckey="P11U50:CARBONES" #needed by edf clusters
+ job_params.wckey="P11U5:CARBONES" #needed by edf clusters
job_params.resource_required = salome.ResourceParameters()
job_params.resource_required.nb_proc = 1
return job_params
resource.DataForSort._Name = DEFAULT_RESOURCE_NAME;
resource.Protocol = sh;
resource.Batch = none;
+#ifndef WIN32
if (getenv("HOME") != NULL && getenv("APPLI") != NULL)
{
resource.AppliPath = string(getenv("HOME")) + "/" + getenv("APPLI");
resource.working_directory = tmpdir + "/salome_localres_workdir";
if (getenv("USER") != NULL)
resource.working_directory += string("_") + getenv("USER");
+#else
+ if (getenv("USERPROFILE") != NULL && getenv("APPLI") != NULL)
+ {
+ resource.AppliPath = string(getenv("USERPROFILE")) + "\\" + getenv("APPLI");
+ }
+ string tmpdir = "C:\\tmp";
+ if (getenv("TEMP") != NULL)
+ tmpdir = getenv("TEMP");
+ resource.working_directory = tmpdir + "\\salome_localres_workdir";
+ if (getenv("USERNAME") != NULL)
+ resource.working_directory += string("_") + getenv("USERNAME");
+#endif
resource.can_launch_batch_jobs = true;
resource.can_run_containers = true;
_resourcesList[resource.Name] = resource;