X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/120c7e4d7938fa591601fd60a26f9fb4b0ad8d79..f8856118321c58129177e1392dbd03be2db142af:/src/smpi/internals/smpi_global.cpp diff --git a/src/smpi/internals/smpi_global.cpp b/src/smpi/internals/smpi_global.cpp index 6008469fcd..4528d48f88 100644 --- a/src/smpi/internals/smpi_global.cpp +++ b/src/smpi/internals/smpi_global.cpp @@ -14,6 +14,7 @@ #include "src/simix/smx_private.hpp" #include "src/smpi/include/smpi_actor.hpp" #include "xbt/config.hpp" +#include "xbt/file.hpp" #include #include /* split */ @@ -448,8 +449,9 @@ static void smpi_init_privatization_dlopen(const std::string& executable) return std::function([executable, fdin_size, args] { static std::size_t rank = 0; // Copy the dynamic library: - std::string target_executable = - executable + "_" + std::to_string(getpid()) + "_" + std::to_string(rank) + ".so"; + simgrid::xbt::Path path(executable); + std::string target_executable = simgrid::config::get_value("smpi/tmpdir") + "/" + + path.get_base_name() + "_" + std::to_string(getpid()) + "_" + std::to_string(rank) + ".so"; smpi_copy_file(executable, target_executable, fdin_size); // if smpi/privatize-libs is set, duplicate pointed lib and link each executable copy to a different one. @@ -472,7 +474,7 @@ static void smpi_init_privatization_dlopen(const std::string& executable) unsigned int pad = 7; if (libname.length() < pad) pad = libname.length(); - std::string target_lib = + std::string target_lib = simgrid::config::get_value("smpi/tmpdir") + "/" + std::string(pad - std::to_string(rank).length(), '0') + std::to_string(rank) + libname.substr(pad); target_libs.push_back(target_lib); XBT_DEBUG("copy lib %s to %s, with size %lld", libpath.c_str(), target_lib.c_str(), (long long)fdin_size2);