57
57
#include "src/mca/base/pmix_mca_base_vari.h"
58
58
#include "src/mca/errmgr/errmgr.h"
59
59
#include "src/mca/ess/base/base.h"
60
+ #include "src/mca/pmdl/base/base.h"
60
61
#include "src/mca/rmaps/base/base.h"
61
62
#include "src/mca/state/base/base.h"
62
63
#include "src/runtime/prte_globals.h"
@@ -1821,232 +1822,6 @@ static int parse_env(char **srcenv, char ***dstenv,
1821
1822
return PRTE_SUCCESS ;
1822
1823
}
1823
1824
1824
- static bool check_prte_overlap (char * var , char * value )
1825
- {
1826
- char * tmp ;
1827
-
1828
- if (0 == strncmp (var , "dl_" , 3 )) {
1829
- pmix_asprintf (& tmp , "PRTE_MCA_prtedl_%s" , & var [3 ]);
1830
- // set it, but don't overwrite if they already
1831
- // have a value in our environment
1832
- setenv (tmp , value , false);
1833
- free (tmp );
1834
- return true;
1835
- } else if (0 == strncmp (var , "oob_" , 4 )) {
1836
- pmix_asprintf (& tmp , "PRTE_MCA_%s" , var );
1837
- // set it, but don't overwrite if they already
1838
- // have a value in our environment
1839
- setenv (tmp , value , false);
1840
- free (tmp );
1841
- return true;
1842
- } else if (0 == strncmp (var , "hwloc_" , 6 )) {
1843
- pmix_asprintf (& tmp , "PRTE_MCA_%s" , var );
1844
- // set it, but don't overwrite if they already
1845
- // have a value in our environment
1846
- setenv (tmp , value , false);
1847
- free (tmp );
1848
- return true;
1849
- } else if (0 == strncmp (var , "if_" , 3 )) {
1850
- // need to convert if to prteif
1851
- pmix_asprintf (& tmp , "PRTE_MCA_prteif_%s" , & var [3 ]);
1852
- // set it, but don't overwrite if they already
1853
- // have a value in our environment
1854
- setenv (tmp , value , false);
1855
- free (tmp );
1856
- return true;
1857
- } else if (0 == strncmp (var , "reachable_" , strlen ("reachable_" ))) {
1858
- // need to convert reachable to prtereachable
1859
- pmix_asprintf (& tmp , "PRTE_MCA_prtereachable_%s" , & var [strlen ("reachable_" )]);
1860
- // set it, but don't overwrite if they already
1861
- // have a value in our environment
1862
- setenv (tmp , value , false);
1863
- free (tmp );
1864
- return true;
1865
- } else if (0 == strncmp (var , "plm_rsh_" , strlen ("plm_rsh_" ))) {
1866
- // need to convert rsh to ssh
1867
- pmix_asprintf (& tmp , "PRTE_MCA_plm_ssh_%s" , & var [strlen ("plm_rsh_" )]);
1868
- // set it, but don't overwrite if they already
1869
- // have a value in our environment
1870
- setenv (tmp , value , false);
1871
- free (tmp );
1872
- return true;
1873
- } else if (0 == strncmp (var , "orte_" , strlen ("orte_" ))) {
1874
- // need to convert "orte" to "prte"
1875
- pmix_asprintf (& tmp , "PRTE_MCA_prte_%s" , & var [strlen ("orte_" )]);
1876
- // set it, but don't overwrite if they already
1877
- // have a value in our environment
1878
- setenv (tmp , value , false);
1879
- free (tmp );
1880
- return true;
1881
- }
1882
- return false;
1883
- }
1884
-
1885
-
1886
- static bool check_pmix_overlap (char * var , char * value )
1887
- {
1888
- char * tmp ;
1889
-
1890
- if (0 == strncmp (var , "dl_" , 3 )) {
1891
- pmix_asprintf (& tmp , "PMIX_MCA_pdl_%s" , & var [3 ]);
1892
- // set it, but don't overwrite if they already
1893
- // have a value in our environment
1894
- setenv (tmp , value , false);
1895
- free (tmp );
1896
- return true;
1897
- } else if (0 == strncmp (var , "oob_" , 4 )) {
1898
- pmix_asprintf (& tmp , "PMIX_MCA_ptl_%s" , & var [4 ]);
1899
- // set it, but don't overwrite if they already
1900
- // have a value in our environment
1901
- setenv (tmp , value , false);
1902
- free (tmp );
1903
- return true;
1904
- } else if (0 == strncmp (var , "hwloc_" , 6 )) {
1905
- pmix_asprintf (& tmp , "PMIX_MCA_%s" , var );
1906
- // set it, but don't overwrite if they already
1907
- // have a value in our environment
1908
- setenv (tmp , value , false);
1909
- free (tmp );
1910
- return true;
1911
- } else if (0 == strncmp (var , "if_" , 3 )) {
1912
- // need to convert if to pif
1913
- pmix_asprintf (& tmp , "PMIX_MCA_pif_%s" , & var [3 ]);
1914
- // set it, but don't overwrite if they already
1915
- // have a value in our environment
1916
- setenv (tmp , value , false);
1917
- free (tmp );
1918
- return true;
1919
- }
1920
- return false;
1921
- }
1922
-
1923
- // NOTE: This code is fundamentally the same (module PMIX <-> OPAL)
1924
- // as the translate_params() routine in the OMPI repo's
1925
- // opal/mca/pmix/base/pmix_base_fns.c file. If there are
1926
- // changes here, there are likely to be changes there.
1927
- static int translate_params (void )
1928
- {
1929
- char * evar , * tmp , * e2 ;
1930
- char * file ;
1931
- const char * home ;
1932
- pmix_list_t params ;
1933
- pmix_mca_base_var_file_value_t * fv ;
1934
- uid_t uid ;
1935
- int n , len ;
1936
-
1937
- /* since we are the proxy, we need to check the OMPI default
1938
- * MCA params to see if there is something relating to PRRTE
1939
- * in them - this would be "old" references to things from
1940
- * ORTE, as well as a few OPAL references that also impact us
1941
- *
1942
- * NOTE: we do this in the following precedence order. Note
1943
- * that we do not overwrite at any step - this is so that we
1944
- * don't overwrite something previously set by the user. So
1945
- * the order to execution is the opposite of the intended
1946
- * precedence order.
1947
- *
1948
- * 1. check the environmental paramaters for OMPI_MCA values
1949
- * that need to be translated
1950
- *
1951
- * 2. the user's home directory file as it should
1952
- * overwrite the system default file, but not the
1953
- * envars
1954
- *
1955
- * 3. the system default parameter file
1956
- */
1957
- len = strlen ("OMPI_MCA_" );
1958
- for (n = 0 ; NULL != environ [n ]; n ++ ) {
1959
- if (0 == strncmp (environ [n ], "OMPI_MCA_" , len )) {
1960
- e2 = strdup (environ [n ]);
1961
- evar = strrchr (e2 , '=' );
1962
- * evar = '\0' ;
1963
- ++ evar ;
1964
- if (check_prte_overlap (& e2 [len ], evar )) {
1965
- // check for pmix overlap
1966
- check_pmix_overlap (& e2 [len ], evar );
1967
- } else if (prte_schizo_base_check_prte_param (& e2 [len ])) {
1968
- pmix_asprintf (& tmp , "PRTE_MCA_%s" , & e2 [len ]);
1969
- // set it, but don't overwrite if they already
1970
- // have a value in our environment
1971
- setenv (tmp , evar , false);
1972
- free (tmp );
1973
- // check for pmix overlap
1974
- check_pmix_overlap (& e2 [len ], evar );
1975
- } else if (prte_schizo_base_check_pmix_param (& e2 [len ])) {
1976
- pmix_asprintf (& tmp , "PMIX_MCA_%s" , & e2 [len ]);
1977
- // set it, but don't overwrite if they already
1978
- // have a value in our environment
1979
- setenv (tmp , evar , false);
1980
- free (tmp );
1981
- }
1982
- free (e2 );
1983
- }
1984
- }
1985
-
1986
- /* see if the user has a default MCA param file */
1987
- uid = geteuid ();
1988
-
1989
- /* try to get their home directory */
1990
- home = pmix_home_directory (uid );
1991
- if (NULL != home ) {
1992
- file = pmix_os_path (false, home , ".openmpi" , "mca-params.conf" , NULL );
1993
- PMIX_CONSTRUCT (& params , pmix_list_t );
1994
- pmix_mca_base_parse_paramfile (file , & params );
1995
- free (file );
1996
- PMIX_LIST_FOREACH (fv , & params , pmix_mca_base_var_file_value_t ) {
1997
- // see if this param relates to PRRTE
1998
- if (check_prte_overlap (fv -> mbvfv_var , fv -> mbvfv_value )) {
1999
- check_pmix_overlap (fv -> mbvfv_var , fv -> mbvfv_value );
2000
- } else if (prte_schizo_base_check_prte_param (fv -> mbvfv_var )) {
2001
- pmix_asprintf (& tmp , "PRTE_MCA_%s" , fv -> mbvfv_var );
2002
- // set it, but don't overwrite if they already
2003
- // have a value in our environment
2004
- setenv (tmp , fv -> mbvfv_value , false);
2005
- free (tmp );
2006
- // if this relates to the DL, OOB, HWLOC, IF, or
2007
- // REACHABLE frameworks, then we also need to set
2008
- // the equivalent PMIx value
2009
- check_pmix_overlap (fv -> mbvfv_var , fv -> mbvfv_value );
2010
- } else if (prte_schizo_base_check_pmix_param (fv -> mbvfv_var )) {
2011
- pmix_asprintf (& tmp , "PMIX_MCA_%s" , fv -> mbvfv_var );
2012
- // set it, but don't overwrite if they already
2013
- // have a value in our environment
2014
- setenv (tmp , fv -> mbvfv_value , false);
2015
- free (tmp );
2016
- }
2017
- }
2018
- PMIX_LIST_DESTRUCT (& params );
2019
- }
2020
-
2021
- /* check if the user has set OMPIHOME in their environment */
2022
- if (NULL != (evar = getenv ("OMPIHOME" ))) {
2023
- /* look for the default MCA param file */
2024
- file = pmix_os_path (false, evar , "etc" , "openmpi-mca-params.conf" , NULL );
2025
- PMIX_CONSTRUCT (& params , pmix_list_t );
2026
- pmix_mca_base_parse_paramfile (file , & params );
2027
- free (file );
2028
- PMIX_LIST_FOREACH (fv , & params , pmix_mca_base_var_file_value_t ) {
2029
- // see if this param relates to PRRTE
2030
- if (check_prte_overlap (fv -> mbvfv_var , fv -> mbvfv_value )) {
2031
- check_pmix_overlap (fv -> mbvfv_var , fv -> mbvfv_value );
2032
- } else if (prte_schizo_base_check_prte_param (fv -> mbvfv_var )) {
2033
- pmix_asprintf (& tmp , "PRTE_MCA_%s" , fv -> mbvfv_var );
2034
- // set it, but don't overwrite if they already
2035
- // have a value in our environment
2036
- setenv (tmp , fv -> mbvfv_value , false);
2037
- free (tmp );
2038
- // if this relates to the DL, OOB, HWLOC, IF, or
2039
- // REACHABLE frameworks, then we also need to set
2040
- // the equivalent PMIx value
2041
- check_pmix_overlap (fv -> mbvfv_var , fv -> mbvfv_value );
2042
- }
2043
- }
2044
- PMIX_LIST_DESTRUCT (& params );
2045
- }
2046
-
2047
- return 100 ;
2048
- }
2049
-
2050
1825
static int detect_proxy (char * personalities )
2051
1826
{
2052
1827
char * evar ;
@@ -2062,15 +1837,15 @@ static int detect_proxy(char *personalities)
2062
1837
/* this is a list of personalities we need to check -
2063
1838
* if it contains "ompi", then we are available */
2064
1839
if (NULL != strstr (personalities , "ompi" )) {
2065
- return translate_params () ;
1840
+ return 100 ;
2066
1841
}
2067
1842
return 0 ;
2068
1843
}
2069
1844
2070
1845
/* if we were told the proxy, then use it */
2071
1846
if (NULL != (evar = getenv ("PRTE_MCA_schizo_proxy" ))) {
2072
1847
if (0 == strcmp (evar , "ompi" )) {
2073
- return translate_params () ;
1848
+ return 100 ;
2074
1849
} else {
2075
1850
return 0 ;
2076
1851
}
0 commit comments