static int _env_set(char ***env) { char *p = NULL; /* ----------- Temp directories settings ------------- */ /* * FIXME: This is dangerous to set this from the user environment. * I was using this to debug in linux containers * On real hardware each node has it's own separate /tmp directory */ /* set server temp directory - change this process environment */ p = getenvp(*env, PMIXP_TMPDIR_SRV); if (NULL != p) { setenv(PMIXP_OS_TMPDIR_ENV, p, 1); } p = getenv(PMIXP_OS_TMPDIR_ENV); if (NULL == p) { p = PMIXP_TMPDIR_DEFAULT; } _pmixp_job_info.lib_tmpdir = xstrdup_printf("%s/pmix.%d.%d/", p, pmixp_info_jobid(), pmixp_info_stepid()); /* save client temp directory if requested * TODO: We want to get TmpFS value as well if exists. * Need to sync with SLURM developers. */ p = getenvp(*env, PMIXP_TMPDIR_CLI); if (NULL != p) { _pmixp_job_info.cli_tmpdir = xstrdup(p); } else { p = slurm_get_tmp_fs(); if (NULL != p) { _pmixp_job_info.cli_tmpdir = p; } } /* ----------- Timeout setting ------------- */ /* TODO: also would be nice to have a cluster-wide setting in SLURM */ _pmixp_job_info.timeout = PMIXP_TIMEOUT_DEFAULT; p = getenvp(*env, PMIXP_TIMEOUT); if (NULL != p) { int tmp; tmp = atoi(p); if (tmp > 0) { _pmixp_job_info.timeout = tmp; } } /* ----------- Forward PMIX settings ------------- */ /* FIXME: this may be intrusive as well as PMIx library will create * lots of output files in /tmp by default. * somebody can use this or annoyance */ p = getenvp(*env, PMIXP_PMIXLIB_DEBUG); if (NULL != p) { setenv(PMIXP_PMIXLIB_DEBUG, p, 1); /* output into the file since we are in slurmstepd * and stdout is muted. * One needs to check TMPDIR for the results */ setenv(PMIXP_PMIXLIB_DEBUG_REDIR, "file", 1); } return SLURM_SUCCESS; }
static int _env_set(char ***env) { char *p = NULL; xassert(_pmixp_job_info.hostname); _pmixp_job_info.server_addr_unfmt = slurm_get_slurmd_spooldir(NULL); _pmixp_job_info.lib_tmpdir = slurm_conf_expand_slurmd_path( _pmixp_job_info.server_addr_unfmt, _pmixp_job_info.hostname); xstrfmtcat(_pmixp_job_info.server_addr_unfmt, "/stepd.slurm.pmix.%d.%d", pmixp_info_jobid(), pmixp_info_stepid()); _pmixp_job_info.spool_dir = xstrdup(_pmixp_job_info.lib_tmpdir); /* ----------- Temp directories settings ------------- */ xstrfmtcat(_pmixp_job_info.lib_tmpdir, "/pmix.%d.%d/", pmixp_info_jobid(), pmixp_info_stepid()); /* save client temp directory if requested * TODO: We want to get TmpFS value as well if exists. * Need to sync with SLURM developers. */ p = getenvp(*env, PMIXP_TMPDIR_CLI); if (p) _pmixp_job_info.cli_tmpdir_base = xstrdup(p); else _pmixp_job_info.cli_tmpdir_base = slurm_get_tmp_fs( _pmixp_job_info.hostname); _pmixp_job_info.cli_tmpdir = xstrdup_printf("%s/spmix_appdir_%d.%d", _pmixp_job_info.cli_tmpdir_base, pmixp_info_jobid(), pmixp_info_stepid()); /* ----------- Timeout setting ------------- */ /* TODO: also would be nice to have a cluster-wide setting in SLURM */ _pmixp_job_info.timeout = PMIXP_TIMEOUT_DEFAULT; p = getenvp(*env, PMIXP_TIMEOUT); if (NULL != p) { int tmp; tmp = atoi(p); if (tmp > 0) { _pmixp_job_info.timeout = tmp; } } /* ----------- Forward PMIX settings ------------- */ /* FIXME: this may be intrusive as well as PMIx library will create * lots of output files in /tmp by default. * somebody can use this or annoyance */ p = getenvp(*env, PMIXP_PMIXLIB_DEBUG); if (NULL != p) { setenv(PMIXP_PMIXLIB_DEBUG, p, 1); /* output into the file since we are in slurmstepd * and stdout is muted. * One needs to check TMPDIR for the results */ setenv(PMIXP_PMIXLIB_DEBUG_REDIR, "file", 1); } return SLURM_SUCCESS; }