Skip to content

Commit 05ad248

Browse files
committed
docs: slurp PRTE's RST files into mpirun.1
This commit introduce a fundamentally new concept: have configure search PRRTE for RST files to include in Open MPI's documentation (regardless of whether we're using the internal/bundled PRRTE or an external PRRTE). If we're building against an external PRRTE that is old enough that it doesn't have any RST files installed, we'll make up some dummy RST files that basically say "you don't get help/content here because your PRRTE is too old." To simplify the configury for this scheme, this commit also makes another change: the pre-built HTML docs and nroff man pages included in distribution tarballs are now located at docs/html/ and docs/man/, respectively (vs. the location where we'll build them: docs/_build/html/ and docs/_build/man/, respectively). There are two cases here: 1. If the user has Sphinx available, we'll build the docs under docs/_build/, and install those (effectively ignoring the pre-built docs). 2. If the user does not have Sphinx available, we'll just install the pre-built docs. This simplified things like "make clean" and "make distcheck". Including RST content from PRTE required another major change: when we build the RST docs in a VPATH scenario, we copy the entire docs/ source tree to the build tree. This allows us to modify the RST sources a bit (e.g., to include the PRRTE RST files or generate dummy PRRTE RST files). mpirun.1.rst is updated to include the RST content from PRRTE about CLI options. More work needs to be done here to remove old, now-redundant content. Finally, we also amend the advice to implementors to have Sphinx installed when building their package so that Open MPI's build system can properly slurp in their PRRTE's RST docs. Signed-off-by: Jeff Squyres <[email protected]>
1 parent 1547727 commit 05ad248

12 files changed

+567
-173
lines changed

.gitignore

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -534,3 +534,12 @@ docs/_templates
534534
# Common Python virtual environment directory names
535535
venv
536536
py??
537+
538+
# Copies of PRRTE RST files (i.e., not source controlled in this tree)
539+
docs/prrte-rst-content
540+
docs/schizo-ompi-rst-content
541+
542+
# Copies of the built HTML docs and man pages (for distribution
543+
# tarballs)
544+
docs/html
545+
docs/man

Makefile.ompi-rules

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
# Copyright (c) 2008-2022 Cisco Systems, Inc. All rights reserved.
33
# Copyright (c) 2008 Sun Microsystems, Inc. All rights reserved.
44
# Copyright (c) 2020 Intel, Inc. All rights reserved.
5+
# Copyright (c) 2023 Jeffrey M. Squyres. All rights reserved.
56
# $COPYRIGHT$
67
#
78
# Additional copyrights may follow
@@ -26,6 +27,14 @@ OMPI_V_GEN = $(ompi__v_GEN_$V)
2627
ompi__v_GEN_ = $(ompi__v_GEN_$AM_DEFAULT_VERBOSITY)
2728
ompi__v_GEN_0 = @echo " GENERATE" $@;
2829

30+
OMPI_V_COPYALL = $(ompi__v_COPYALL_$V)
31+
ompi__v_COPYALL_ = $(ompi__v_COPYALL_$AM_DEFAULT_VERBOSITY)
32+
ompi__v_COPYALL_0 = @echo " COPY tree $@";
33+
34+
OMPI_V_SPHINX_COPYRST = $(ompi__v_SPHINX_COPYRST_$V)
35+
ompi__v_SPHINX_COPYRST_ = $(ompi__v_SPHINX_COPYRST_$AM_DEFAULT_VERBOSITY)
36+
ompi__v_SPHINX_COPYRST_0 = @echo " COPY RST source files";
37+
2938
OMPI_V_SPHINX_HTML = $(ompi__v_SPHINX_HTML_$V)
3039
ompi__v_SPHINX_HTML_ = $(ompi__v_SPHINX_HTML_$AM_DEFAULT_VERBOSITY)
3140
ompi__v_SPHINX_HTML_0 = @echo " GENERATE HTML docs";

config/ompi_setup_prrte.m4

