diff --git a/.gitignore b/.gitignore index 2c73b4381f..53cf3e82e7 100644 --- a/.gitignore +++ b/.gitignore @@ -45,12 +45,13 @@ Makefile Makefile.in -# hwloc has been de-modularized, but still uses parts of the MCA -# system due to the amount of glue code that ended up in the framework -# base. Until that is cleaned up, do not ignore the hard-coded -# static-components.h file. +# hwloc and pmix have been de-modularized, but still uses parts of the +# MCA system due to the amount of glue code that ended up in the +# framework base. Until that is cleaned up, do not ignore the +# hard-coded static-components.h file. static-components.h !opal/mca/hwloc/base/static-components.h +!opal/mca/pmix/base/static-components.h *\\# config.cache diff --git a/.gitmodules b/.gitmodules index 72a505ade4..83dd507df0 100644 --- a/.gitmodules +++ b/.gitmodules @@ -3,6 +3,6 @@ url = https://github.com/openpmix/prrte branch = master [submodule "openpmix"] - path = opal/mca/pmix/pmix4x/openpmix + path = 3rd-party/openpmix url = https://github.com/openpmix/openpmix.git branch = master diff --git a/3rd-party/openpmix b/3rd-party/openpmix new file mode 160000 index 0000000000..952a986999 --- /dev/null +++ b/3rd-party/openpmix @@ -0,0 +1 @@ +Subproject commit 952a986999027667b4d83bd257ea0efd9f908520 diff --git a/autogen.pl b/autogen.pl index 23572c6345..23b7ab455b 100755 --- a/autogen.pl +++ b/autogen.pl @@ -1477,6 +1477,19 @@ if ("hwloc" ~~ @disabled_3rdparty_packages) { verbose "--- hwloc enabled\n"; } +verbose "=== PMIx\n"; +if ("pmix" ~~ @disabled_3rdparty_packages) { + verbose "--- PMIx disabled\n"; +} else { + # sanity check pmix files exist + if (! -f "3rd-party/openpmix/configure.ac") { + my_die("Could not find pmix files\n"); + } + push(@subdirs, "3rd-party/openpmix/"); + $m4 .= "m4_define([package_pmix], [1])\n"; + verbose "--- PMIx enabled\n"; +} + $m4 .= "\n"; #--------------------------------------------------------------------------- diff --git a/config/ompi_setup_prrte.m4 b/config/ompi_setup_prrte.m4 index a654ce2da9..132f115e39 100644 --- a/config/ompi_setup_prrte.m4 +++ b/config/ompi_setup_prrte.m4 @@ -26,7 +26,7 @@ # AC_DEFUN([OMPI_SETUP_PRRTE],[ - OPAL_VAR_SCOPE_PUSH([opal_prrte_save_CPPFLAGS opal_prrte_save_CFLAGS opal_prrte_save_LDFLAGS opal_prrte_save_LIBS opal_prrte_args opal_prrte_save_enable_dlopen opal_prrte_save_enable_mca_dso opal_prrte_save_enable_mca_static opal_prrte_extra_libs opal_prrte_extra_ltlibs opal_prrte_extra_ldflags opal_prrte_save_with_pmix]) + OPAL_VAR_SCOPE_PUSH([opal_prrte_save_CPPFLAGS opal_prrte_save_CFLAGS opal_prrte_save_LDFLAGS opal_prrte_save_LIBS opal_prrte_args opal_prrte_save_enable_dlopen opal_prrte_save_enable_mca_dso opal_prrte_save_enable_mca_static opal_prrte_extra_libs opal_prrte_extra_ltlibs opal_prrte_extra_ldflags]) opal_prrte_save_CFLAGS=$CFLAGS opal_prrte_save_CPPFLAGS=$CPPFLAGS @@ -35,7 +35,6 @@ AC_DEFUN([OMPI_SETUP_PRRTE],[ opal_prrte_save_enable_dlopen=enable_dlopen opal_prrte_save_enable_mca_dso=enable_mca_dso opal_prrte_save_enable_mca_static=enable_mca_static - opal_prrte_save_with_pmix=with_pmix AC_ARG_ENABLE([internal-rte], [AC_HELP_STRING([--enable-internal-rte], @@ -49,21 +48,12 @@ AC_DEFUN([OMPI_SETUP_PRRTE],[ [AC_HELP_STRING([--enable-prte-prefix-by-default], [Make "mpirun ..." behave exactly the same as "mpirun --prefix \$prefix" (where \$prefix is the value given to --prefix in configure) (default:enabled)])]) - AS_IF([test "$opal_external_pmix_happy" = "yes" && test $opal_numerical_pmix_version -lt 4 && test "$enable_internal_rte" != "no"], - [AC_MSG_WARN([OMPI's internal runtime environment "PRRTE" does not support]) - AC_MSG_WARN([PMIx versions less than v4.x as they lack adequate tool]) - AC_MSG_WARN([support. You can, if desired, build OMPI against an earlier]) - AC_MSG_WARN([version of PMIx for strictly direct-launch purposes - e.g., using)]) - AC_MSG_WARN([Slurm's srun to launch the job - by configuring with the]) - AC_MSG_WARN([--disable-internal-rte option.]) - AC_MSG_ERROR([Cannot continue])]) - AC_MSG_CHECKING([if RTE support is enabled]) - if test "$enable_internal_rte" != "no"; then - AC_MSG_RESULT([yes]) + AS_IF([test "$enable_internal_rte" != "no"], + [AC_MSG_RESULT([yes]) ompi_want_prrte=yes - opal_prrte_extra_libs=$OMPI_TOP_BUILDDIR/opal/libopen-pal.la - opal_prrte_extra_ltlibs=$OMPI_TOP_BUILDDIR/opal/libopen-pal.la + opal_prrte_extra_libs= + opal_prrte_extra_ltlibs= AS_IF([test "$opal_libevent_mode" = "internal"], [opal_prrte_extra_libs="$opal_prrte_extra_libs $opal_libevent_LIBS" @@ -85,15 +75,39 @@ AC_DEFUN([OMPI_SETUP_PRRTE],[ AS_IF([test ! -z "$with_hwloc_libdir"], [opal_prrte_hwloc_arg="$opal_prrte_hwloc_arg --with-hwloc-libdir=$with_hwloc_libdir"])]) - if test -z $with_pmix || test "$with_pmix" = "internal" || test "$with_pmix" = "yes"; then - opal_prrte_pmix_arg="--with-pmix-header=$OMPI_TOP_SRCDIR/opal/mca/pmix/pmix-internal.h" - else - if test "$with_pmix" = "external"; then - opal_prrte_pmix_arg="--with-pmix" - else - opal_prrte_pmix_arg="--with-pmix=$with_pmix" - fi - fi + AS_IF([test "$opal_pmix_mode" = "internal"], + [opal_prrte_extra_libs="$opal_prrte_extra_libs $opal_pmix_LIBS" + opal_prrte_extra_ltlibs="$opal_prrte_extra_ltlibs $opal_pmix_LIBS" + + AS_IF([test ! -z "$opal_pmix_header"], + [opal_prrte_pmix_arg="--with-pmix-header=$opal_pmix_header"])], + [OPAL_VAR_SCOPE_PUSH([opal_prrte_CPPFLAGS_save]) + opal_prrte_CPPFLAGS_save=$CPPFLAGS + + AC_MSG_CHECKING([if external PMIx version is 3.0.0 or greater]) + AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include ]], + [[ +#if PMIX_VERSION_MAJOR < 4L +#error "pmix API version is less than 4.0.0" +#endif + ]])], + [AC_MSG_RESULT([yes])], + [AC_MSG_RESULT([no]) + AC_MSG_WARN([OMPI's internal runtime environment "PRRTE" does not support]) + AC_MSG_WARN([PMIx versions less than v4.x as they lack adequate tool]) + AC_MSG_WARN([support. You can, if desired, build OMPI against an earlier]) + AC_MSG_WARN([version of PMIx for strictly direct-launch purposes - e.g., using)]) + AC_MSG_WARN([Slurm's srun to launch the job - by configuring with the]) + AC_MSG_WARN([--disable-internal-rte option.]) + AC_MSG_ERROR([Cannot continue])]) + + CPPFLAGS=$opal_prrte_CPPFLAGS_save + + OPAL_VAR_SCOPE_POP + + opal_prrte_pmix_arg="--with-pmix=$with_pmix" + AS_IF([test ! -z "$with_pmix_libdir"], + [opal_prrte_pmix_arg="$opal_prrte_pmix_arg --with-pmix-libdir=$with_pmix_libdir"])]) if test -z $enable_prte_prefix_by_default || test "$enable_prte_prefix_by_default" = "yes" || test "$enable_orterun_prefix_given" = "yes"; then @@ -124,13 +138,10 @@ AC_DEFUN([OMPI_SETUP_PRRTE],[ [$opal_prrte_args $opal_subdir_args 'CFLAGS=$CFLAGS' 'CPPFLAGS=$CPPFLAGS'], [opal_prrte_happy=1], [opal_prrte_happy=0]) - OPAL_SUMMARY_ADD([[Miscellaneous]],[[PRRTE]],[prrte],[yes]) - - else - OPAL_SUMMARY_ADD([[Miscellaneous]],[[PRRTE]],[prrte],[no (disabled)]) + OPAL_SUMMARY_ADD([[Miscellaneous]],[[PRRTE]],[prrte],[yes])], + [OPAL_SUMMARY_ADD([[Miscellaneous]],[[PRRTE]],[prrte],[no (disabled)]) AC_MSG_RESULT([no (disabled)]) - ompi_want_prrte=no - fi + ompi_want_prrte=no]) CFLAGS=$opal_prrte_save_CFLAGS CPPFLAGS=$opal_prrte_save_CPPFLAGS diff --git a/config/opal_config_pmix.m4 b/config/opal_config_pmix.m4 new file mode 100644 index 0000000000..61d2414f59 --- /dev/null +++ b/config/opal_config_pmix.m4 @@ -0,0 +1,200 @@ +dnl -*- autoconf -*- +dnl +dnl Copyright (c) 2004-2005 The Trustees of Indiana University and Indiana +dnl University Research and Technology +dnl Corporation. All rights reserved. +dnl Copyright (c) 2004-2005 The University of Tennessee and The University +dnl of Tennessee Research Foundation. All rights +dnl reserved. +dnl Copyright (c) 2004-2005 High Performance Computing Center Stuttgart, +dnl University of Stuttgart. All rights reserved. +dnl Copyright (c) 2004-2005 The Regents of the University of California. +dnl All rights reserved. +dnl Copyright (c) 2009-2019 Cisco Systems, Inc. All rights reserved. +dnl Copyright (c) 2011-2014 Los Alamos National Security, LLC. All rights +dnl reserved. +dnl Copyright (c) 2014-2019 Intel, Inc. All rights reserved. +dnl Copyright (c) 2014-2018 Research Organization for Information Science +dnl and Technology (RIST). All rights reserved. +dnl Copyright (c) 2016 IBM Corporation. All rights reserved. +dnl Copyright (c) 2020 Triad National Security, LLC. All rights +dnl reserved. +dnl Copyright (c) 2020 Amazon.com, Inc. or its affiliates. All Rights +dnl reserved. +dnl $COPYRIGHT$ +dnl +dnl Additional copyrights may follow +dnl +dnl $HEADER$ +dnl + +dnl Check for / configure PMIx package. Prefer finding an +dnl external PMIx, build our internal one if required. If we can +dnl not find an external PMIx and the internal one fails to +dnl configure, abort. +dnl +dnl This macro will change the environment in the following way: +dnl +dnl * opal_pmix_header [legacy] - will be set if building +dnl internally, to the header file that should be included for +dnl embedded builds. This is used by PRRTE, but should not +dnl be used by new code. +dnl * opal_pmix_mode - either external or internal. If internal, +dnl --with-pmix should be ignored by other packages +dnl * opal_pmix_CPPFLAGS - the C Preprocessor flags necessary to +dnl run the preprocessor on a file which relies on PMIx +dnl headers. This will be folded into the global CPPFLAGS, +dnl so most people should never need this. +dnl * opal_pmix_LDFLAGS - the linker flags necessary to run the +dnl linker on a file which relies on PMIx libraries. This +dnl will be folded into the global CPPFLAGS, so most people +dnl should never need this. +dnl * opal_pmix_LIBS - the libraries necessary to link source which +dnl uses PMIx. Cannot be added to LIBS yet, because then +dnl other execution tests later in configure (there are sadly +dnl some) would fail if the path in LDFLAGS was not added to +dnl LD_LIBRARY_PATH. +dnl * CPPFLAGS, LDFLAGS - Updated opal_pmix_CPPFLAGS and +dnl opal_pmix_LDFLAGS. +AC_DEFUN([OPAL_CONFIG_PMIX], [ + OPAL_VAR_SCOPE_PUSH([external_pmix_happy internal_pmix_happy internal_pmix_args internal_pmix_libs]) + + opal_show_subtitle "Configuring PMIx" + + OPAL_3RDPARTY_WITH([pmix], [pmix], [package_pmix]) + + opal_pmix_header="" + + internal_pmix_happy=0 + m4_ifdef([package_pmix], + [# always configure the internal pmix, so that + # make dist always works. + internal_pmix_args="--without-tests-examples --disable-pmix-binaries --disable-pmix-backward-compatibility --disable-visibility" + internal_pmix_libs= + + AS_IF([test "$opal_libevent_mode" = "internal"], + [internal_pmix_args="$internal_pmix_args --with-libevent=cobuild" + internal_pmix_libs="$internal_pmix_libs $opal_libevent_LIBS"]) + + AS_IF([test "$opal_hwloc_mode" = "internal"], + [internal_pmix_args="$internal_pmix_args --with-hwloc=cobuild" + internal_pmix_libs="$internal_pmix_libs $opal_hwloc_LIBS"]) + + AS_IF([test ! -z "$internal_pmix_libs"], + [internal_pmix_args="$internal_pmix_args --with-prte-extra-lib=\"$internal_pmix_libs\""]) + + # Pass all our compiler/linker flags to PMIx, so that it + # picks up how to build an internal HWLOC and libevent, plus + # picks up any user-specified compiler flags from the master + # configure run. + export CFLAGS CPPFLAGS LDFLAGS + PAC_CONFIG_SUBDIR_ARGS([3rd-party/openpmix], [$internal_pmix_args], + [[--with-libevent=internal], [--with-hwloc=internal], + [--with-libevent=external], [--with-hwloc=external], + [--with-pmix=.*], [--with-platform=.*]], + [internal_pmix_happy=1]) + OPAL_3RDPARTY_DIST_SUBDIRS="$OPAL_3RDPARTY_DIST_SUBDIRS openpmix"]) + + # unless internal specifically requested by the user, try to find + # an external that works. + external_pmix_happy=0 + AS_IF([test "opal_pmix_mode" != "internal"], + [_OPAL_CONFIG_PMIX_EXTERNAL( + [external_pmix_happy=1 + opal_pmix_mode="external"], + [AS_IF([test "$opal_pmix_mode" = "external"], + [AC_MSG_ERROR([External PMIx requested but not found.])])])]) + + # external did not work out and customer did not specify external, + # so try the internal version. + AS_IF([test "$external_pmix_happy" = "0" -a "$internal_pmix_happy" = "1"], + [opal_pmix_mode="internal" + _OPAL_CONFIG_PMIX_INTERNAL_POST()]) + + AS_IF([test "$external_pmix_happy" = "0" -a "$internal_pmix_happy" = "0"], + [AC_MSG_ERROR([Could not find viable pmix build.])]) + + AC_SUBST(opal_pmix_CPPFLAGS) + AC_SUBST(opal_pmix_LDFLAGS) + AC_SUBST(opal_pmix_LIBS) + + OPAL_SUMMARY_ADD([[Miscellaneous]], [[pmix]], [pmix], [$opal_pmix_mode]) + + OPAL_VAR_SCOPE_POP +]) + +dnl _OPAL_CONFIG_PMIX_EXTERNAL(action-if-happy, action-if-not-happy) +dnl +dnl only safe to call from OPAL_CONFIG_PMIX, assumes variables from +dnl there are set. +AC_DEFUN([_OPAL_CONFIG_PMIX_EXTERNAL], [ + OPAL_VAR_SCOPE_PUSH([opal_pmix_CPPFLAGS_save opal_pmix_LDFLAGS_save opal_pmix_LIBS_save opal_pmix_external_support]) + + opal_pmix_CPPFLAGS_save=$CPPFLAGS + opal_pmix_LDFLAGS_save=$LDFLAGS + opal_pmix_LIBS_save=$LIBS + + opal_pmix_external_support="yes" + + AS_IF([test "$opal_libevent_mode" = "internal" -o "$opal_hwloc_mode" = "internal"], + [opal_pmix_external_support="no" + AS_IF([test "$opal_pmix_mode" = "external"], + [AC_MSG_ERROR([Building against an external PMIx with an internal Libevent or HWLOC is unsupported. Cannot continue.])])], + [AS_IF([test ! -z "$with_pmix_libdir"], + [OPAL_CHECK_WITHDIR([pmix-libdir], [$with_pmix_libdir], + [libpmix.*])]) + + OPAL_CHECK_PACKAGE([opal_pmix], + [pmix.h], + [pmix], + [PMIx_Init], + [], + [$with_pmix], + [$with_pmix_libdir], + [], + [opal_pmix_external_support=no]) + + # need these set for the tests below. If things fail, will undo at the end. + CPPFLAGS="$opal_pmix_CPPFLAGS_save $opal_pmix_CPPFLAGS" + LDFLAGS="$opal_pmix_LDFLAGS_save $opal_pmix_LDFLAGS" + LIBS="$opal_pmix_LIBS_save $opal_pmix_LIBS" + + AS_IF([test "$opal_pmix_external_support" = "yes"], + [AC_MSG_CHECKING([if external PMIx version is 3.0.0 or greater]) + AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include ]], + [[ +#if PMIX_VERSION_MAJOR < 3L +#error "pmix API version is less than 3.0.0" +#endif + ]])], + [AC_MSG_RESULT([yes])], + [AC_MSG_RESULT([no]) + opal_pmix_external_support=no])]) + + LDFLAGS="$opal_pmix_LDFLAGS_save" + LIBS="$opal_pmix_LIBS_save" + + AS_IF([test "$opal_pmix_external_support" = "yes"], + [$1], + [CPPFLAGS="$opal_pmix_CPPFLAGS_save" + $2])]) + + OPAL_VAR_SCOPE_POP +]) + +dnl _OPAL_CONFIG_PMIX_INTERNAL_POST() +dnl +dnl Expectation is that this is called only if external fails, the +dnl caller configured libpmix configure, and the configure script +dnl succeeded. +AC_DEFUN([_OPAL_CONFIG_PMIX_INTERNAL_POST], [ + opal_pmix_CPPFLAGS="-I$OMPI_TOP_BUILDDIR/3rd-party/openpmix/include -I$OMPI_TOP_SRCDIR/3rd-party/openpmix/include" + opal_pmix_LDFLAGS="" + opal_pmix_LIBS="$OMPI_TOP_BUILDDIR/3rd-party/openpmix/src/libpmix.la" + + CPPFLAGS="$CPPFLAGS $opal_pmix_CPPFLAGS" + + opal_pmix_header="$OMPI_TOP_SRCDIR/opal/mca/pmix/pmix-3rdparty.h" + + OPAL_3RDPARTY_SUBDIRS="$OPAL_3RDPARTY_SUBDIRS openpmix" +]) diff --git a/configure.ac b/configure.ac index 953234f8bf..285517bb46 100644 --- a/configure.ac +++ b/configure.ac @@ -255,7 +255,7 @@ m4_ifdef([project_oshmem], OPAL_CONFIGURE_OPTIONS OPAL_CHECK_OS_FLAVORS OPAL_CHECK_CUDA -OPAL_CHECK_PMIX + m4_ifdef([project_ompi], [OMPI_CONFIGURE_OPTIONS]) m4_ifdef([project_oshmem], [OSHMEM_CONFIGURE_OPTIONS]) @@ -1110,6 +1110,7 @@ OPAL_3RDPARY_DISTCLEAN_DIRS= OPAL_CONFIG_LIBEVENT OPAL_CONFIG_HWLOC +OPAL_CONFIG_PMIX AC_SUBST(OPAL_3RDPARTY_SUBDIRS) AC_SUBST(OPAL_3RDPARTY_DIST_SUBDIRS) diff --git a/opal/Makefile.am b/opal/Makefile.am index 6bf393253c..142eb59d3b 100644 --- a/opal/Makefile.am +++ b/opal/Makefile.am @@ -55,7 +55,8 @@ lib@OPAL_LIB_PREFIX@open_pal_la_LIBADD = \ util/libopalutil.la \ $(MCA_opal_FRAMEWORK_LIBS) \ $(opal_libevent_LIBS) \ - $(opal_hwloc_LIBS) + $(opal_hwloc_LIBS) \ + $(opal_pmix_LIBS) lib@OPAL_LIB_PREFIX@open_pal_la_DEPENDENCIES = \ datatype/libdatatype.la \ mca/base/libmca_base.la \ @@ -63,7 +64,8 @@ lib@OPAL_LIB_PREFIX@open_pal_la_DEPENDENCIES = \ $(MCA_opal_FRAMEWORK_LIBS) lib@OPAL_LIB_PREFIX@open_pal_la_LDFLAGS = -version-info $(libopen_pal_so_version) \ $(opal_libevent_LDFLAGS) \ - $(opal_hwloc_LDFLAGS) + $(opal_hwloc_LDFLAGS) \ + $(opal_pmix_LDFLAGS) # included subdirectory Makefile.am's and appended-to variables headers = diff --git a/opal/mca/pmix/Makefile.am b/opal/mca/pmix/Makefile.am index ae479349ef..6fa5781f92 100644 --- a/opal/mca/pmix/Makefile.am +++ b/opal/mca/pmix/Makefile.am @@ -15,7 +15,8 @@ noinst_LTLIBRARIES = libmca_pmix.la libmca_pmix_la_SOURCES = # local files -headers = pmix-internal.h +headers = pmix-internal.h \ + pmix-3rdparty.h libmca_pmix_la_SOURCES += $(headers) # Conditionally install the header files @@ -25,6 +26,3 @@ nobase_opal_HEADERS = $(headers) endif include base/Makefile.am - -distclean-local: - rm -f base/static-components.h diff --git a/opal/mca/pmix/base/Makefile.am b/opal/mca/pmix/base/Makefile.am index 79186fb3a5..a715518eed 100644 --- a/opal/mca/pmix/base/Makefile.am +++ b/opal/mca/pmix/base/Makefile.am @@ -12,7 +12,8 @@ dist_opaldata_DATA += base/help-pmix-base.txt headers += \ - base/base.h + base/base.h \ + base/static-components.h libmca_pmix_la_SOURCES += \ base/pmix_base_frame.c \ diff --git a/opal/mca/pmix/base/static-components.h b/opal/mca/pmix/base/static-components.h new file mode 100644 index 0000000000..a4e4303659 --- /dev/null +++ b/opal/mca/pmix/base/static-components.h @@ -0,0 +1,18 @@ +/* + * $HEADER$ + */ +#if defined(c_plusplus) || defined(__cplusplus) +extern "C" { +#endif + +extern const mca_base_component_t mca_pmix_pmix4x_component; + +const mca_base_component_t *mca_pmix_base_static_components[] = { + + NULL +}; + +#if defined(c_plusplus) || defined(__cplusplus) +} +#endif + diff --git a/opal/mca/pmix/configure.m4 b/opal/mca/pmix/configure.m4 index a7f13f6158..e7dfc10bd5 100644 --- a/opal/mca/pmix/configure.m4 +++ b/opal/mca/pmix/configure.m4 @@ -2,6 +2,8 @@ dnl -*- shell-script -*- dnl dnl Copyright (c) 2010-2017 Cisco Systems, Inc. All rights reserved dnl Copyright (c) 2019 Intel, Inc. All rights reserved. +dnl Copyright (c) 2020 Amazon.com, Inc. or its affiliates. All Rights +dnl reserved. dnl $COPYRIGHT$ dnl dnl Additional copyrights may follow @@ -9,101 +11,19 @@ dnl dnl $HEADER$ dnl -# There will only be one component used in this framework, and it will -# be selected at configure time by priority. Components must set -# their priorities in their configure.m4 files. They must also set -# the shell variable $opal_pmix_base_include to a header file -# name (relative to the top OMPI source directory) that will be -# included in opal/mca/pmix/pmix-internal.h. - -dnl We only want one winning component (vs. STOP_AT_FIRST_PRIORITY, -dnl which will allow all components of the same priority who succeed to -dnl win) -m4_define(MCA_opal_pmix_CONFIGURE_MODE, STOP_AT_FIRST) - +# +# In days of old, pmix was packaged as multiple MCA components, and +# grew an extensive set of base code to support Open MPI's use of +# pmix. When internal builds of libevent, hwloc, and pmix were moved +# out of components into base code so that they could be shared +# between Open MPI and PRRTE without incurring linking hell, we left +# the base code active. This MCA framework is essentially defunct; +# its only purpose is to allow continued use of the base code. +# +# We do not expect to find any components, nor do we allow any to be +# configured. The top-level configure will set all the flags in all +# the right places needed to link pmix. +# AC_DEFUN([MCA_opal_pmix_CONFIG],[ - opal_pmix_base_include= - - # See if we want internal vs external pmix - AC_ARG_WITH(pmix, - AC_HELP_STRING([--with-pmix(=DIR)], - [Build pmix support. DIR can take one of three values: "internal", "external", or a valid directory name. "internal" (or no DIR value) forces Open MPI to use its internal copy of pmix. "external" forces Open MPI to use an external installation of pmix. Supplying a valid directory name also forces Open MPI to use an external installation of pmix, and adds DIR/include, DIR/lib, and DIR/lib64 to the search path for headers and libraries. Note that Open MPI no longer supports --without-pmix.])) - - # check for error - AS_IF([test "$with_pmix" = "no"], - [AC_MSG_WARN([Open MPI requires PMIX support. It can be built]) - AC_MSG_WARN([with either its own internal copy of PMIX, or with]) - AC_MSG_WARN([an external copy that you supply.]) - AC_MSG_ERROR([Cannot continue])]) - - # Configure all the components - always have to do this. Note that - # instead of passing in - # the traditional $1 and $2 as the first arguments, we hard-code - # "opal" and "pmix", because this macro is invoked via AC - # REQUIRE. - MCA_CONFIGURE_FRAMEWORK([opal], [pmix], 1) - - # Give a blank line to separate these messages from the last - # component's configure.m4 output. - echo " " - - # If we aren't given a specific component, then we must find one - AS_IF([test "$with_pmix" = ""], [], - [ # STOP_AT_FIRST_PRIORITY will guarantee that we find at most - # one. We need to check here that we found *at least* one. - AS_IF([test "$MCA_opal_pmix_STATIC_COMPONENTS" = ""], - [AC_MSG_WARN([Did not find a suitable static opal pmix component]) - AC_MSG_ERROR([Cannot continue])]) - ]) - - # If we have a winning component, do some more logic - AS_IF([test "$MCA_opal_pmix_STATIC_COMPONENTS" != ""], - [ # We had a winner -- w00t! - # The winning component will have told us where their header file - # is located - AC_MSG_CHECKING([for winning pmix component header file]) - AS_IF([test "$opal_pmix_base_include" = ""], - [AC_MSG_RESULT([missing]) - AC_MSG_WARN([Missing implementation header]) - AC_MSG_ERROR([Cannot continue])]) - AC_MSG_RESULT([$opal_pmix_base_include]) - AC_DEFINE_UNQUOTED([MCA_pmix_IMPLEMENTATION_HEADER], - ["$opal_pmix_base_include"], - [Header to include for pmix implementation]) - - # If we added any -L flags to ADD_LDFLAGS, then we (might) - # need to add those directories to LD_LIBRARY_PATH. - # Otherwise, if we try to AC RUN_IFELSE anything here in - # configure, it might die because it can't find the libraries - # we just linked against. - OPAL_VAR_SCOPE_PUSH([opal_pmix_base_found_l opal_pmix_base_token opal_pmix_base_tmp opal_pmix_base_dir]) - opal_pmix_base_found_l=0 - eval "opal_pmix_base_tmp=\$opal_pmix_${opal_pmix_winner}_ADD_LIBS" - for opal_pmix_base_token in $opal_pmix_base_tmp; do - case $opal_pmix_base_token in - -l*) opal_pmix_base_found_l=1 ;; - esac - done - AS_IF([test $opal_pmix_base_found_l -eq 1], - [eval "opal_pmix_base_tmp=\$opal_pmix_${opal_pmix_winner}_ADD_LDFLAGS" - for opal_pmix_base_token in $opal_pmix_base_tmp; do - case $opal_pmix_base_token in - -L*) - opal_pmix_base_dir=`echo $opal_pmix_base_token | cut -c3-` - export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$opal_pmix_base_dir - AC_MSG_WARN([Adding to LD_LIBRARY_PATH: $opal_pmix_base_dir]) - ;; - esac - done]) - OPAL_VAR_SCOPE_POP - ]) - - # Similar to above, if this m4 is being invoked "early" via AC - # REQUIRE, print out a nice banner that we have now finished - # pre-emption and are returning to the Normal Order Of Things. - AS_IF([test "$opal_pmix_its_time_to_configure" != "1"], - [echo " " - echo "<== Pre-emptive pmix framework configuration complete." - echo "<== We now return you to your regularly scheduled programming." - echo " "]); + AC_CONFIG_FILES([$1/mca/$2/Makefile]) ]) diff --git a/opal/mca/pmix/external/Makefile.am b/opal/mca/pmix/external/Makefile.am deleted file mode 100644 index 3f3a88c50e..0000000000 --- a/opal/mca/pmix/external/Makefile.am +++ /dev/null @@ -1,34 +0,0 @@ -# -# Copyright (c) 2011-2012 Cisco Systems, Inc. All rights reserved. -# Copyright (c) 2016-2019 Intel, Inc. All rights reserved. -# Copyright (c) 2020 Triad National Security, LLC. All rights -# reserved. -# -# $COPYRIGHT$ -# -# Additional copyrights may follow -# -# $HEADER$ -# - -# This is a special component -- its main purpose in life is to have -# its configure.m4 add some things to CPPFLAGS, LDFLAGS, and -# LIBS. Hence, there's nothing to build here. :-) - -# We only ever build this component statically - -noinst_LTLIBRARIES = libmca_pmix_external.la - -libmca_pmix_external_la_SOURCES = \ - external.h \ - pmix_external_component.c - -libmca_pmix_external_la_LIBADD = $(opal_external_pmix_LIBS) -libmca_pmix_external_la_LDFLAGS = \ - -module -avoid-version $(opal_external_pmix_LDFLAGS) - -# Conditionally install the header files -if WANT_INSTALL_HEADERS -opaldir = $(opalincludedir)/$(subdir) -nobase_opal_HEADERS = external.h -endif diff --git a/opal/mca/pmix/external/configure.m4 b/opal/mca/pmix/external/configure.m4 deleted file mode 100644 index 5946806336..0000000000 --- a/opal/mca/pmix/external/configure.m4 +++ /dev/null @@ -1,65 +0,0 @@ -# -*- shell-script -*- -# -# Copyright (c) 2009-2017 Cisco Systems, Inc. All rights reserved -# Copyright (c) 2014-2018 Research Organization for Information Science -# and Technology (RIST). All rights reserved. -# -# Copyright (c) 2018-2019 Intel, Inc. All rights reserved. -# $COPYRIGHT$ -# -# Additional copyrights may follow -# -# $HEADER$ -# - -# -# Priority -# -AC_DEFUN([MCA_opal_pmix_external_PRIORITY], [90]) - -# -# Force this component to compile in static-only mode -# -AC_DEFUN([MCA_opal_pmix_external_COMPILE_MODE], [ - AC_MSG_CHECKING([for MCA component $2:$3 compile mode]) - $4="static" - AC_MSG_RESULT([$$4]) -]) - - -# MCA_pmix_external_POST_CONFIG() -# --------------------------------- -AC_DEFUN([MCA_opal_pmix_external_POST_CONFIG],[ - OPAL_VAR_SCOPE_PUSH([opal_pmix_external_basedir]) - - # If we won, then do all the rest of the setup - AS_IF([test "$1" = "1"], - [ # Set this variable so that the framework m4 knows what - # file to include in opal/mca/pmix/pmix-internal.h - # The CPPFLAGS, LDFLAGS, and LIBS were already set - # by the configury - opal_pmix_external_basedir=opal/mca/pmix/external - opal_pmix_base_include="$opal_pmix_external_basedir/external.h" - ]) - OPAL_VAR_SCOPE_POP -])dnl - - -# MCA_pmix_external_CONFIG([action-if-found], [action-if-not-found]) -# -------------------------------------------------------------------- -AC_DEFUN([MCA_opal_pmix_external_CONFIG],[ - AC_CONFIG_FILES([opal/mca/pmix/external/Makefile]) - - AS_IF([test "$opal_external_pmix_happy" = "yes"], - [$1], [$2]) - - AS_IF([test "$opal_external_pmix_happy" = "yes"], - [AS_IF([test "$opal_event_external_support" != "yes" || test "$opal_hwloc_external_support" != "yes"], - [AC_MSG_WARN([EXTERNAL PMIX SUPPORT REQUIRES USE OF EXTERNAL LIBEVENT AND HWLOC]) - AC_MSG_WARN([LIBRARIES. THESE LIBRARIES MUST POINT TO THE SAME ONES USED]) - AC_MSG_WARN([TO BUILD PMIX OR ELSE UNPREDICTABLE BEHAVIOR MAY RESULT]) - AC_MSG_ERROR([PLEASE CORRECT THE CONFIGURE COMMAND LINE AND REBUILD])]) - ]) - - OPAL_VAR_SCOPE_POP -])dnl diff --git a/opal/mca/pmix/external/external.h b/opal/mca/pmix/external/external.h deleted file mode 100644 index 27d5c4aa4b..0000000000 --- a/opal/mca/pmix/external/external.h +++ /dev/null @@ -1,46 +0,0 @@ -/* - * Copyright (c) 2011-2019 Cisco Systems, Inc. All rights reserved - * Copyright (c) 2016-2019 Research Organization for Information Science - * and Technology (RIST). All rights reserved. - * - * Copyright (c) 2016-2019 Intel, Inc. All rights reserved. - * $COPYRIGHT$ - * - * Additional copyrights may follow - * - * $HEADER$ - * - * When this component is used, this file is included in the rest of - * the OPAL/OMPI code base via opal/mca/pmix/pmix-internal.h. As such, - * this header represents the public interface to this static component. - */ - -#ifndef MCA_OPAL_PMIX_EXTERNAL_H -#define MCA_OPAL_PMIX_EXTERNAL_H - -BEGIN_C_DECLS - -#include - -/* Top-level configure will always configure the embedded pmix - * component, even if we already know that we'll be using an external - * pmix (because of complicated reasons). A side-effect of this is - * that the embedded pmix will AC_DEFINE PMIX_VERSION (and friends) - * in opal_config.h. If the external pmix defines a different value - * of PMIX_VERSION (etc.), we'll get zillions of warnings about the - * two PMIX_VERSION values not matching. Hence, we undefined all of - * them here (so that the external can define them to - * whatever it wants). */ - -#undef PMIX_VERSION -#undef PMIX_VERSION_MAJOR -#undef PMIX_VERSION_MINOR -#undef PMIX_VERSION_RELEASE -#undef PMIX_VERSION_GREEK - -#include "pmix_common.h" -#include "pmix.h" - -END_C_DECLS - -#endif /* MCA_OPAL_PMIX_EXTERNAL_H */ diff --git a/opal/mca/pmix/external/owner.txt b/opal/mca/pmix/external/owner.txt deleted file mode 100644 index e3c6bfb1ea..0000000000 --- a/opal/mca/pmix/external/owner.txt +++ /dev/null @@ -1,7 +0,0 @@ -# -# owner/status file -# owner: institution that is responsible for this package -# status: e.g. active, maintenance, unmaintained -# -owner:Intel -status: maintenance diff --git a/opal/mca/pmix/external/pmix_external_component.c b/opal/mca/pmix/external/pmix_external_component.c deleted file mode 100644 index 79630e5fe3..0000000000 --- a/opal/mca/pmix/external/pmix_external_component.c +++ /dev/null @@ -1,65 +0,0 @@ -/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil -*- */ -/* - * Copyright (c) 2011-2017 Cisco Systems, Inc. All rights reserved - * Copyright (c) 2015 Los Alamos National Security, LLC. All rights - * reserved. - * - * Copyright (c) 2019 Intel, Inc. All rights reserved. - * $COPYRIGHT$ - * - * Additional copyrights may follow - * - * $HEADER$ - */ - -#include "opal_config.h" -#include "opal/constants.h" - -#include "opal/mca/pmix/pmix-internal.h" - -/* - * Public string showing the sysinfo ompi_linux component version number - */ -const char *opal_pmix_external_component_version_string = - "OPAL pmix_external pmix MCA component version " OPAL_VERSION; - - -/* - * Local function - */ -static int pmix_external_open(void); - - -/* - * Instantiate the public struct with all of our public information - * and pointers to our public functions in it - */ - -const opal_pmix_component_t mca_pmix_external_component = { - - /* First, the mca_component_t struct containing meta information - about the component itself */ - - .base_version = { - OPAL_PMIX_BASE_VERSION_2_0_0, - - /* Component name and version */ - .mca_component_name = "external", - MCA_BASE_MAKE_VERSION(component, OPAL_MAJOR_VERSION, OPAL_MINOR_VERSION, - OPAL_RELEASE_VERSION), - - /* Component open and close functions */ - .mca_open_component = pmix_external_open, - }, - .base_data = { - /* The component is checkpoint ready */ - MCA_BASE_METADATA_PARAM_CHECKPOINT - }, -}; - -static int pmix_external_open(void) -{ - /* Must have some code in this file, or the OS X linker may - eliminate the whole file */ - return OPAL_SUCCESS; -} diff --git a/opal/mca/pmix/pmix-3rdparty.h b/opal/mca/pmix/pmix-3rdparty.h new file mode 100644 index 0000000000..7e2dd4724d --- /dev/null +++ b/opal/mca/pmix/pmix-3rdparty.h @@ -0,0 +1,30 @@ +/* + * Copyright (c) 2020 Amazon.com, Inc. or its affiliates. + * All Rights reserved. + * $COPYRIGHT$ + * + * Additional copyrights may follow + * + * $HEADER$ + */ + +/* + * TODO: UGLY HACK ALERT! + * + * PRRTE uses --with-pmix-header as a key that it is using an internal + * PMIx build (same with libevent/hwloc), and that header has to + * include all the files that the prrte source expects. This is a + * pain and the long term fix is to add the "cobuild" support to PRRTE + * similar to what was done for PMIx. Until those patches land, this + * header includes all the right pieces required. + */ + +#ifndef OPAL_PMIX_3RDPARTY_H +#define OPAL_PMIX_3RDPARTY_H + +#include +#include +#include +#include + +#endif diff --git a/opal/mca/pmix/pmix-internal.h b/opal/mca/pmix/pmix-internal.h index 3a54a98917..6a882319f5 100644 --- a/opal/mca/pmix/pmix-internal.h +++ b/opal/mca/pmix/pmix-internal.h @@ -14,6 +14,14 @@ * Additional copyrights may follow * * $HEADER$ + * + * In days of old, pmix was packaged as multiple MCA components, and + * grew an extensive set of base code to support Open MPI's use of + * pmix. When internal builds of libevent, hwloc, and pmix were moved + * out of components into base code so that they could be shared + * between Open MPI and PRRTE without incurring linking hell, we left + * the base code active. This MCA framework is essentially defunct; + * its only purpose is to allow continued use of the base code. */ #ifndef OPAL_PMIX_H @@ -33,8 +41,7 @@ #include "opal/util/error.h" #include "opal/hash_string.h" -/* include implementation to call */ -#include MCA_pmix_IMPLEMENTATION_HEADER +#include BEGIN_C_DECLS diff --git a/opal/mca/pmix/pmix4x/Makefile.am b/opal/mca/pmix/pmix4x/Makefile.am deleted file mode 100644 index 972d5333cf..0000000000 --- a/opal/mca/pmix/pmix4x/Makefile.am +++ /dev/null @@ -1,27 +0,0 @@ -# -# Copyright (c) 2014-2019 Intel, Inc. All rights reserved. -# Copyright (c) 2015 Cisco Systems, Inc. All rights reserved. -# Copyright (c) 2015 Research Organization for Information Science -# and Technology (RIST). All rights reserved. -# Copyright (c) 2017 IBM Corporation. All rights reserved. -# $COPYRIGHT$ -# -# Additional copyrights may follow -# -# $HEADER$ -# - -EXTRA_DIST = autogen.subdirs - -SUBDIRS = openpmix - -sources = \ - pmix4x.h \ - pmix4x_component.c - -# We only ever build this component statically -noinst_LTLIBRARIES = libmca_pmix_pmix4x.la -libmca_pmix_pmix4x_la_SOURCES =$(sources) -nodist_libmca_pmix_pmix4x_la_SOURCES = $(nodist_headers) -libmca_pmix_pmix4x_la_LDFLAGS = -module -avoid-version $(opal_pmix_pmix4x_LDFLAGS) -libmca_pmix_pmix4x_la_LIBADD = $(opal_pmix_pmix4x_LIBS) diff --git a/opal/mca/pmix/pmix4x/autogen.subdirs b/opal/mca/pmix/pmix4x/autogen.subdirs deleted file mode 100644 index 651a781023..0000000000 --- a/opal/mca/pmix/pmix4x/autogen.subdirs +++ /dev/null @@ -1 +0,0 @@ -openpmix diff --git a/opal/mca/pmix/pmix4x/common_sym_allowlist.txt b/opal/mca/pmix/pmix4x/common_sym_allowlist.txt deleted file mode 100644 index 7a60b367d6..0000000000 --- a/opal/mca/pmix/pmix4x/common_sym_allowlist.txt +++ /dev/null @@ -1,6 +0,0 @@ -# Ignore symbols in this component that are auto-generated and we -# can't do anything about them (e.g., flex/bison symbols). -pmix_util_keyval_yyleng -pmix_util_keyval_yytext -pmix_show_help_yyleng -pmix_show_help_yytext diff --git a/opal/mca/pmix/pmix4x/configure.m4 b/opal/mca/pmix/pmix4x/configure.m4 deleted file mode 100644 index 51f64ea30e..0000000000 --- a/opal/mca/pmix/pmix4x/configure.m4 +++ /dev/null @@ -1,165 +0,0 @@ -# -*- shell-script -*- -# -# Copyright (c) 2004-2005 The Trustees of Indiana University and Indiana -# University Research and Technology -# Corporation. All rights reserved. -# Copyright (c) 2004-2005 The University of Tennessee and The University -# of Tennessee Research Foundation. All rights -# reserved. -# Copyright (c) 2004-2005 High Performance Computing Center Stuttgart, -# University of Stuttgart. All rights reserved. -# Copyright (c) 2004-2005 The Regents of the University of California. -# All rights reserved. -# Copyright (c) 2011-2013 Los Alamos National Security, LLC. -# All rights reserved. -# Copyright (c) 2010-2017 Cisco Systems, Inc. All rights reserved. -# Copyright (c) 2013-2020 Intel, Inc. All rights reserved. -# Copyright (c) 2015-2016 Research Organization for Information Science -# and Technology (RIST). All rights reserved. -# Copyright (c) 2020 Amazon.com, Inc. or its affiliates. -# All Rights reserved. -# $COPYRIGHT$ -# -# Additional copyrights may follow -# -# $HEADER$ -# - -# -# Priority -# -AC_DEFUN([MCA_opal_pmix_pmix4x_PRIORITY], [80]) - -# -# Force this component to compile in static-only mode -# -AC_DEFUN([MCA_opal_pmix_pmix4x_COMPILE_MODE], [ - AC_MSG_CHECKING([for MCA component $2:$3 compile mode]) - $4="static" - AC_MSG_RESULT([$$4]) -]) - -# MCA_pmix_pmix4x_POST_CONFIG() -# --------------------------------- -AC_DEFUN([MCA_opal_pmix_pmix4x_POST_CONFIG],[ - OPAL_VAR_SCOPE_PUSH([opal_pmix_pmix4x_basedir]) - - # If we won, then do all the rest of the setup - AS_IF([test "$1" = "1" && test "$opal_pmix_pmix4x_happy" = "1"], - [ - # Set this variable so that the framework m4 knows what - # file to include in opal/mca/pmix/pmix-internal.h - opal_pmix_pmix4x_basedir=opal/mca/pmix/pmix4x - opal_pmix_base_include="$opal_pmix_pmix4x_basedir/pmix4x.h" - - # Add some stuff to CPPFLAGS so that the rest of the source - # tree can be built - file=$opal_pmix_pmix4x_basedir/openpmix - CPPFLAGS="-I$OPAL_TOP_SRCDIR/$file/include $CPPFLAGS" - AS_IF([test "$OPAL_TOP_BUILDDIR" != "$OPAL_TOP_SRCDIR"], - [CPPFLAGS="-I$OPAL_TOP_BUILDDIR/$file/include $CPPFLAGS"]) - unset file - ]) - OPAL_VAR_SCOPE_POP - - # This must be run unconditionally - # PMIX_DO_AM_CONDITIONALS -])dnl - - -# MCA_pmix_pmix4x_CONFIG([action-if-found], [action-if-not-found]) -# ----------------------------------------------------------- -AC_DEFUN([MCA_opal_pmix_pmix4x_CONFIG],[ - AC_CONFIG_FILES([opal/mca/pmix/pmix4x/Makefile]) - - OPAL_VAR_SCOPE_PUSH([PMIX_VERSION opal_pmix_pmix4x_save_CPPFLAGS opal_pmix_pmix2_save_CFLAGS opal_pmix_pmix4x_save_LDFLAGS opal_pmix_pmix4x_save_LIBS opal_pmix_pmix4x_basedir opal_pmix_pmix4x_args pmix_pmix4x_status_filename]) - - opal_pmix_pmix4x_basedir=opal/mca/pmix/pmix4x - - opal_pmix_pmix4x_save_CFLAGS=$CFLAGS - opal_pmix_pmix4x_save_CPPFLAGS=$CPPFLAGS - opal_pmix_pmix4x_save_LDFLAGS=$LDFLAGS - opal_pmix_pmix4x_save_LIBS=$LIBS - - AC_ARG_ENABLE([pmix-timing], - [AC_HELP_STRING([--enable-pmix-timing], - [Enable PMIx timing measurements (default: disabled)])]) - AC_ARG_WITH([pmix-platform], - [AC_HELP_STRING([--with-pmix-platform], - [Platform file to use when building the internal PMIx support])]) - - AC_MSG_CHECKING([if PMIx timing is enabled]) - if test "$enable_pmix_timing" = "yes"; then - AC_MSG_RESULT([yes]) - opal_pmix_pmix4x_timing_flag=--enable-pmix-timing - else - AC_MSG_RESULT([no (disabled)]) - opal_pmix_pmix4x_timing_flag=--disable-pmix-timing - fi - - opal_pmix_pmix4x_args="$opal_pmix_pmix4x_timing_flag --without-tests-examples --with-pmix-symbol-rename=OPAL_MCA_PMIX4X_ --disable-pmix-binaries --disable-pmix-backward-compatibility --disable-visibility --enable-embedded-mode --with-libevent-header=\\\"opal/util/event.h\\\" --with-hwloc-header=\\\"opal/mca/hwloc/hwloc-internal.h\\\"" - AS_IF([test "$enable_debug" = "yes"], - [opal_pmix_pmix4x_args="--enable-debug $opal_pmix_pmix4x_args" - CFLAGS="$OPAL_CFLAGS_BEFORE_PICKY $OPAL_VISIBILITY_CFLAGS -g"], - [opal_pmix_pmix4x_args="--disable-debug $opal_pmix_pmix4x_args" - CFLAGS="$OPAL_CFLAGS_BEFORE_PICKY $OPAL_VISIBILITY_CFLAGS"]) - AS_IF([test "$with_devel_headers" = "yes"], - [opal_pmix_pmix4x_args="--with-devel-headers $opal_pmix_pmix4x_args"]) - if test ! -z $with_pmix_platform && test "$with_pix_platform" != "yes"; then - opal_pmix_pmix4x_args="$opal_pmix_pmix4x_args --with-platform=$with_pmix_platform" - fi - CPPFLAGS="-I$OPAL_TOP_SRCDIR -I$OPAL_TOP_BUILDDIR -I$OPAL_TOP_SRCDIR/opal/include -I$OPAL_TOP_BUILDDIR/opal/include $CPPFLAGS" - - OPAL_CONFIG_SUBDIR([$opal_pmix_pmix4x_basedir/openpmix], - [$opal_pmix_pmix4x_args $opal_subdir_args 'CFLAGS=$CFLAGS' 'CPPFLAGS=$CPPFLAGS'], - [opal_pmix_pmix4x_happy=1], [opal_pmix_pmix4x_happy=0]) - - CFLAGS=$opal_pmix_pmix4x_save_CFLAGS - CPPFLAGS=$opal_pmix_pmix4x_save_CPPFLAGS - LDFLAGS=$opal_pmix_pmix4x_save_LDFLAGS - LIBS=$opal_pmix_pmix4x_save_LIBS - - # See if we are using the internal version. NOTE: we still did all the - # above configury so that all the proper GNU Autotools - # infrastructure is setup properly (e.g., w.r.t. SUBDIRS=pmix in - # this directory's Makefile.am, we still need the Autotools "make - # distclean" infrastructure to work properly). - AC_MSG_CHECKING([if v4.x component is to be used]) - AS_IF([test "$opal_external_pmix_happy" = "yes"], - [AC_MSG_RESULT([no - disqualifying this component]) - opal_pmix_pmix4x_happy=0], - [AC_MSG_RESULT([yes - using the internal v4.x library]) - AS_IF([test "$opal_pmix_pmix4x_happy" = "0"], - [AC_MSG_WARN([INTERNAL PMIX FAILED TO CONFIGURE]) - AC_MSG_ERROR([CANNOT CONTINUE])]) - # Build flags for our Makefile.am - opal_pmix_pmix4x_LDFLAGS= - opal_pmix_pmix4x_LIBS="$OPAL_TOP_BUILDDIR/$opal_pmix_pmix4x_basedir/openpmix/src/libpmix.la" - opal_pmix_pmix4x_CPPFLAGS="-I$OPAL_TOP_BUILDDIR/$opal_pmix_pmix4x_basedir/openpmix/include -I$OPAL_TOP_BUILDDIR/$opal_pmix_pmix4x_basedir/openpmix -I$OPAL_TOP_SRCDIR/$opal_pmix_pmix4x_basedir/openpmix/include -I$OPAL_TOP_SRCDIR/$opal_pmix_pmix4x_basedir/openpmix" - opal_pmix_pmix4x_DEPENDENCIES="$OPAL_TOP_BUILDDIR/$opal_pmix_pmix4x_basedir/openpmix/src/libpmix.la"]) - - AC_SUBST([opal_pmix_pmix4x_LIBS]) - AC_SUBST([opal_pmix_pmix4x_CPPFLAGS]) - AC_SUBST([opal_pmix_pmix4x_LDFLAGS]) - AC_SUBST([opal_pmix_pmix4x_DEPENDENCIES]) - - # Finally, add some flags to the wrapper compiler so that our - # headers can be found. - pmix_pmix4x_status_filename="$OPAL_TOP_BUILDDIR/$opal_pmix_pmix4x_basedir/openpmix/config.status" - pmix_pmix4x_WRAPPER_EXTRA_CPPFLAGS=`egrep PMIX_EMBEDDED_CPPFLAGS $pmix_pmix4x_status_filename | cut -d\" -f4` - pmix_pmix4x_WRAPPER_EXTRA_LDFLAGS=`egrep PMIX_EMBEDDED_LDFLAGS $pmix_pmix4x_status_filename | cut -d\" -f4` - pmix_pmix4x_WRAPPER_EXTRA_LIBS=`egrep PMIX_EMBEDDED_LIBS $pmix_pmix4x_status_filename | cut -d\" -f4` - - AC_MSG_CHECKING([PMIx extra wrapper CPPFLAGS]) - AC_MSG_RESULT([$pmix_pmix4x_WRAPPER_EXTRA_CPPFLAGS]) - AC_MSG_CHECKING([PMIx extra wrapper LDFLAGS]) - AC_MSG_RESULT([$pmix_pmix4x_WRAPPER_EXTRA_LDFLAGS]) - AC_MSG_CHECKING([PMIx extra wrapper LIBS]) - AC_MSG_RESULT([$pmix_pmix4x_WRAPPER_EXTRA_LIBS]) - - AS_IF([test $opal_pmix_pmix4x_happy -eq 1], - [$1], - [$2]) - - OPAL_VAR_SCOPE_POP -])dnl diff --git a/opal/mca/pmix/pmix4x/openpmix b/opal/mca/pmix/pmix4x/openpmix deleted file mode 160000 index 415a4e3486..0000000000 --- a/opal/mca/pmix/pmix4x/openpmix +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 415a4e34869ad0430ac7af7ff04a3520370aa59e diff --git a/opal/mca/pmix/pmix4x/pmix4x.h b/opal/mca/pmix/pmix4x/pmix4x.h deleted file mode 100644 index 80ba146f17..0000000000 --- a/opal/mca/pmix/pmix4x/pmix4x.h +++ /dev/null @@ -1,25 +0,0 @@ -/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil -*- */ -/* - * Copyright (c) 2014-2019 Intel, Inc. All rights reserved. - * Copyright (c) 2014-2015 Mellanox Technologies, Inc. - * All rights reserved. - * Copyright (c) 2016-2019 Research Organization for Information Science - * and Technology (RIST). All rights reserved. - * Copyright (c) 2017 Los Alamos National Security, LLC. All rights - * reserved. - * $COPYRIGHT$ - * - * Additional copyrights may follow - * - * $HEADER$ - */ - -#ifndef MCA_PMIX_PMIX4X_H -#define MCA_PMIX_PMIX4X_H - -#include "pmix_common.h" -#include "pmix_tool.h" -#include "pmix_server.h" -#include "pmix.h" - -#endif /* MCA_PMIX_PMIX4X_H */ diff --git a/opal/mca/pmix/pmix4x/pmix4x_component.c b/opal/mca/pmix/pmix4x/pmix4x_component.c deleted file mode 100644 index c19f033f65..0000000000 --- a/opal/mca/pmix/pmix4x/pmix4x_component.c +++ /dev/null @@ -1,57 +0,0 @@ -/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil -*- */ -/* - * Copyright (c) 2011-2017 Cisco Systems, Inc. All rights reserved - * Copyright (c) 2014-2019 Intel, Inc. All rights reserved. - * Copyright (c) 2015-2016 Los Alamos National Security, LLC. All rights - * reserved. - * Copyright (c) 2017 Research Organization for Information Science - * and Technology (RIST). All rights reserved. - * - * $COPYRIGHT$ - * - * Additional copyrights may follow - * - * $HEADER$ - * - * These symbols are in a file by themselves to provide nice linker - * semantics. Since linkers generally pull in symbols by object - * files, keeping these symbols as the only symbols in this file - * prevents utility programs such as "ompi_info" from having to import - * entire components just to query their version and parameters. - */ - -#include "opal_config.h" -#include "opal/constants.h" - -#include "opal/mca/pmix/pmix-internal.h" -#include "pmix4x.h" - -/* - * Public string showing the sysinfo ompi_linux component version number - */ -const char *opal_pmix_pmix4x_component_version_string = - "OPAL pmix4x pmix MCA component version " OPAL_VERSION; - -/* - * Instantiate the public struct with all of our public information - * and pointers to our public functions in it - */ - -const opal_pmix_component_t mca_pmix_pmix4x_component = { - - /* First, the mca_component_t struct containing meta information - about the component itself */ - - .base_version = { - OPAL_PMIX_BASE_VERSION_2_0_0, - - /* Component name and version */ - .mca_component_name = "pmix4", - MCA_BASE_MAKE_VERSION(component, OPAL_MAJOR_VERSION, OPAL_MINOR_VERSION, - OPAL_RELEASE_VERSION), - }, - .base_data = { - /* The component is checkpoint ready */ - MCA_BASE_METADATA_PARAM_CHECKPOINT - } -};