Skip to content

Commit a180bc5

Browse files
committed
pmix/config: Update configure logic to check versions
* This attempts to match the current state on OMPI `master`, however those commits do not cleanly cherry-pick over so we created a custom patch for the changes noted below: - 9a5ef60 - 55923ea - 7b115a9 - 12ecf97 - 639dbdb - af67f16 Signed-off-by: Joshua Hursey <jhursey@us.ibm.com>
1 parent 746add4 commit a180bc5

File tree

6 files changed

+141
-40
lines changed

6 files changed

+141
-40
lines changed

.gitignore

+1
Original file line numberDiff line numberDiff line change
@@ -306,6 +306,7 @@ opal/mca/pmix/pmix112/pmix/include/pmix/pmix_common.h
306306
opal/mca/pmix/pmix112/pmix/include/private/autogen/config.h
307307
opal/mca/pmix/pmix112/pmix/include/private/autogen/config.h.in
308308
opal/mca/pmix/pmix112/pmix/include/pmix/autogen/config.h.in
309+
opal/mca/pmix/pmix112/pmix/include/pmix_version.h
309310

310311
opal/tools/opal-checkpoint/opal-checkpoint
311312
opal/tools/opal-checkpoint/opal-checkpoint.1

config/opal_check_pmi.m4

+85-25
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,10 @@
1313
# Copyright (c) 2009-2015 Cisco Systems, Inc. All rights reserved.
1414
# Copyright (c) 2011-2014 Los Alamos National Security, LLC. All rights
1515
# reserved.
16-
# Copyright (c) 2014 Intel, Inc. All rights reserved.
16+
# Copyright (c) 2014-2016 Intel, Inc. All rights reserved.
1717
# Copyright (c) 2014-2016 Research Organization for Information Science
1818
# and Technology (RIST). All rights reserved.
19+
# Copyright (c) 2016 IBM Corporation. All rights reserved.
1920
# $COPYRIGHT$
2021
#
2122
# Additional copyrights may follow
@@ -226,11 +227,7 @@ AC_DEFUN([OPAL_CHECK_PMI],[
226227

227228
AC_DEFUN([OPAL_CHECK_PMIX],[
228229
229-
opal_pmix_ext_CPPFLAGS=
230-
opal_pmix_ext_LDFLAGS=
231-
opal_pmix_ext_LIBS=
232-
233-
OPAL_VAR_SCOPE_PUSH([pmix_ext_install_dir])
230+
OPAL_VAR_SCOPE_PUSH([opal_external_pmix_save_CPPFLAGS opal_external_pmix_save_LDFLAGS opal_external_pmix_save_LIBS])
234231
235232
AC_ARG_WITH([pmix],
236233
[AC_HELP_STRING([--with-pmix(=DIR)],
@@ -245,30 +242,93 @@ AC_DEFUN([OPAL_CHECK_PMIX],[
245242
AC_MSG_CHECKING([if user requested external PMIx support($with_pmix)])
246243
AS_IF([test -z "$with_pmix" || test "$with_pmix" = "yes" || test "$with_pmix" = "internal"],
247244
[AC_MSG_RESULT([no])
248-
opal_external_pmix_happy="no"],
245+
opal_external_pmix_happy=no],
246+
249247
[AC_MSG_RESULT([yes])
250248
# check for external pmix lib */
251249
AS_IF([test "$with_pmix" = "external"],
252250
[pmix_ext_install_dir=/usr],
253251
[pmix_ext_install_dir=$with_pmix])
254-
AC_MSG_CHECKING([if external component can be used])
255-
OPAL_CHECK_PACKAGE([opal_pmix_ext],
256-
[pmix.h],
257-
[pmix],
258-
[PMIx_Init],
259-
[],
260-
[$pmix_ext_install_dir],
261-
[],
262-
[AC_MSG_RESULT([PMIx external support will be built])
263-
opal_external_pmix_happy=yes],
264-
[AC_MSG_RESULT([no])
265-
AC_MSG_WARN([External PMIx support was requested but failed])
266-
AC_MSG_WARN([as explained above.])
267-
AC_MSG_ERROR([Cannot continue])])
268-
])
269-
AC_SUBST(opal_pmix_ext_CPPFLAGS)
270-
AC_SUBST(opal_pmix_ext_LDFLAGS)
271-
AC_SUBST(opal_pmix_ext_LIBS)
252+
253+
# Make sure we have the headers and libs in the correct location
254+
OPAL_CHECK_WITHDIR([external-pmix], [$pmix_ext_install_dir/include], [pmix.h])
255+
OPAL_CHECK_WITHDIR([external-libpmix], [$pmix_ext_install_dir/lib], [libpmix.*])
256+
257+
# check the version
258+
opal_external_pmix_save_CPPFLAGS=$CPPFLAGS
259+
opal_external_pmix_save_LDFLAGS=$LDFLAGS
260+
opal_external_pmix_save_LIBS=$LIBS
261+
262+
# if the pmix_version.h file does not exist, then
263+
# this must be from a pre-1.1.5 version
264+
AC_MSG_CHECKING([PMIx version])
265+
CPPFLAGS="-I$pmix_ext_install_dir/include $CPPFLAGS"
266+
AS_IF([test "x`ls $pmix_ext_install_dir/include/pmix_version.h 2> /dev/null`" = "x"],
267+
[AC_MSG_RESULT([version file not found - assuming v1.1.4])
268+
opal_external_pmix_version_found=1
269+
opal_external_pmix_version=114],
270+
[AC_MSG_RESULT([version file found])
271+
opal_external_pmix_version_found=0])
272+
273+
# if it does exist, then we need to parse it to find
274+
# the actual release series
275+
AS_IF([test "$opal_external_pmix_version_found" = "0"],
276+
[AC_MSG_CHECKING([version 3x])
277+
AC_PREPROC_IFELSE([AC_LANG_PROGRAM([
278+
#include <pmix_version.h>
279+
#if (PMIX_VERSION_MAJOR != 3L)
280+
#error "not version 3"
281+
#endif
282+
], [])],
283+
[AC_MSG_RESULT([found])
284+
opal_external_pmix_version=3X
285+
opal_external_pmix_version_found=1
286+
AC_MSG_WARN([This version of Open MPI does not support PMIx version 2.x and later])
287+
AC_MSG_ERROR([Cannot continue])],
288+
[AC_MSG_RESULT([not found])])])
289+
290+
AS_IF([test "$opal_external_pmix_version_found" = "0"],
291+
[AC_MSG_CHECKING([version 2x])
292+
AC_PREPROC_IFELSE([AC_LANG_PROGRAM([
293+
#include <pmix_version.h>
294+
#if (PMIX_VERSION_MAJOR != 2L)
295+
#error "not version 2"
296+
#endif
297+
], [])],
298+
[AC_MSG_RESULT([found])
299+
opal_external_pmix_version=2X
300+
opal_external_pmix_version_found=1
301+
AC_MSG_WARN([This version of Open MPI does not support PMIx version 2.x and later])
302+
AC_MSG_ERROR([Cannot continue])],
303+
[AC_MSG_RESULT([not found])])])
304+
305+
AS_IF([test "$opal_external_pmix_version_found" = "0"],
306+
[AC_MSG_CHECKING([version 1x])
307+
AC_PREPROC_IFELSE([AC_LANG_PROGRAM([
308+
#include <pmix_version.h>
309+
#if (PMIX_VERSION_MAJOR != 1L)
310+
#error "not version 1"
311+
#endif
312+
], [])],
313+
[AC_MSG_RESULT([found])
314+
opal_external_pmix_version=1X
315+
opal_external_pmix_version_found=1],
316+
[AC_MSG_RESULT([not found])])])
317+
318+
AS_IF([test "x$opal_external_pmix_version" = "x"],
319+
[AC_MSG_WARN([External PMIx support requested, but version])
320+
AC_MSG_WARN([information of the external lib could not])
321+
AC_MSG_WARN([be detected])
322+
AC_MSG_ERROR([cannot continue])])
323+
324+
CPPFLAGS=$opal_external_pmix_save_CPPFLAGS
325+
LDFLAGS=$opal_external_pmix_save_LDFLAGS
326+
LIBS=$opal_external_pmix_save_LIBS
327+
328+
opal_external_pmix_CPPFLAGS="-I$pmix_ext_install_dir/include"
329+
opal_external_pmix_LDFLAGS=-L$pmix_ext_install_dir/lib
330+
opal_external_pmix_LIBS=-lpmix
331+
opal_external_pmix_happy=yes])
272332
273333
OPAL_VAR_SCOPE_POP
274334
])

configure.ac

+1
Original file line numberDiff line numberDiff line change
@@ -249,6 +249,7 @@ m4_ifdef([project_oshmem],
249249
OPAL_CONFIGURE_OPTIONS
250250
OPAL_CHECK_OS_FLAVORS
251251
OPAL_CHECK_CUDA
252+
OPAL_CHECK_PMIX
252253
m4_ifdef([project_orte], [ORTE_CONFIGURE_OPTIONS])
253254
m4_ifdef([project_ompi], [OMPI_CONFIGURE_OPTIONS])
254255
m4_ifdef([project_oshmem], [OSHMEM_CONFIGURE_OPTIONS])

opal/mca/pmix/external/Makefile.am

+6-6
Original file line numberDiff line numberDiff line change
@@ -34,15 +34,15 @@ mcacomponentdir = $(opallibdir)
3434
mcacomponent_LTLIBRARIES = $(component_install)
3535
mca_pmix_external_la_SOURCES = $(sources)
3636
mca_pmix_external_la_CFLAGS =
37-
mca_pmix_external_la_CPPFLAGS = $(opal_pmix_ext_CPPFLAGS)
38-
mca_pmix_external_la_LDFLAGS = -module -avoid-version $(opal_pmix_ext_LDFLAGS)
39-
mca_pmix_external_la_LIBADD = $(opal_pmix_ext_LIBS) \
37+
mca_pmix_external_la_CPPFLAGS = $(opal_pmix_external_CPPFLAGS)
38+
mca_pmix_external_la_LDFLAGS = -module -avoid-version $(opal_pmix_external_LDFLAGS)
39+
mca_pmix_external_la_LIBADD = $(opal_pmix_external_LIBS) \
4040
$(OPAL_TOP_BUILDDIR)/opal/mca/event/lib@OPAL_LIB_PREFIX@mca_event.la \
4141
$(OPAL_TOP_BUILDDIR)/opal/mca/hwloc/lib@OPAL_LIB_PREFIX@mca_hwloc.la
4242

4343
noinst_LTLIBRARIES = $(component_noinst)
4444
libmca_pmix_external_la_SOURCES =$(sources)
4545
libmca_pmix_external_la_CFLAGS =
46-
libmca_pmix_external_la_CPPFLAGS = $(opal_pmix_ext_CPPFLAGS)
47-
libmca_pmix_external_la_LDFLAGS = -module -avoid-version $(opal_pmix_ext_LDFLAGS)
48-
libmca_pmix_external_la_LIBADD = $(opal_pmix_ext_LIBS)
46+
libmca_pmix_external_la_CPPFLAGS = $(opal_pmix_external_CPPFLAGS)
47+
libmca_pmix_external_la_LDFLAGS = -module -avoid-version $(opal_pmix_external_LDFLAGS)
48+
libmca_pmix_external_la_LIBADD = $(opal_pmix_external_LIBS)

opal/mca/pmix/external/configure.m4

+34-8
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
# and Technology (RIST). All rights reserved.
1919
# Copyright (c) 2014-2015 Mellanox Technologies, Inc.
2020
# All rights reserved.
21+
# Copyright (c) 2016 IBM Corporation. All rights reserved.
2122
# $COPYRIGHT$
2223
#
2324
# Additional copyrights may follow
@@ -30,16 +31,41 @@
3031
AC_DEFUN([MCA_opal_pmix_external_CONFIG],[
3132
AC_CONFIG_FILES([opal/mca/pmix/external/Makefile])
3233

33-
AC_REQUIRE([OPAL_CHECK_PMIX])
34-
3534
AS_IF([test "$opal_external_pmix_happy" = "yes"],
36-
[AS_IF([test "$opal_event_external_want" != "yes" || test "$opal_hwloc_external_support" != "yes"],
35+
[AS_IF([test "$opal_event_external_support" != "yes"],
3736
[AC_MSG_WARN([EXTERNAL PMIX SUPPORT REQUIRES USE OF EXTERNAL LIBEVENT])
38-
AC_MSG_WARN([AND EXTERNAL HWLOC LIBRARIES. THESE LIBRARIES MUST POINT])
39-
AC_MSG_WARN([TO THE SAME ONES USED TO BUILD PMIX OR ELSE UNPREDICTABLE])
40-
AC_MSG_WARN([BEHAVIOR MAY RESULT])
37+
AC_MSG_WARN([LIBRARY. THIS LIBRARY MUST POINT TO THE SAME ONE USED])
38+
AC_MSG_WARN([TO BUILD PMIX OR ELSE UNPREDICTABLE BEHAVIOR MAY RESULT])
39+
AC_MSG_ERROR([PLEASE CORRECT THE CONFIGURE COMMAND LINE AND REBUILD])])
40+
AS_IF([test "$opal_hwloc_external_support" != "yes"],
41+
[AC_MSG_WARN([EXTERNAL PMIX SUPPORT REQUIRES USE OF EXTERNAL HWLOC])
42+
AC_MSG_WARN([LIBRARY THIS LIBRARY MUST POINT TO THE SAME ONE USED ])
43+
AC_MSG_WARN([TO BUILD PMIX OR ELSE UNPREDICTABLE BEHAVIOR MAY RESULT])
4144
AC_MSG_ERROR([PLEASE CORRECT THE CONFIGURE COMMAND LINE AND REBUILD])])
42-
external_WRAPPER_EXTRA_CPPFLAGS='-I${includedir}/openmpi/$opal_pmix_external_basedir/pmix -I${includedir}/openmpi/$opal_pmix_external_basedir/pmix/include'
43-
$1],
45+
46+
# check for the 1.1.4 version
47+
AC_MSG_CHECKING([if external component is version 1.1.4 or compatible])
48+
AS_IF([test "$opal_external_pmix_version" = "11" ||
49+
test "$opal_external_pmix_version" = "114" ||
50+
test "$opal_external_pmix_version" = "1X"],
51+
[AC_MSG_RESULT([yes])
52+
opal_pmix_external_11_happy=yes],
53+
[AC_MSG_RESULT([no])
54+
opal_pmix_external_11_happy=no])
55+
56+
AS_IF([test "$opal_pmix_external_11_happy" = "yes"],
57+
[$1
58+
# need to set the wrapper flags for static builds
59+
pmix_external_WRAPPER_EXTRA_LDFLAGS=$opal_external_pmix_LDFLAGS
60+
pmix_external_WRAPPER_EXTRA_LIBS=$opal_external_pmix_LIBS],
61+
[$2])],
4462
[$2])
63+
64+
opal_pmix_external_CPPFLAGS=$opal_external_pmix_CPPFLAGS
65+
opal_pmix_external_LDFLAGS=$opal_external_pmix_LDFLAGS
66+
opal_pmix_external_LIBS=$opal_external_pmix_LIBS
67+
68+
AC_SUBST([opal_pmix_external_CPPFLAGS])
69+
AC_SUBST([opal_pmix_external_LDFLAGS])
70+
AC_SUBST([opal_pmix_external_LIBS])
4571
])dnl

opal/mca/pmix/pmix112/configure.m4

+14-1
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
# Copyright (c) 2013-2015 Intel, Inc. All rights reserved.
1717
# Copyright (c) 2015-2016 Research Organization for Information Science
1818
# and Technology (RIST). All rights reserved.
19+
# Copyright (c) 2016 IBM Corporation. All rights reserved.
1920
# $COPYRIGHT$
2021
#
2122
# Additional copyrights may follow
@@ -38,7 +39,19 @@ AC_DEFUN([MCA_opal_pmix_pmix112_CONFIG],[
3839
opal_pmix_pmix112_save_LDFLAGS=$LDFLAGS
3940
opal_pmix_pmix112_save_LIBS=$LIBS
4041

41-
opal_pmix_pmix112_args="--enable-embedded-mode --with-pmix-symbol-prefix=opal_pmix_pmix112_ --with-libevent-header=\\\"opal/mca/event/$opal_event_base_include\\\" --with-hwloc-header=\\\"$opal_hwloc_base_include\\\""
42+
AC_ARG_ENABLE([pmix-dstore],
43+
[AC_HELP_STRING([--enable-pmix-dstore],
44+
[Enable PMIx shared memory data store (default: disabled)])])
45+
AC_MSG_CHECKING([if PMIx shared memory data store is enabled])
46+
if test "$enable_pmix3_dstore" == "yes"; then
47+
AC_MSG_RESULT([yes])
48+
opal_pmix_pmix_sm_flag=--enable-dstore
49+
else
50+
AC_MSG_RESULT([no (disabled)])
51+
opal_pmix_pmix_sm_flag=--disable-dstore
52+
fi
53+
54+
opal_pmix_pmix112_args="--enable-embedded-mode --with-pmix-symbol-prefix=opal_pmix_pmix112_ $opal_pmix_pmix_sm_flag --with-libevent-header=\\\"opal/mca/event/$opal_event_base_include\\\" --with-hwloc-header=\\\"$opal_hwloc_base_include\\\""
4255
AS_IF([test "$enable_debug" = "yes"],
4356
[opal_pmix_pmix112_args="--enable-debug $opal_pmix_pmix112_args"
4457
CFLAGS="$OPAL_CFLAGS_BEFORE_PICKY $OPAL_VISIBILITY_CFLAGS -g"],

0 commit comments

Comments
 (0)