Lines changed: 56 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ dnl Copyright (c) 2019-2020 Intel, Inc. All rights reserved.
1919
dnl Copyright (c) 2020-2022 Amazon.com, Inc. or its affiliates. All Rights reserved.
2020
dnl Copyright (c) 2021 Nanook Consulting. All rights reserved.
2121
dnl Copyright (c) 2021-2022 IBM Corporation. All rights reserved.
22+
dnl Copyright (c) 2023 Jeffrey M. Squyres. All rights reserved.
2223
dnl $COPYRIGHT$
2324
dnl
2425
dnl Additional copyrights may follow
@@ -35,10 +36,29 @@ dnl
3536
dnl A Makefile conditional OMPI_WANT_PRRTE will be defined based on the
3637
dnl results of the build.
3738
AC_DEFUN([OMPI_SETUP_PRRTE],[
38-
OPAL_VAR_SCOPE_PUSH([prrte_setup_internal_happy prrte_setup_external_happy])
39+
AC_REQUIRE([AC_PROG_LN_S])
40+
41+
OPAL_VAR_SCOPE_PUSH([prrte_setup_internal_happy prrte_setup_external_happy target_rst_dir])
3942
4043
opal_show_subtitle "Configuring PRRTE"
4144
45+
# We must have setup Sphinx before invoking this macro (i.e., it
46+
# is a programming error -- not a run-time error -- if Sphinx was
47+
# not previously setup). Unfortunately, we can't AC REQUIRE it
48+
# because the OAC SETUP SPHINX macro requires parameters. The
49+
# only publicly-visible env variable that OAC SETUP SPHINX sets is
50+
# $SPHINX_BUILD -- but it may be empty if sphinx-build
51+
# legitimately can't be found. Sooo... we can't really tell here
52+
# if OAC SETUP SPHINX has actually been invoked or not.
53+
54+
# These are sym links to folders with PRRTE's RST files that we'll
55+
# slurp into mpirun.1.rst. We'll remove these links (or even
56+
# accidental full copies) now and replace them with new links to
57+
# the PRRTE that we find, below.
58+
target_rst_dir="$OMPI_TOP_BUILDDIR/docs"
59+
rm -rf "$target_rst_dir/prrte-rst-content"
60+
rm -rf "$target_rst_dir/schizo-ompi-rst-content"
61+
4262
OPAL_3RDPARTY_WITH([prrte], [prrte], [package_prrte], [1])
4363
4464
AC_ARG_WITH([prrte-bindir],
@@ -101,12 +121,15 @@ AC_DEFUN([OMPI_SETUP_PRRTE],[
101121
[$OMPI_USING_INTERNAL_PRRTE],
102122
[Whether or not we are using the internal PRRTE])
103123
104-
OPAL_SUMMARY_ADD([Miscellaneous], [prrte], [], [$opal_prrte_mode])
124+
AC_SUBST(OMPI_PRRTE_RST_CONTENT_DIR)
125+
AC_SUBST(OMPI_SCHIZO_OMPI_RST_CONTENT_DIR)
126+
AM_CONDITIONAL(OMPI_HAVE_PRRTE_RST, [test $OMPI_HAVE_PRRTE_RST -eq 1])
127+
128+
OPAL_SUMMARY_ADD([Miscellaneous], [PRRTE], [], [$opal_prrte_mode])
105129
106130
OPAL_VAR_SCOPE_POP
107131
])
108132

109-
110133
dnl _OMPI_SETUP_PRRTE_INTERNAL([action-if-success], [action-if-not-success])
111134
dnl
112135
dnl Attempt to configure the built-in PRRTE.
@@ -220,7 +243,15 @@ AC_DEFUN([_OMPI_SETUP_PRRTE_INTERNAL], [
220243
[AC_MSG_ERROR([PRRTE configuration failed. Cannot continue.])])
221244
222245
AS_IF([test "$internal_prrte_happy" = "yes"],
223-
[$1], [$2])
246+
[AC_MSG_CHECKING([for internal PRRTE RST files])
247+
AS_IF([test -n "$SPHINX_BUILD"],
248+
[OMPI_HAVE_PRRTE_RST=1
249+
OMPI_PRRTE_RST_CONTENT_DIR="$OMPI_TOP_SRCDIR/3rd-party/prrte/src/docs/prrte-rst-content"
250+
OMPI_SCHIZO_OMPI_RST_CONTENT_DIR="$OMPI_TOP_SRCDIR/3rd-party/prrte/src/mca/schizo/ompi"
251+
AC_MSG_RESULT([found])],
252+
[AC_MSG_RESULT([not found])])
253+
$1],
254+
[$2])
224255
225256
OPAL_VAR_SCOPE_POP
226257
])
@@ -284,9 +315,27 @@ AC_DEFUN([_OMPI_SETUP_PRRTE_EXTERNAL], [
284315
[AC_DEFINE_UNQUOTED([OMPI_PRTERUN_PATH], ["${prterun_path}"], [Path to prterun])])
285316
286317
AS_IF([test "$setup_prrte_external_happy" = "yes"],
287-
[$1], [$2])
318+
[ # Determine if this external PRRTE has installed the RST
319+
# directories that we care about
320+
321+
AC_MSG_CHECKING([for external PRRTE RST files])
322+
prrte_install_dir=${with_prrte}/share/prte/rst
323+
AS_IF([test -n "$SPHINX_BUILD"],
324+
[AS_IF([test -d "$prrte_install_dir/prrte-rst-content" && \
325+
test -d "$prrte_install_dir/schizo-ompi-rst-content"],
326+
[OMPI_HAVE_PRRTE_RST=1
327+
OMPI_PRRTE_RST_CONTENT_DIR="$prrte_install_dir/prrte-rst-content"
328+
OMPI_SCHIZO_OMPI_RST_CONTENT_DIR="$prrte_install_dir/schizo-ompi-rst-content"
329+
AC_MSG_RESULT([found])
330+
],
331+
[ # This version of PRRTE doesn't have installed RST
332+
# files.
333+
AC_MSG_RESULT([not found])
334+
OMPI_HAVE_PRRTE_RST=0
335+
])
336+
])
337+
$1],
338+
[$2])
288339
289340
OPAL_VAR_SCOPE_POP
290341
])
291-
292-

configure.ac

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
# Copyright (c) 2018 FUJITSU LIMITED. All rights reserved.
2929
# Copyright (c) 2019 Triad National Security, LLC. All rights
3030
# reserved.
31+
# Copyright (c) 2023 Jeffrey M. Squyres. All rights reserved.
3132
# $COPYRIGHT$
3233
#
3334
# Additional copyrights may follow
@@ -1072,7 +1073,7 @@ AS_IF([test -z "$LEX" || \
10721073

10731074
dnl Note that we have to double escape the URL below
10741075
dnl so that the # it contains doesn't confuse the Autotools
1075-
OAC_SETUP_SPHINX([$srcdir/docs/_build/man/MPI_T.3],
1076+
OAC_SETUP_SPHINX([$srcdir/docs/man/MPI_T.3],
10761077
[[https://docs.open-mpi.org/en/main/developers/prerequisites.html#sphinx-and-therefore-python]])
10771078

10781079
#

0 commit comments

Comments
 (0)