diff options
author | Thomas White <taw@physics.org> | 2020-08-31 14:37:09 +0200 |
---|---|---|
committer | Thomas White <taw@physics.org> | 2020-08-31 14:37:09 +0200 |
commit | a833b044790f9a81d62863b22a552374ab702834 (patch) | |
tree | becf0adb638bcf68ebdcf47e29aad9292ed2c270 /src/gui_backend_slurm.c | |
parent | 9d6118d03fbda80d16c3408d275514f463e0ca53 (diff) |
SLURM: Give full path to indexamajig, and set up path
Diffstat (limited to 'src/gui_backend_slurm.c')
-rw-r--r-- | src/gui_backend_slurm.c | 35 |
1 files changed, 32 insertions, 3 deletions
diff --git a/src/gui_backend_slurm.c b/src/gui_backend_slurm.c index c5cc130c..4db8d7d6 100644 --- a/src/gui_backend_slurm.c +++ b/src/gui_backend_slurm.c @@ -73,14 +73,42 @@ static void cancel_task(void *job_priv) } -static char **create_env(uint32_t *psize) +static char **create_env(uint32_t *psize, char *path_add) { char **env; + const char *base_path = "PATH=/bin:/usr/bin"; + char *crystfel_path; + size_t path_len; env = malloc(10*sizeof(char *)); if ( env == NULL ) return NULL; - env[0] = strdup("PATH=/path/to/indexamajig"); + crystfel_path = get_crystfel_path_str(); + + path_len = 4 + strlen(base_path); + + if ( path_add != NULL ) { + path_len += strlen(path_add); + } + + if ( crystfel_path != NULL ) { + path_len += strlen(crystfel_path); + } + + env[0] = malloc(path_len); + if ( env[0] == NULL ) return NULL; + + strcpy(env[0], base_path); + if ( crystfel_path != NULL ) { + strcat(env[0], ":"); + strcat(env[0], crystfel_path); + g_free(crystfel_path); + } + if ( path_add != NULL ) { + strcat(env[0], ":"); + strcat(env[0], path_add); + } + *psize = 1; return env; @@ -173,7 +201,8 @@ static void *run_indexing(const char *job_title, job_desc_msg.std_out = strdup("job.out"); job_desc_msg.work_dir = g_file_get_path(workdir_file); job_desc_msg.script = script; - job_desc_msg.environment = create_env(&job_desc_msg.env_size); + job_desc_msg.environment = create_env(&job_desc_msg.env_size, + opts->path_add); g_object_unref(workdir_file); |