Skip to content

Commit 12ecf97

Browse files
author
Ralph Castain
committed
Split the pmix external component into one for the 1.1.4 release, and another for the upcoming 2.0 release. Clean up the configury so the components look for a series-specific function instead of running a program.
NOTE: the changes for the 2.0 series are not yet in the PMIx master.
1 parent 2c3d522 commit 12ecf97

18 files changed

+3571
-176
lines changed

config/opal_check_pmi.m4

Lines changed: 2 additions & 82 deletions
Original file line numberDiff line numberDiff line change
@@ -227,12 +227,6 @@ AC_DEFUN([OPAL_CHECK_PMI],[
227227

228228
AC_DEFUN([OPAL_CHECK_PMIX],[
229229
230-
opal_pmix_ext_CPPFLAGS=
231-
opal_pmix_ext_LDFLAGS=
232-
opal_pmix_ext_LIBS=
233-
234-
OPAL_VAR_SCOPE_PUSH([pmix_ext_install_dir opal_pmix_CPPFLAGS_save opal_pmix_LDFLAGS_save opal_pmix_LIBS_save opal_pmix_LD_LIBRARY_PATH_save])
235-
236230
AC_ARG_WITH([pmix],
237231
[AC_HELP_STRING([--with-pmix(=DIR)],
238232
[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 does not support --without-pmix.])])
@@ -246,7 +240,7 @@ AC_DEFUN([OPAL_CHECK_PMIX],[
246240
AC_MSG_CHECKING([if user requested external PMIx support($with_pmix)])
247241
AS_IF([test -z "$with_pmix" || test "$with_pmix" = "yes" || test "$with_pmix" = "internal"],
248242
[AC_MSG_RESULT([no])
249-
opal_external_pmix_happy="no"],
243+
opal_external_pmix_happy=no],
250244
[AC_MSG_RESULT([yes])
251245
# check for external pmix lib */
252246
AS_IF([test "$with_pmix" = "external"],
@@ -255,80 +249,6 @@ AC_DEFUN([OPAL_CHECK_PMIX],[
255249
# Make sure we have the headers and libs in the correct location
256250
OPAL_CHECK_WITHDIR([external-pmix], [$pmix_ext_install_dir/include], [pmix.h])
257251
OPAL_CHECK_WITHDIR([external-libpmix], [$pmix_ext_install_dir/lib], [libpmix.*])
258-
AC_MSG_CHECKING([if external component can be used])
259-
OPAL_CHECK_PACKAGE([opal_pmix_ext],
260-
[pmix.h],
261-
[pmix],
262-
[PMIx_Init],
263-
[],
264-
[$pmix_ext_install_dir],
265-
[$pmix_ext_install_dir/lib],
266-
[AC_MSG_RESULT([PMIx external support will be built])
267-
opal_external_pmix_happy=yes],
268-
[opal_external_pmix_happy="no"
269-
AC_MSG_RESULT([no])
270-
AC_MSG_WARN([External PMIx support was requested but failed])
271-
AC_MSG_WARN([as explained above.])
272-
AC_MSG_ERROR([Cannot continue])])
273-
# Check the version
274-
opal_external_pmix_version="unknown"
275-
opal_pmix_CPPFLAGS_save=$CPPFLAGS
276-
opal_pmix_LDFLAGS_save=$LDFLAGS
277-
opal_pmix_LIBS_save=$LIBS
278-
LD_LIBRARY_PATH_orig=$opal_pmix_LD_LIBRARY_PATH_save
279-
280-
CPPFLAGS=$opal_pmix_ext_CPPFLAGS
281-
LDFLAGS=$opal_pmix_ext_LDFLAGS
282-
LIBS=$opal_pmix_ext_LIBS
283-
LD_LIBRARY_PATH=$pmix_ext_install_dir/lib:$LD_LIBRARY_PATH
284-
export LD_LIBRARY_PATH
285-
286-
AC_MSG_CHECKING([PMIx library version])
287-
AC_RUN_IFELSE([
288-
AC_LANG_SOURCE([
289-
#include <stdio.h>
290-
#include <stdlib.h>
291-
#include <pmix.h>
292-
#include <pmix/pmix_common.h>
293-
294-
int main(int argc, char **argv)
295-
{
296-
const char * version = NULL;
297-
FILE *f = NULL;
252+
opal_external_pmix_happy=yes])
298253
299-
f = fopen("conftestval", "w");
300-
if( !f ) exit(1);
301-
version = PMIx_Get_version();
302-
fprintf(f, "%s", version);
303-
fclose(f);
304-
305-
return 0;
306-
}
307-
])], [
308-
eval opal_external_pmix_version=`cat conftestval`
309-
AC_MSG_RESULT([$opal_external_pmix_version])
310-
], [
311-
LD_LIBRARY_PATH=$opal_pmix_LD_LIBRARY_PATH_save
312-
export LD_LIBRARY_PATH
313-
opal_external_pmix_happy="no"
314-
AC_MSG_ERROR([External PMIx support requested but could not build/run a test program. Aborting])
315-
], [
316-
LD_LIBRARY_PATH=$opal_pmix_LD_LIBRARY_PATH_save
317-
export LD_LIBRARY_PATH
318-
opal_external_pmix_happy="no"
319-
AC_MSG_ERROR([External PMIx disabled for cross compile. Aborting])
320-
])
321-
CPPFLAGS=$opal_pmix_CPPFLAGS_save
322-
LDFLAGS=$opal_pmix_LDFLAGS_save
323-
LIBS=$opal_pmix_LIBS_save
324-
LD_LIBRARY_PATH=$opal_pmix_LD_LIBRARY_PATH_save
325-
326-
opal_external_pmix_happy="yes"
327-
])
328-
329-
AC_SUBST(opal_pmix_ext_CPPFLAGS)
330-
AC_SUBST(opal_pmix_ext_LDFLAGS)
331-
AC_SUBST(opal_pmix_ext_LIBS)
332-
333-
OPAL_VAR_SCOPE_POP
334254
])

opal/mca/pmix/external/Makefile.am renamed to opal/mca/pmix/ext114/Makefile.am

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
#
2-
# Copyright (c) 2014-2015 Intel, Inc. All rights reserved.
2+
# Copyright (c) 2014-2016 Intel, Inc. All rights reserved.
33
# Copyright (c) 2015 Cisco Systems, Inc. All rights reserved.
44
# Copyright (c) 2014-2015 Mellanox Technologies, Inc.
55
# All rights reserved.
@@ -22,25 +22,25 @@ sources = \
2222
# mca_<type>_<name>.la (for DSO builds) or libmca_<type>_<name>.la
2323
# (for static builds).
2424

25-
if MCA_BUILD_opal_pmix_external_DSO
25+
if MCA_BUILD_opal_pmix_ext114_DSO
2626
component_noinst =
27-
component_install = mca_pmix_external.la
27+
component_install = mca_pmix_ext114.la
2828
else
29-
component_noinst = libmca_pmix_external.la
29+
component_noinst = libmca_pmix_ext114.la
3030
component_install =
3131
endif
3232

3333
mcacomponentdir = $(opallibdir)
3434
mcacomponent_LTLIBRARIES = $(component_install)
35-
mca_pmix_external_la_SOURCES = $(sources)
36-
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)
35+
mca_pmix_ext114_la_SOURCES = $(sources)
36+
mca_pmix_ext114_la_CFLAGS =
37+
mca_pmix_ext114_la_CPPFLAGS = $(opal_pmix_ext114_CPPFLAGS)
38+
mca_pmix_ext114_la_LDFLAGS = -module -avoid-version $(opal_pmix_ext114_LDFLAGS)
39+
mca_pmix_ext114_la_LIBADD = $(opal_pmix_ext114_LIBS)
4040

4141
noinst_LTLIBRARIES = $(component_noinst)
42-
libmca_pmix_external_la_SOURCES =$(sources)
43-
libmca_pmix_external_la_CFLAGS =
44-
libmca_pmix_external_la_CPPFLAGS = $(opal_pmix_ext_CPPFLAGS)
45-
libmca_pmix_external_la_LDFLAGS = -module -avoid-version $(opal_pmix_ext_LDFLAGS)
46-
libmca_pmix_external_la_LIBADD = $(opal_pmix_ext_LIBS)
42+
libmca_pmix_ext114_la_SOURCES =$(sources)
43+
libmca_pmix_ext114_la_CFLAGS =
44+
libmca_pmix_ext114_la_CPPFLAGS = $(opal_pmix_ext114_CPPFLAGS)
45+
libmca_pmix_ext114_la_LDFLAGS = -module -avoid-version $(opal_pmix_ext114_LDFLAGS)
46+
libmca_pmix_ext114_la_LIBADD = $(opal_pmix_ext114_LIBS)

opal/mca/pmix/ext114/configure.m4

Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,73 @@
1+
# -*- shell-script -*-
2+
#
3+
# Copyright (c) 2004-2005 The Trustees of Indiana University and Indiana
4+
# University Research and Technology
5+
# Corporation. All rights reserved.
6+
# Copyright (c) 2004-2005 The University of Tennessee and The University
7+
# of Tennessee Research Foundation. All rights
8+
# reserved.
9+
# Copyright (c) 2004-2005 High Performance Computing Center Stuttgart,
10+
# University of Stuttgart. All rights reserved.
11+
# Copyright (c) 2004-2005 The Regents of the University of California.
12+
# All rights reserved.
13+
# Copyright (c) 2011-2013 Los Alamos National Security, LLC.
14+
# All rights reserved.
15+
# Copyright (c) 2010-2015 Cisco Systems, Inc. All rights reserved.
16+
# Copyright (c) 2013-2016 Intel, Inc. All rights reserved.
17+
# Copyright (c) 2015 Research Organization for Information Science
18+
# and Technology (RIST). All rights reserved.
19+
# Copyright (c) 2014-2015 Mellanox Technologies, Inc.
20+
# All rights reserved.
21+
# $COPYRIGHT$
22+
#
23+
# Additional copyrights may follow
24+
#
25+
# $HEADER$
26+
#
27+
28+
# MCA_pmix_ext114_CONFIG([action-if-found], [action-if-not-found])
29+
# -----------------------------------------------------------
30+
AC_DEFUN([MCA_opal_pmix_ext114_CONFIG],[
31+
AC_CONFIG_FILES([opal/mca/pmix/ext114/Makefile])
32+
33+
AC_REQUIRE([OPAL_CHECK_PMIX])
34+
35+
AS_IF([test "$opal_external_pmix_happy" = "yes"],
36+
[AS_IF([test "$opal_event_external_support" != "yes"],
37+
[AC_MSG_WARN([EXTERNAL PMIX SUPPORT REQUIRES USE OF EXTERNAL LIBEVENT])
38+
AC_MSG_WARN([LIBRARY. THIS LIBRARY MUST POINT TO THE SAME ONE USED])
39+
AC_MSG_WARN([TO BUILD PMIX OR ELSE UNPREDICTABLE BEHAVIOR MAY RESULT])
40+
AC_MSG_ERROR([PLEASE CORRECT THE CONFIGURE COMMAND LINE AND REBUILD])])
41+
AS_IF([test "$opal_hwloc_external_support" != "yes"],
42+
[AC_MSG_WARN([EXTERNAL PMIX SUPPORT REQUIRES USE OF EXTERNAL HWLOC])
43+
AC_MSG_WARN([LIBRARY THIS LIBRARY MUST POINT TO THE SAME ONE USED ])
44+
AC_MSG_WARN([TO BUILD PMIX OR ELSE UNPREDICTABLE BEHAVIOR MAY RESULT])
45+
AC_MSG_ERROR([PLEASE CORRECT THE CONFIGURE COMMAND LINE AND REBUILD])])
46+
external_WRAPPER_EXTRA_CPPFLAGS='-I${includedir}/openmpi/$opal_pmix_external_basedir/pmix -I${includedir}/openmpi/$opal_pmix_external_basedir/pmix/include'
47+
# check for the 1.1.4 version by looking for a function
48+
# which was later removed
49+
AC_MSG_CHECKING([if external component is version 1.1.4])
50+
OPAL_CHECK_PACKAGE([opal_pmix_ext114],
51+
[pmix.h],
52+
[pmix],
53+
[PMIx_Register_errhandler],
54+
[-lpmix],
55+
[$pmix_ext_install_dir],
56+
[$pmix_ext_install_dir/lib],
57+
[AC_MSG_RESULT([yes])
58+
opal_pmix_external_114_happy=yes],
59+
[AC_MSG_RESULT([no])
60+
opal_pmix_external_114_happy=no])
61+
62+
AC_SUBST(opal_pmix_ext114_CPPFLAGS)
63+
AC_SUBST(opal_pmix_ext114_LDFLAGS)
64+
AC_SUBST(opal_pmix_ext114_LIBS)
65+
66+
AS_IF([test "$opal_pmix_external_114_happy" = "yes"],
67+
[$1
68+
# need to set the wrapper flags for static builds
69+
pmix_ext114_WRAPPER_EXTRA_LDFLAGS="$opal_pmix_ext114_LDFLAGS"
70+
pmix_ext114_WRAPPER_EXTRA_LIBS="$opal_pmix_ext114_LIBS"],
71+
[$2])],
72+
[$2])
73+
])dnl

opal/mca/pmix/external/pmix_ext.c renamed to opal/mca/pmix/ext114/pmix_ext.c

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil -*- */
22
/*
3-
* Copyright (c) 2014-2015 Intel, Inc. All rights reserved.
3+
* Copyright (c) 2014-2016 Intel, Inc. All rights reserved.
44
* Copyright (c) 2014-2016 Research Organization for Information Science
55
* and Technology (RIST). All rights reserved.
66
* Copyright (c) 2014-2015 Mellanox Technologies, Inc.
@@ -48,7 +48,7 @@
4848
static const char *pmix1_get_nspace(opal_jobid_t jobid);
4949
static void pmix1_register_jobid(opal_jobid_t jobid, const char *nspace);
5050

51-
const opal_pmix_base_module_t opal_pmix_external_module = {
51+
const opal_pmix_base_module_t opal_pmix_ext114_module = {
5252
/* client APIs */
5353
.init = pmix1_client_init,
5454
.finalize = pmix1_client_finalize,
@@ -99,7 +99,7 @@ static const char *pmix1_get_nspace(opal_jobid_t jobid)
9999
{
100100
opal_pmix1_jobid_trkr_t *jptr;
101101

102-
OPAL_LIST_FOREACH(jptr, &mca_pmix_external_component.jobids, opal_pmix1_jobid_trkr_t) {
102+
OPAL_LIST_FOREACH(jptr, &mca_pmix_ext114_component.jobids, opal_pmix1_jobid_trkr_t) {
103103
if (jptr->jobid == jobid) {
104104
return jptr->nspace;
105105
}
@@ -112,15 +112,15 @@ static void pmix1_register_jobid(opal_jobid_t jobid, const char *nspace)
112112
opal_pmix1_jobid_trkr_t *jptr;
113113

114114
/* if we don't already have it, add this to our jobid tracker */
115-
OPAL_LIST_FOREACH(jptr, &mca_pmix_external_component.jobids, opal_pmix1_jobid_trkr_t) {
115+
OPAL_LIST_FOREACH(jptr, &mca_pmix_ext114_component.jobids, opal_pmix1_jobid_trkr_t) {
116116
if (jptr->jobid == jobid) {
117117
return;
118118
}
119119
}
120120
jptr = OBJ_NEW(opal_pmix1_jobid_trkr_t);
121121
(void)strncpy(jptr->nspace, nspace, PMIX_MAX_NSLEN);
122122
jptr->jobid = jobid;
123-
opal_list_append(&mca_pmix_external_component.jobids, &jptr->super);
123+
opal_list_append(&mca_pmix_ext114_component.jobids, &jptr->super);
124124
}
125125

126126
pmix_status_t pmix1_convert_opalrc(int rc)

opal/mca/pmix/external/pmix_ext.h renamed to opal/mca/pmix/ext114/pmix_ext.h

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright (c) 2014-2015 Intel, Inc. All rights reserved.
2+
* Copyright (c) 2014-2016 Intel, Inc. All rights reserved.
33
* Copyright (c) 2014-2015 Mellanox Technologies, Inc.
44
* All rights reserved.
55
* Copyright (c) 2016 Research Organization for Information Science
@@ -11,8 +11,8 @@
1111
* $HEADER$
1212
*/
1313

14-
#ifndef MCA_PMIX_EXTERNAL_H
15-
#define MCA_PMIX_EXTERNAL_H
14+
#ifndef MCA_PMIX_EXT114_H
15+
#define MCA_PMIX_EXT114_H
1616

1717
#include "opal_config.h"
1818

@@ -38,11 +38,11 @@ typedef struct {
3838
opal_pmix_base_component_t super;
3939
opal_list_t jobids;
4040
bool native_launch;
41-
} mca_pmix_external_component_t;
41+
} mca_pmix_ext114_component_t;
4242

43-
OPAL_DECLSPEC extern mca_pmix_external_component_t mca_pmix_external_component;
43+
OPAL_DECLSPEC extern mca_pmix_ext114_component_t mca_pmix_ext114_component;
4444

45-
OPAL_DECLSPEC extern const opal_pmix_base_module_t opal_pmix_external_module;
45+
OPAL_DECLSPEC extern const opal_pmix_base_module_t opal_pmix_ext114_module;
4646

4747
/**** INTERNAL OBJECTS ****/
4848
typedef struct {

0 commit comments

Comments
 (0)