From f7257a8310c4c5b5cc3f393441bbc8bf7ec710ac Mon Sep 17 00:00:00 2001 From: Ralph Castain Date: Wed, 9 Mar 2016 07:52:11 -0800 Subject: [PATCH] Modify singularity support per patch from Greg Kurtzer --- .../schizo/singularity/schizo_singularity.c | 77 +------------------ 1 file changed, 2 insertions(+), 75 deletions(-) diff --git a/orte/mca/schizo/singularity/schizo_singularity.c b/orte/mca/schizo/singularity/schizo_singularity.c index 3e73db7a2d..ad3e8e9280 100644 --- a/orte/mca/schizo/singularity/schizo_singularity.c +++ b/orte/mca/schizo/singularity/schizo_singularity.c @@ -31,12 +31,9 @@ static int setup_app(char **personality, orte_app_context_t *context); -static int setup_fork(orte_job_t *jdata, - orte_app_context_t *context); orte_schizo_base_module_t orte_schizo_singularity_module = { - .setup_app = setup_app, - .setup_fork = setup_fork + .setup_app = setup_app }; static int setup_app(char **personality, @@ -45,7 +42,7 @@ static int setup_app(char **personality, int i; char *newenv, *pth; bool takeus = false; - char *p, *t2; + char *t2; /* see if we are included */ for (i=0; NULL != personality[i]; i++) { @@ -94,79 +91,9 @@ static int setup_app(char **personality, } } - /* ensure that we use "singularity run" to execute this app */ - if (0 != strcmp(app->app, "singularity")) { - opal_output_verbose(1, orte_schizo_base_framework.framework_output, - "%s schizo:singularity: adding singularity cmd %s", - ORTE_NAME_PRINT(ORTE_PROC_MY_NAME), pth); - /* change the app to the "singularity" command */ - free(app->app); - app->app = pth; - } else { - free(pth); - } - - /* if the app contains .sapp, then we need to strip that - * extension so singularity doesn't bark at us */ - if (NULL != (p = strstr(app->argv[0], ".sapp"))) { - t2 = opal_basename(app->argv[0]); - p = strstr(t2, ".sapp"); - *p = '\0'; // strip the extension - free(app->argv[0]); - app->argv[0] = t2; - } - opal_argv_prepend_nosize(&app->argv, "run"); - opal_argv_prepend_nosize(&app->argv, "singularity"); - /* export an envar to permit shared memory operations */ opal_setenv("SINGULARITY_NO_NAMESPACE_PID", "1", true, &app->env); return ORTE_SUCCESS; } -static int setup_fork(orte_job_t *jdata, - orte_app_context_t *app) -{ - int i; - bool takeus = false; - char *p; - char dir[MAXPATHLEN]; - - /* see if we are included */ - for (i=0; NULL != jdata->personality[i]; i++) { - if (0 == strcmp(jdata->personality[i], "singularity")) { - takeus = true; - break; - } - } - if (!takeus) { - /* even if they didn't specify, check to see if - * this involves a singularity container */ - if (0 != strcmp(app->argv[0],"singularity") && - 0 != strcmp(app->argv[0],"sapprun") && - NULL == strstr(app->argv[0], ".sapp")) { - /* guess not! */ - return ORTE_ERR_TAKE_NEXT_OPTION; - } - } - - /* save our current directory */ - getcwd(dir, sizeof(dir)); - - /* change to the working directory for this context */ - chdir(app->cwd); - - /* ensure the app is installed */ - opal_output_verbose(1, orte_schizo_base_framework.framework_output, - "%s schizo:singularity: installing app %s", - ORTE_NAME_PRINT(ORTE_PROC_MY_NAME), app->argv[2]); - (void)asprintf(&p, "%s install %s.sapp &> /dev/null", app->app, app->argv[2]); - system(p); - free(p); - - /* return to the original directory */ - chdir(dir); - - return ORTE_SUCCESS; -} -