@@ -174,14 +174,19 @@ static void evhandler(int status,
174
174
void * cbdata )
175
175
{
176
176
opal_value_t * val ;
177
+ int jobstatus = 0 ;
178
+ orte_jobid_t jobid = ORTE_JOBID_INVALID ;
177
179
178
- if (NULL != info ) {
180
+ if (orte_cmd_options . verbose && NULL != info ) {
179
181
OPAL_LIST_FOREACH (val , info , opal_value_t ) {
180
182
if (0 == strcmp (val -> key , OPAL_PMIX_JOB_TERM_STATUS )) {
181
- opal_output (0 , "JOB COMPLETED WITH STATUS %d" ,
182
- val -> data .integer );
183
+ jobstatus = val -> data .integer ;
184
+ } else if (0 == strcmp (val -> key , OPAL_PMIX_PROCID )) {
185
+ jobid = val -> data .name .jobid ;
183
186
}
184
187
}
188
+ opal_output (0 , "JOB %s COMPLETED WITH STATUS %d" ,
189
+ ORTE_JOBID_PRINT (jobid ), jobstatus );
185
190
}
186
191
if (NULL != cbfunc ) {
187
192
cbfunc (OPAL_SUCCESS , NULL , NULL , NULL , cbdata );
@@ -622,7 +627,9 @@ int prun(int argc, char *argv[])
622
627
OPAL_LIST_DESTRUCT (& job_info );
623
628
OPAL_LIST_DESTRUCT (& apps );
624
629
625
- opal_output (0 , "JOB %s EXECUTING" , OPAL_JOBID_PRINT (jobid ));
630
+ if (orte_cmd_options .verbose ) {
631
+ opal_output (0 , "JOB %s EXECUTING" , OPAL_JOBID_PRINT (jobid ));
632
+ }
626
633
627
634
while (active ) {
628
635
nanosleep (& tp , NULL );
@@ -788,6 +795,86 @@ static int create_app(int argc, char* argv[],
788
795
}
789
796
}
790
797
798
+ /* set necessary env variables for external usage from tune conf file*/
799
+ int set_from_file = 0 ;
800
+ char * * vars = NULL ;
801
+ if (OPAL_SUCCESS == mca_base_var_process_env_list_from_file (& vars ) &&
802
+ NULL != vars ) {
803
+ for (i = 0 ; NULL != vars [i ]; i ++ ) {
804
+ value = strchr (vars [i ], '=' );
805
+ /* terminate the name of the param */
806
+ * value = '\0' ;
807
+ /* step over the equals */
808
+ value ++ ;
809
+ /* overwrite any prior entry */
810
+ opal_setenv (vars [i ], value , true, & app -> env );
811
+ /* save it for any comm_spawn'd apps */
812
+ opal_setenv (vars [i ], value , true, & orte_forwarded_envars );
813
+ }
814
+ set_from_file = 1 ;
815
+ opal_argv_free (vars );
816
+ }
817
+ /* Did the user request to export any environment variables on the cmd line? */
818
+ char * env_set_flag ;
819
+ env_set_flag = getenv ("OMPI_MCA_mca_base_env_list" );
820
+ if (opal_cmd_line_is_taken (orte_cmd_line , "x" )) {
821
+ if (NULL != env_set_flag ) {
822
+ opal_show_help ("help-orterun.txt" , "orterun:conflict-env-set" , false);
823
+ return ORTE_ERR_FATAL ;
824
+ }
825
+ j = opal_cmd_line_get_ninsts (orte_cmd_line , "x" );
826
+ for (i = 0 ; i < j ; ++ i ) {
827
+ param = opal_cmd_line_get_param (orte_cmd_line , "x" , i , 0 );
828
+
829
+ if (NULL != (value = strchr (param , '=' ))) {
830
+ /* terminate the name of the param */
831
+ * value = '\0' ;
832
+ /* step over the equals */
833
+ value ++ ;
834
+ /* overwrite any prior entry */
835
+ opal_setenv (param , value , true, & app -> env );
836
+ /* save it for any comm_spawn'd apps */
837
+ opal_setenv (param , value , true, & orte_forwarded_envars );
838
+ } else {
839
+ value = getenv (param );
840
+ if (NULL != value ) {
841
+ /* overwrite any prior entry */
842
+ opal_setenv (param , value , true, & app -> env );
843
+ /* save it for any comm_spawn'd apps */
844
+ opal_setenv (param , value , true, & orte_forwarded_envars );
845
+ } else {
846
+ opal_output (0 , "Warning: could not find environment variable \"%s\"\n" , param );
847
+ }
848
+ }
849
+ }
850
+ } else if (NULL != env_set_flag ) {
851
+ /* if mca_base_env_list was set, check if some of env vars were set via -x from a conf file.
852
+ * If this is the case, error out.
853
+ */
854
+ if (!set_from_file ) {
855
+ /* set necessary env variables for external usage */
856
+ vars = NULL ;
857
+ if (OPAL_SUCCESS == mca_base_var_process_env_list (env_set_flag , & vars ) &&
858
+ NULL != vars ) {
859
+ for (i = 0 ; NULL != vars [i ]; i ++ ) {
860
+ value = strchr (vars [i ], '=' );
861
+ /* terminate the name of the param */
862
+ * value = '\0' ;
863
+ /* step over the equals */
864
+ value ++ ;
865
+ /* overwrite any prior entry */
866
+ opal_setenv (vars [i ], value , true, & app -> env );
867
+ /* save it for any comm_spawn'd apps */
868
+ opal_setenv (vars [i ], value , true, & orte_forwarded_envars );
869
+ }
870
+ opal_argv_free (vars );
871
+ }
872
+ } else {
873
+ opal_show_help ("help-orterun.txt" , "orterun:conflict-env-set" , false);
874
+ return ORTE_ERR_FATAL ;
875
+ }
876
+ }
877
+
791
878
/* Did the user request a specific wdir? */
792
879
793
880
if (NULL != orte_cmd_options .wdir ) {
0 commit comments