If you are expecting the user to put quotes around the string, then you better tell them that in the help message. Otherwise, they would do what I did - simply list the envars with a space in-between, and everything fails.
Also, you need to update mpirun.1in to reflect this new option or else nobody will know about it :-) However, looking at your example leaves me totally puzzled. Why are these not just MCA params to begin with, in which case we don't need another duplicate mechanism for setting them? We should only be setting envars that have nothing to do with OMPI, not setting OMPI-related envars - anything OMPI related is supposed to be an MCA param. On Tue, Apr 1, 2014 at 4:16 PM, Mike Dubman <mi...@dev.mellanox.co.il>wrote: > not sure what you mean, could you please provide example? > > comma is used often as part of the value, here is a example: > > -mca base_env_list "HCOLL_BCOL=basesmuma,mlnx_p2p HCOLL_SBGP=basesmuma,p2p > HCOLL_ML_USE_KNOMIAL_ALLREDUCE=1" > > > > On Wed, Apr 2, 2014 at 2:12 AM, Ralph Castain <r...@open-mpi.org> wrote: > >> This change just looks wrong - you can't split the variables on a "space" >> as there is no way to know how many variables there might be, and thus how >> to parse the rest of the cmd line. At best, you need a comma-delimited list. >> >> Please fix this! >> Ralph >> >> >> >> On Tue, Apr 1, 2014 at 2:14 PM, <svn-commit-mai...@open-mpi.org> wrote: >> >>> Author: miked (Mike Dubman) >>> Date: 2014-04-01 17:14:31 EDT (Tue, 01 Apr 2014) >>> New Revision: 31302 >>> URL: https://svn.open-mpi.org/trac/ompi/changeset/31302 >>> >>> Log: >>> opal: add mca param to control ranks env variables >>> >>> add -mca base_env_list "var1=val1 var2=val2 ..." mca parameter that can >>> be used in mca param files >>> or with -am app.conf mpirun commandline to set rank env variables with >>> mca mechanism >>> >>> fixed by Elena, reviewed by Miked >>> >>> cmr=v1.8.1:reviewer=ompi-rm1.8 >>> >>> Text files modified: >>> trunk/opal/mca/base/help-mca-var.txt | 5 +++++ >>> trunk/opal/mca/base/mca_base_var.c | 36 >>> ++++++++++++++++++++++++++++++++++++ >>> trunk/opal/mca/base/mca_base_var.h | 2 ++ >>> trunk/orte/tools/orterun/orterun.c | 2 ++ >>> 4 files changed, 45 insertions(+), 0 deletions(-) >>> >>> Modified: trunk/opal/mca/base/help-mca-var.txt >>> >>> ============================================================================== >>> --- trunk/opal/mca/base/help-mca-var.txt Tue Apr 1 16:57:12 2014 >>> (r31301) >>> +++ trunk/opal/mca/base/help-mca-var.txt 2014-04-01 17:14:31 EDT >>> (Tue, 01 Apr 2014) (r31302) >>> @@ -121,3 +121,8 @@ >>> >>> Value: %s >>> Source: %s >>> +# >>> +[incorrect-env-list-param] >>> +The format of mca_base_env_list parameter is incorrect. It should be >>> +VAR1=VAL1 VAR2=VAL2 VAR3=VAL3 ... >>> + Value: %s >>> >>> Modified: trunk/opal/mca/base/mca_base_var.c >>> >>> ============================================================================== >>> --- trunk/opal/mca/base/mca_base_var.c Tue Apr 1 16:57:12 2014 >>> (r31301) >>> +++ trunk/opal/mca/base/mca_base_var.c 2014-04-01 17:14:31 EDT (Tue, 01 >>> Apr 2014) (r31302) >>> @@ -61,6 +61,7 @@ >>> static char *mca_base_var_override_file = NULL; >>> static char *mca_base_var_file_prefix = NULL; >>> static char *mca_base_param_file_path = NULL; >>> +static char *mca_base_env_list = NULL; >>> static bool mca_base_var_suppress_override_warning = false; >>> static opal_list_t mca_base_var_file_values; >>> static opal_list_t mca_base_var_override_values; >>> @@ -259,6 +260,41 @@ >>> return OPAL_SUCCESS; >>> } >>> >>> +int mca_base_var_process_env_list(char ***context_env) >>> +{ >>> + int i, ret; >>> + char** tokens; >>> + char* ptr; >>> + char* param, *value; >>> + ret = mca_base_var_register ("opal", "mca", "base", "env_list", >>> + "Set SHELL env variables", >>> + MCA_BASE_VAR_TYPE_STRING, NULL, 0, 0, >>> OPAL_INFO_LVL_3, >>> + MCA_BASE_VAR_SCOPE_READONLY, >>> &mca_base_env_list); >>> + if ((0 > ret) || (NULL == mca_base_env_list)) { >>> + return ret; >>> + } >>> + tokens = opal_argv_split(mca_base_env_list, ' '); >>> + if (NULL != tokens) { >>> + for (i = 0; NULL != tokens[i]; i++) { >>> + if (NULL == (ptr = strchr(tokens[i], '='))) { >>> + opal_show_help("help-mca-var.txt", >>> "incorrect-env-list-param", >>> + true, mca_base_env_list); >>> + opal_argv_free(tokens); >>> + return OPAL_ERROR; >>> + } else { >>> + param = strdup(tokens[i]); >>> + value = strchr(param, '='); >>> + *value = '\0'; >>> + value++; >>> + opal_setenv(param, value, false, context_env); >>> + free(param); >>> + } >>> + } >>> + opal_argv_free(tokens); >>> + } >>> + return OPAL_SUCCESS; >>> +} >>> + >>> static int mca_base_var_cache_files(bool rel_path_search) >>> { >>> char *tmp; >>> >>> Modified: trunk/opal/mca/base/mca_base_var.h >>> >>> ============================================================================== >>> --- trunk/opal/mca/base/mca_base_var.h Tue Apr 1 16:57:12 2014 >>> (r31301) >>> +++ trunk/opal/mca/base/mca_base_var.h 2014-04-01 17:14:31 EDT (Tue, 01 >>> Apr 2014) (r31302) >>> @@ -716,6 +716,8 @@ >>> */ >>> OPAL_DECLSPEC int mca_base_var_dump(int vari, char ***out, >>> mca_base_var_dump_type_t output_type); >>> >>> +OPAL_DECLSPEC int mca_base_var_process_env_list(char ***context_env); >>> + >>> END_C_DECLS >>> >>> #endif /* OPAL_MCA_BASE_VAR_H */ >>> >>> Modified: trunk/orte/tools/orterun/orterun.c >>> >>> ============================================================================== >>> --- trunk/orte/tools/orterun/orterun.c Tue Apr 1 16:57:12 2014 >>> (r31301) >>> +++ trunk/orte/tools/orterun/orterun.c 2014-04-01 17:14:31 EDT (Tue, 01 >>> Apr 2014) (r31302) >>> @@ -1628,6 +1628,8 @@ >>> goto cleanup; >>> } >>> mca_base_cmd_line_process_args(&cmd_line, app_env, &global_mca_env); >>> + mca_base_var_process_env_list(app_env); >>> + >>> >>> /* Is there an appfile in here? */ >>> >>> _______________________________________________ >>> svn mailing list >>> s...@open-mpi.org >>> http://www.open-mpi.org/mailman/listinfo.cgi/svn >>> >> >> >> _______________________________________________ >> devel mailing list >> de...@open-mpi.org >> Subscription: http://www.open-mpi.org/mailman/listinfo.cgi/devel >> Link to this post: >> http://www.open-mpi.org/community/lists/devel/2014/04/14441.php >> > > > _______________________________________________ > devel mailing list > de...@open-mpi.org > Subscription: http://www.open-mpi.org/mailman/listinfo.cgi/devel > Link to this post: > http://www.open-mpi.org/community/lists/devel/2014/04/14442.php >