Upgrade macos

This commit is contained in:
Bassem Girgis
2025-03-19 08:52:56 -05:00
parent 53580cb51f
commit d29ef955f5
8041 changed files with 1936720 additions and 130842 deletions

View File

@@ -0,0 +1,186 @@
<!DOCTYPE html>
<html class="writer-html5" lang="en">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>12.4. Running autogen.pl &mdash; OpenPMIx 5.0.5 documentation</title>
<link rel="stylesheet" type="text/css" href="../_static/pygments.css" />
<link rel="stylesheet" type="text/css" href="../_static/css/theme.css" />
<!--[if lt IE 9]>
<script src="../_static/js/html5shiv.min.js"></script>
<![endif]-->
<script data-url_root="../" id="documentation_options" src="../_static/documentation_options.js"></script>
<script src="../_static/jquery.js"></script>
<script src="../_static/underscore.js"></script>
<script src="../_static/_sphinx_javascript_frameworks_compat.js"></script>
<script src="../_static/doctools.js"></script>
<script src="../_static/sphinx_highlight.js"></script>
<script src="../_static/js/theme.js"></script>
<link rel="index" title="Index" href="../genindex.html" />
<link rel="search" title="Search" href="../search.html" />
<link rel="next" title="12.5. Building PMIx" href="building-pmix.html" />
<link rel="prev" title="12.3. Compiler Pickyness by Default" href="compiler-pickyness.html" />
</head>
<body class="wy-body-for-nav">
<div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="wy-side-scroll">
<div class="wy-side-nav-search" >
<a href="../index.html" class="icon icon-home">
OpenPMIx
</a>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="../search.html" method="get">
<input type="text" name="q" placeholder="Search docs" aria-label="Search docs" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
<ul class="current">
<li class="toctree-l1"><a class="reference internal" href="../quickstart.html">1. Quick start</a></li>
<li class="toctree-l1"><a class="reference internal" href="../getting-help.html">2. Getting help</a></li>
<li class="toctree-l1"><a class="reference internal" href="../release-notes/index.html">3. Release notes</a></li>
<li class="toctree-l1"><a class="reference internal" href="../exceptions.html">4. Exceptions to the PMIx Standard</a></li>
<li class="toctree-l1"><a class="reference internal" href="../installing-pmix/index.html">5. Building and installing PMIx</a></li>
<li class="toctree-l1"><a class="reference internal" href="../how-things-work/index.html">6. How Things Work</a></li>
<li class="toctree-l1"><a class="reference internal" href="../release-notes.html">7. Release Notes</a></li>
<li class="toctree-l1"><a class="reference internal" href="../history.html">8. History</a></li>
<li class="toctree-l1"><a class="reference internal" href="../versions.html">9. Version Numbers and Binary Compatibility</a></li>
<li class="toctree-l1"><a class="reference internal" href="../mca.html">10. The Modular Component Architecture (MCA)</a></li>
<li class="toctree-l1"><a class="reference internal" href="../building-apps/index.html">11. Building PMIx applications</a></li>
<li class="toctree-l1 current"><a class="reference internal" href="index.html">12. Developers guide</a><ul class="current">
<li class="toctree-l2"><a class="reference internal" href="prerequisites.html">12.1. Prerequisites</a></li>
<li class="toctree-l2"><a class="reference internal" href="git-github.html">12.2. GitHub, Git, and related topics</a></li>
<li class="toctree-l2"><a class="reference internal" href="compiler-pickyness.html">12.3. Compiler Pickyness by Default</a></li>
<li class="toctree-l2 current"><a class="current reference internal" href="#">12.4. Running <code class="docutils literal notranslate"><span class="pre">autogen.pl</span></code></a></li>
<li class="toctree-l2"><a class="reference internal" href="building-pmix.html">12.5. Building PMIx</a></li>
<li class="toctree-l2"><a class="reference internal" href="terminology.html">12.6. OpenPMIx terminology</a></li>
<li class="toctree-l2"><a class="reference internal" href="source-code.html">12.7. Source code</a></li>
<li class="toctree-l2"><a class="reference internal" href="frameworks.html">12.8. Internal frameworks</a></li>
<li class="toctree-l2"><a class="reference internal" href="gnu-autotools.html">12.9. Manually installing the GNU Autootools</a></li>
<li class="toctree-l2"><a class="reference internal" href="sphinx.html">12.10. Installing and running Sphinx (building the OpenPMIx docs)</a></li>
<li class="toctree-l2"><a class="reference internal" href="rst-for-markdown-expats.html">12.11. ReStructured Text for those who know Markdown</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../contributing.html">13. Contributing to OpenPMIx</a></li>
<li class="toctree-l1"><a class="reference internal" href="../license.html">14. License</a></li>
<li class="toctree-l1"><a class="reference internal" href="../security.html">15. OpenPMIx Security Policy</a></li>
<li class="toctree-l1"><a class="reference internal" href="../news/index.html">16. News</a></li>
<li class="toctree-l1"><a class="reference internal" href="../man/index.html">17. OpenPMIx manual pages</a></li>
</ul>
</div>
</div>
</nav>
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" >
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="../index.html">OpenPMIx</a>
</nav>
<div class="wy-nav-content">
<div class="rst-content">
<div role="navigation" aria-label="Page navigation">
<ul class="wy-breadcrumbs">
<li><a href="../index.html" class="icon icon-home" aria-label="Home"></a></li>
<li class="breadcrumb-item"><a href="index.html"><span class="section-number">12. </span>Developers guide</a></li>
<li class="breadcrumb-item active"><span class="section-number">12.4. </span>Running <code class="docutils literal notranslate"><span class="pre">autogen.pl</span></code></li>
<li class="wy-breadcrumbs-aside">
<a href="../_sources/developers/autogen.rst.txt" rel="nofollow"> View page source</a>
</li>
</ul>
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
<style>
.wy-table-responsive table td,.wy-table-responsive table th{white-space:normal}
</style><div class="section" id="running-autogen-pl">
<h1><span class="section-number">12.4. </span>Running <code class="docutils literal notranslate"><span class="pre">autogen.pl</span></code><a class="headerlink" href="#running-autogen-pl" title="Permalink to this heading"></a></h1>
<p>You can now run PMIxs top-level <code class="docutils literal notranslate"><span class="pre">autogen.pl</span></code> script. This script
will invoke the GNU Autoconf, Automake, and Libtool commands in the
proper order and do a bunch of component discovery and housekeeping to
setup to run PMIxs top-level <code class="docutils literal notranslate"><span class="pre">configure</span></code> script.</p>
<p>Running <code class="docutils literal notranslate"><span class="pre">autogen.pl</span></code> may take a few minutes, depending on your
system. Its not very exciting to watch.</p>
<p>If you have a multi-processor system, enabling the multi-threaded
behavior in Automake 1.11 (or newer) can result in <code class="docutils literal notranslate"><span class="pre">autogen.pl</span></code>
running faster. Do this by setting the <code class="docutils literal notranslate"><span class="pre">AUTOMAKE_JOBS</span></code> environment
variable to the number of processors (threads) that you want it to use
before invoking <code class="docutils literal notranslate"><span class="pre">autogen.pl</span></code>. For example (you can put this in your
shell startup files):</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="c1"># For bash/sh/zsh:</span>
<span class="n">export</span> <span class="n">AUTOMAKE_JOBS</span><span class="o">=</span><span class="mi">4</span>
<span class="c1"># For csh/tcsh:</span>
<span class="nb">set</span> <span class="n">AUTOMAKE_JOBS</span> <span class="mi">4</span>
</pre></div>
</div>
<div class="admonition important">
<p class="admonition-title">Important</p>
<p><code class="docutils literal notranslate"><span class="pre">autogen.pl</span></code> will fail and report an error if you
forgot to install the required submodule prior to running the
autogen script. You can either do this by adding the <code class="docutils literal notranslate"><span class="pre">--recursive</span></code>
flag to your Git <code class="docutils literal notranslate"><span class="pre">clone</span></code> command, or by manually populating the
submodule by running:</p>
<div class="highlight-sh notranslate"><div class="highlight"><pre><span></span>shell$<span class="w"> </span>git<span class="w"> </span>submodule<span class="w"> </span>update<span class="w"> </span>--init
</pre></div>
</div>
<p>prior to executing <code class="docutils literal notranslate"><span class="pre">autogen.pl</span></code>.</p>
</div>
<div class="admonition important">
<p class="admonition-title">Important</p>
<p>You generally need to run <code class="docutils literal notranslate"><span class="pre">autogen.pl</span></code> whenever the
top-level file <code class="docutils literal notranslate"><span class="pre">configure.ac</span></code> changes, or any files in the
<code class="docutils literal notranslate"><span class="pre">config/</span></code> or <code class="docutils literal notranslate"><span class="pre">&lt;project&gt;/config/</span></code> directories change (these
directories are where a lot of “include” files for PMIxs
<code class="docutils literal notranslate"><span class="pre">configure</span></code> script live).</p>
</div>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>You do <em>NOT</em> need to re-run <code class="docutils literal notranslate"><span class="pre">autogen.pl</span></code> if you modify a
<code class="docutils literal notranslate"><span class="pre">Makefile.am</span></code>.</p>
</div>
</div>
</div>
</div>
<footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
<a href="compiler-pickyness.html" class="btn btn-neutral float-left" title="12.3. Compiler Pickyness by Default" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
<a href="building-pmix.html" class="btn btn-neutral float-right" title="12.5. Building PMIx" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
</div>
<hr/>
<div role="contentinfo">
<p>&#169; Copyright 2014-2025, The OpenPMIx Community.</p>
</div>
Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
<a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
provided by <a href="https://readthedocs.org">Read the Docs</a>.
</footer>
</div>
</div>
</section>
</div>
<script>
jQuery(function () {
SphinxRtdTheme.Navigation.enable(true);
});
</script>
</body>
</html>

View File

@@ -0,0 +1,147 @@
<!DOCTYPE html>
<html class="writer-html5" lang="en">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>12.5. Building PMIx &mdash; OpenPMIx 5.0.5 documentation</title>
<link rel="stylesheet" type="text/css" href="../_static/pygments.css" />
<link rel="stylesheet" type="text/css" href="../_static/css/theme.css" />
<!--[if lt IE 9]>
<script src="../_static/js/html5shiv.min.js"></script>
<![endif]-->
<script data-url_root="../" id="documentation_options" src="../_static/documentation_options.js"></script>
<script src="../_static/jquery.js"></script>
<script src="../_static/underscore.js"></script>
<script src="../_static/_sphinx_javascript_frameworks_compat.js"></script>
<script src="../_static/doctools.js"></script>
<script src="../_static/sphinx_highlight.js"></script>
<script src="../_static/js/theme.js"></script>
<link rel="index" title="Index" href="../genindex.html" />
<link rel="search" title="Search" href="../search.html" />
<link rel="next" title="12.6. OpenPMIx terminology" href="terminology.html" />
<link rel="prev" title="12.4. Running autogen.pl" href="autogen.html" />
</head>
<body class="wy-body-for-nav">
<div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="wy-side-scroll">
<div class="wy-side-nav-search" >
<a href="../index.html" class="icon icon-home">
OpenPMIx
</a>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="../search.html" method="get">
<input type="text" name="q" placeholder="Search docs" aria-label="Search docs" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
<ul class="current">
<li class="toctree-l1"><a class="reference internal" href="../quickstart.html">1. Quick start</a></li>
<li class="toctree-l1"><a class="reference internal" href="../getting-help.html">2. Getting help</a></li>
<li class="toctree-l1"><a class="reference internal" href="../release-notes/index.html">3. Release notes</a></li>
<li class="toctree-l1"><a class="reference internal" href="../exceptions.html">4. Exceptions to the PMIx Standard</a></li>
<li class="toctree-l1"><a class="reference internal" href="../installing-pmix/index.html">5. Building and installing PMIx</a></li>
<li class="toctree-l1"><a class="reference internal" href="../how-things-work/index.html">6. How Things Work</a></li>
<li class="toctree-l1"><a class="reference internal" href="../release-notes.html">7. Release Notes</a></li>
<li class="toctree-l1"><a class="reference internal" href="../history.html">8. History</a></li>
<li class="toctree-l1"><a class="reference internal" href="../versions.html">9. Version Numbers and Binary Compatibility</a></li>
<li class="toctree-l1"><a class="reference internal" href="../mca.html">10. The Modular Component Architecture (MCA)</a></li>
<li class="toctree-l1"><a class="reference internal" href="../building-apps/index.html">11. Building PMIx applications</a></li>
<li class="toctree-l1 current"><a class="reference internal" href="index.html">12. Developers guide</a><ul class="current">
<li class="toctree-l2"><a class="reference internal" href="prerequisites.html">12.1. Prerequisites</a></li>
<li class="toctree-l2"><a class="reference internal" href="git-github.html">12.2. GitHub, Git, and related topics</a></li>
<li class="toctree-l2"><a class="reference internal" href="compiler-pickyness.html">12.3. Compiler Pickyness by Default</a></li>
<li class="toctree-l2"><a class="reference internal" href="autogen.html">12.4. Running <code class="docutils literal notranslate"><span class="pre">autogen.pl</span></code></a></li>
<li class="toctree-l2 current"><a class="current reference internal" href="#">12.5. Building PMIx</a></li>
<li class="toctree-l2"><a class="reference internal" href="terminology.html">12.6. OpenPMIx terminology</a></li>
<li class="toctree-l2"><a class="reference internal" href="source-code.html">12.7. Source code</a></li>
<li class="toctree-l2"><a class="reference internal" href="frameworks.html">12.8. Internal frameworks</a></li>
<li class="toctree-l2"><a class="reference internal" href="gnu-autotools.html">12.9. Manually installing the GNU Autootools</a></li>
<li class="toctree-l2"><a class="reference internal" href="sphinx.html">12.10. Installing and running Sphinx (building the OpenPMIx docs)</a></li>
<li class="toctree-l2"><a class="reference internal" href="rst-for-markdown-expats.html">12.11. ReStructured Text for those who know Markdown</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../contributing.html">13. Contributing to OpenPMIx</a></li>
<li class="toctree-l1"><a class="reference internal" href="../license.html">14. License</a></li>
<li class="toctree-l1"><a class="reference internal" href="../security.html">15. OpenPMIx Security Policy</a></li>
<li class="toctree-l1"><a class="reference internal" href="../news/index.html">16. News</a></li>
<li class="toctree-l1"><a class="reference internal" href="../man/index.html">17. OpenPMIx manual pages</a></li>
</ul>
</div>
</div>
</nav>
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" >
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="../index.html">OpenPMIx</a>
</nav>
<div class="wy-nav-content">
<div class="rst-content">
<div role="navigation" aria-label="Page navigation">
<ul class="wy-breadcrumbs">
<li><a href="../index.html" class="icon icon-home" aria-label="Home"></a></li>
<li class="breadcrumb-item"><a href="index.html"><span class="section-number">12. </span>Developers guide</a></li>
<li class="breadcrumb-item active"><span class="section-number">12.5. </span>Building PMIx</li>
<li class="wy-breadcrumbs-aside">
<a href="../_sources/developers/building-pmix.rst.txt" rel="nofollow"> View page source</a>
</li>
</ul>
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
<style>
.wy-table-responsive table td,.wy-table-responsive table th{white-space:normal}
</style><div class="section" id="building-pmix">
<h1><span class="section-number">12.5. </span>Building PMIx<a class="headerlink" href="#building-pmix" title="Permalink to this heading"></a></h1>
<p>Once you have run <code class="docutils literal notranslate"><span class="pre">autogen.pl</span></code> successfully, you can configure and
build PMIx just like end users do with official distribution PMIx
tarballs.</p>
<p>See the <a class="reference internal" href="../installing-pmix/index.html"><span class="doc">general “Install PMIx” documentation for more
details.</span></a></p>
</div>
</div>
</div>
<footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
<a href="autogen.html" class="btn btn-neutral float-left" title="12.4. Running autogen.pl" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
<a href="terminology.html" class="btn btn-neutral float-right" title="12.6. OpenPMIx terminology" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
</div>
<hr/>
<div role="contentinfo">
<p>&#169; Copyright 2014-2025, The OpenPMIx Community.</p>
</div>
Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
<a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
provided by <a href="https://readthedocs.org">Read the Docs</a>.
</footer>
</div>
</div>
</section>
</div>
<script>
jQuery(function () {
SphinxRtdTheme.Navigation.enable(true);
});
</script>
</body>
</html>

View File

@@ -0,0 +1,159 @@
<!DOCTYPE html>
<html class="writer-html5" lang="en">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>12.3. Compiler Pickyness by Default &mdash; OpenPMIx 5.0.5 documentation</title>
<link rel="stylesheet" type="text/css" href="../_static/pygments.css" />
<link rel="stylesheet" type="text/css" href="../_static/css/theme.css" />
<!--[if lt IE 9]>
<script src="../_static/js/html5shiv.min.js"></script>
<![endif]-->
<script data-url_root="../" id="documentation_options" src="../_static/documentation_options.js"></script>
<script src="../_static/jquery.js"></script>
<script src="../_static/underscore.js"></script>
<script src="../_static/_sphinx_javascript_frameworks_compat.js"></script>
<script src="../_static/doctools.js"></script>
<script src="../_static/sphinx_highlight.js"></script>
<script src="../_static/js/theme.js"></script>
<link rel="index" title="Index" href="../genindex.html" />
<link rel="search" title="Search" href="../search.html" />
<link rel="next" title="12.4. Running autogen.pl" href="autogen.html" />
<link rel="prev" title="12.2. GitHub, Git, and related topics" href="git-github.html" />
</head>
<body class="wy-body-for-nav">
<div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="wy-side-scroll">
<div class="wy-side-nav-search" >
<a href="../index.html" class="icon icon-home">
OpenPMIx
</a>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="../search.html" method="get">
<input type="text" name="q" placeholder="Search docs" aria-label="Search docs" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
<ul class="current">
<li class="toctree-l1"><a class="reference internal" href="../quickstart.html">1. Quick start</a></li>
<li class="toctree-l1"><a class="reference internal" href="../getting-help.html">2. Getting help</a></li>
<li class="toctree-l1"><a class="reference internal" href="../release-notes/index.html">3. Release notes</a></li>
<li class="toctree-l1"><a class="reference internal" href="../exceptions.html">4. Exceptions to the PMIx Standard</a></li>
<li class="toctree-l1"><a class="reference internal" href="../installing-pmix/index.html">5. Building and installing PMIx</a></li>
<li class="toctree-l1"><a class="reference internal" href="../how-things-work/index.html">6. How Things Work</a></li>
<li class="toctree-l1"><a class="reference internal" href="../release-notes.html">7. Release Notes</a></li>
<li class="toctree-l1"><a class="reference internal" href="../history.html">8. History</a></li>
<li class="toctree-l1"><a class="reference internal" href="../versions.html">9. Version Numbers and Binary Compatibility</a></li>
<li class="toctree-l1"><a class="reference internal" href="../mca.html">10. The Modular Component Architecture (MCA)</a></li>
<li class="toctree-l1"><a class="reference internal" href="../building-apps/index.html">11. Building PMIx applications</a></li>
<li class="toctree-l1 current"><a class="reference internal" href="index.html">12. Developers guide</a><ul class="current">
<li class="toctree-l2"><a class="reference internal" href="prerequisites.html">12.1. Prerequisites</a></li>
<li class="toctree-l2"><a class="reference internal" href="git-github.html">12.2. GitHub, Git, and related topics</a></li>
<li class="toctree-l2 current"><a class="current reference internal" href="#">12.3. Compiler Pickyness by Default</a></li>
<li class="toctree-l2"><a class="reference internal" href="autogen.html">12.4. Running <code class="docutils literal notranslate"><span class="pre">autogen.pl</span></code></a></li>
<li class="toctree-l2"><a class="reference internal" href="building-pmix.html">12.5. Building PMIx</a></li>
<li class="toctree-l2"><a class="reference internal" href="terminology.html">12.6. OpenPMIx terminology</a></li>
<li class="toctree-l2"><a class="reference internal" href="source-code.html">12.7. Source code</a></li>
<li class="toctree-l2"><a class="reference internal" href="frameworks.html">12.8. Internal frameworks</a></li>
<li class="toctree-l2"><a class="reference internal" href="gnu-autotools.html">12.9. Manually installing the GNU Autootools</a></li>
<li class="toctree-l2"><a class="reference internal" href="sphinx.html">12.10. Installing and running Sphinx (building the OpenPMIx docs)</a></li>
<li class="toctree-l2"><a class="reference internal" href="rst-for-markdown-expats.html">12.11. ReStructured Text for those who know Markdown</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../contributing.html">13. Contributing to OpenPMIx</a></li>
<li class="toctree-l1"><a class="reference internal" href="../license.html">14. License</a></li>
<li class="toctree-l1"><a class="reference internal" href="../security.html">15. OpenPMIx Security Policy</a></li>
<li class="toctree-l1"><a class="reference internal" href="../news/index.html">16. News</a></li>
<li class="toctree-l1"><a class="reference internal" href="../man/index.html">17. OpenPMIx manual pages</a></li>
</ul>
</div>
</div>
</nav>
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" >
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="../index.html">OpenPMIx</a>
</nav>
<div class="wy-nav-content">
<div class="rst-content">
<div role="navigation" aria-label="Page navigation">
<ul class="wy-breadcrumbs">
<li><a href="../index.html" class="icon icon-home" aria-label="Home"></a></li>
<li class="breadcrumb-item"><a href="index.html"><span class="section-number">12. </span>Developers guide</a></li>
<li class="breadcrumb-item active"><span class="section-number">12.3. </span>Compiler Pickyness by Default</li>
<li class="wy-breadcrumbs-aside">
<a href="../_sources/developers/compiler-pickyness.rst.txt" rel="nofollow"> View page source</a>
</li>
</ul>
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
<style>
.wy-table-responsive table td,.wy-table-responsive table th{white-space:normal}
</style><div class="section" id="compiler-pickyness-by-default">
<h1><span class="section-number">12.3. </span>Compiler Pickyness by Default<a class="headerlink" href="#compiler-pickyness-by-default" title="Permalink to this heading"></a></h1>
<p>If you are building PMIx from a Git clone (i.e., there is a
<code class="docutils literal notranslate"><span class="pre">.git</span></code> directory in your build tree), the default build includes
extra compiler pickyness, which will result in more compiler warnings
than in non-developer builds and will mandate that warnings be
treated as errors. Getting these extra compiler warnings
is helpful to PMIx developers in making the code base as clean as
possible.</p>
<p>Developers can disable this picky-by-default behavior by using the
<code class="docutils literal notranslate"><span class="pre">--disable-picky</span></code> configure option. Also note that extra-picky
compiles do <em>not</em> happen automatically when you do a VPATH build
(e.g., if <code class="docutils literal notranslate"><span class="pre">.git</span></code> is in your source tree, but not in your build
tree).</p>
<p>Prior versions of PMIx would automatically activate a lot of
(performance-reducing) debugging code by default if <code class="docutils literal notranslate"><span class="pre">.git</span></code> was found
in your build tree. This is no longer true. You can manually enable
these (performance-reducing) debugging features in the PMIx code
base with the <code class="docutils literal notranslate"><span class="pre">--enable-debug</span></code> configure option.</p>
</div>
</div>
</div>
<footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
<a href="git-github.html" class="btn btn-neutral float-left" title="12.2. GitHub, Git, and related topics" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
<a href="autogen.html" class="btn btn-neutral float-right" title="12.4. Running autogen.pl" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
</div>
<hr/>
<div role="contentinfo">
<p>&#169; Copyright 2014-2025, The OpenPMIx Community.</p>
</div>
Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
<a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
provided by <a href="https://readthedocs.org">Read the Docs</a>.
</footer>
</div>
</div>
</section>
</div>
<script>
jQuery(function () {
SphinxRtdTheme.Navigation.enable(true);
});
</script>
</body>
</html>

View File

@@ -0,0 +1,207 @@
<!DOCTYPE html>
<html class="writer-html5" lang="en">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>12.8. Internal frameworks &mdash; OpenPMIx 5.0.5 documentation</title>
<link rel="stylesheet" type="text/css" href="../_static/pygments.css" />
<link rel="stylesheet" type="text/css" href="../_static/css/theme.css" />
<!--[if lt IE 9]>
<script src="../_static/js/html5shiv.min.js"></script>
<![endif]-->
<script data-url_root="../" id="documentation_options" src="../_static/documentation_options.js"></script>
<script src="../_static/jquery.js"></script>
<script src="../_static/underscore.js"></script>
<script src="../_static/_sphinx_javascript_frameworks_compat.js"></script>
<script src="../_static/doctools.js"></script>
<script src="../_static/sphinx_highlight.js"></script>
<script src="../_static/js/theme.js"></script>
<link rel="index" title="Index" href="../genindex.html" />
<link rel="search" title="Search" href="../search.html" />
<link rel="next" title="12.9. Manually installing the GNU Autootools" href="gnu-autotools.html" />
<link rel="prev" title="12.7. Source code" href="source-code.html" />
</head>
<body class="wy-body-for-nav">
<div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="wy-side-scroll">
<div class="wy-side-nav-search" >
<a href="../index.html" class="icon icon-home">
OpenPMIx
</a>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="../search.html" method="get">
<input type="text" name="q" placeholder="Search docs" aria-label="Search docs" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
<ul class="current">
<li class="toctree-l1"><a class="reference internal" href="../quickstart.html">1. Quick start</a></li>
<li class="toctree-l1"><a class="reference internal" href="../getting-help.html">2. Getting help</a></li>
<li class="toctree-l1"><a class="reference internal" href="../release-notes/index.html">3. Release notes</a></li>
<li class="toctree-l1"><a class="reference internal" href="../exceptions.html">4. Exceptions to the PMIx Standard</a></li>
<li class="toctree-l1"><a class="reference internal" href="../installing-pmix/index.html">5. Building and installing PMIx</a></li>
<li class="toctree-l1"><a class="reference internal" href="../how-things-work/index.html">6. How Things Work</a></li>
<li class="toctree-l1"><a class="reference internal" href="../release-notes.html">7. Release Notes</a></li>
<li class="toctree-l1"><a class="reference internal" href="../history.html">8. History</a></li>
<li class="toctree-l1"><a class="reference internal" href="../versions.html">9. Version Numbers and Binary Compatibility</a></li>
<li class="toctree-l1"><a class="reference internal" href="../mca.html">10. The Modular Component Architecture (MCA)</a></li>
<li class="toctree-l1"><a class="reference internal" href="../building-apps/index.html">11. Building PMIx applications</a></li>
<li class="toctree-l1 current"><a class="reference internal" href="index.html">12. Developers guide</a><ul class="current">
<li class="toctree-l2"><a class="reference internal" href="prerequisites.html">12.1. Prerequisites</a></li>
<li class="toctree-l2"><a class="reference internal" href="git-github.html">12.2. GitHub, Git, and related topics</a></li>
<li class="toctree-l2"><a class="reference internal" href="compiler-pickyness.html">12.3. Compiler Pickyness by Default</a></li>
<li class="toctree-l2"><a class="reference internal" href="autogen.html">12.4. Running <code class="docutils literal notranslate"><span class="pre">autogen.pl</span></code></a></li>
<li class="toctree-l2"><a class="reference internal" href="building-pmix.html">12.5. Building PMIx</a></li>
<li class="toctree-l2"><a class="reference internal" href="terminology.html">12.6. OpenPMIx terminology</a></li>
<li class="toctree-l2"><a class="reference internal" href="source-code.html">12.7. Source code</a></li>
<li class="toctree-l2 current"><a class="current reference internal" href="#">12.8. Internal frameworks</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#framework-notes">12.8.1. Framework notes</a></li>
<li class="toctree-l3"><a class="reference internal" href="#mca-parameter-notes">12.8.2. MCA parameter notes</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="gnu-autotools.html">12.9. Manually installing the GNU Autootools</a></li>
<li class="toctree-l2"><a class="reference internal" href="sphinx.html">12.10. Installing and running Sphinx (building the OpenPMIx docs)</a></li>
<li class="toctree-l2"><a class="reference internal" href="rst-for-markdown-expats.html">12.11. ReStructured Text for those who know Markdown</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../contributing.html">13. Contributing to OpenPMIx</a></li>
<li class="toctree-l1"><a class="reference internal" href="../license.html">14. License</a></li>
<li class="toctree-l1"><a class="reference internal" href="../security.html">15. OpenPMIx Security Policy</a></li>
<li class="toctree-l1"><a class="reference internal" href="../news/index.html">16. News</a></li>
<li class="toctree-l1"><a class="reference internal" href="../man/index.html">17. OpenPMIx manual pages</a></li>
</ul>
</div>
</div>
</nav>
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" >
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="../index.html">OpenPMIx</a>
</nav>
<div class="wy-nav-content">
<div class="rst-content">
<div role="navigation" aria-label="Page navigation">
<ul class="wy-breadcrumbs">
<li><a href="../index.html" class="icon icon-home" aria-label="Home"></a></li>
<li class="breadcrumb-item"><a href="index.html"><span class="section-number">12. </span>Developers guide</a></li>
<li class="breadcrumb-item active"><span class="section-number">12.8. </span>Internal frameworks</li>
<li class="wy-breadcrumbs-aside">
<a href="../_sources/developers/frameworks.rst.txt" rel="nofollow"> View page source</a>
</li>
</ul>
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
<style>
.wy-table-responsive table td,.wy-table-responsive table th{white-space:normal}
</style><div class="section" id="internal-frameworks">
<span id="label-frameworks"></span><h1><span class="section-number">12.8. </span>Internal frameworks<a class="headerlink" href="#internal-frameworks" title="Permalink to this heading"></a></h1>
<p>The Modular Component Architecture (MCA) is the backbone of PMIx
most services and functionality are implemented through MCA
components.</p>
<p>Here is a list of all the component frameworks in PMIx as of
this writing February-2025:</p>
<ul class="simple">
<li><p><code class="docutils literal notranslate"><span class="pre">bfrops</span></code>: Buffer Operations, including support for pack/unpack,
copy, print, compare, and load of data types and structured objects</p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">gds</span></code>: Generalized DataStore for storing job-level and other data</p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">pcompress</span></code>: Compress to support compression of large data objects</p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">pdl</span></code>: DLopen support</p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">pfexec</span></code>: Fork/Exec support to allow tools to start child processes</p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">pgpu</span></code>: GPU support</p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">pif</span></code>: Interface discovery</p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">pinstalldirs</span></code>: Install Directories - provides a struct containing
all installation locations</p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">plog</span></code>: Logging of user-provided alerts</p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">pmdl</span></code>: Programming Model - provides support for a range of
programming models and libraries, including collection of default
parameters and environmental variables for forwarding and setting
of library-specific environmental variables</p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">pnet</span></code>: Network support, including computation of endpoints to
support the <code class="docutils literal notranslate"><span class="pre">instant</span> <span class="pre">on</span></code> launch procedure</p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">preg</span></code>: Regular expression generator and parser</p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">prm</span></code>: Resource Manager support - translation of generic PMIx directives
(e.g., mapping and resource definitions) to RM-specific values and
general RM-specific support</p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">psec</span></code>: Security operations such as connection handshakes</p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">psensor</span></code>: Sensor framework for monitoring processes, including
resource utilization and state-of-health (e.g., heartbeat)</p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">psquash</span></code>: Internal framework for squashing integer data values
during transmission</p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">pstat</span></code>: Statistics, including reporting resource usage at the
process, node, and disk levels</p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">ptl</span></code>: Transport Layer for client-server and tool-server
communication</p></li>
</ul>
<div class="section" id="framework-notes">
<h2><span class="section-number">12.8.1. </span>Framework notes<a class="headerlink" href="#framework-notes" title="Permalink to this heading"></a></h2>
<p>Each framework typically has one or more components that are used at
run-time. For example, the <code class="docutils literal notranslate"><span class="pre">bfrops</span></code> framework is used by PMIx
to pack/unpack data for transmission, copy data objects, and other
data manipulation operations. The <code class="docutils literal notranslate"><span class="pre">v3</span></code> component, for example,
supports the data object definitions introduced in v3 of the
library, while the <code class="docutils literal notranslate"><span class="pre">v41</span></code> component supports those introduced
in v4.1.</p>
</div>
<div class="section" id="mca-parameter-notes">
<h2><span class="section-number">12.8.2. </span>MCA parameter notes<a class="headerlink" href="#mca-parameter-notes" title="Permalink to this heading"></a></h2>
<p>Each component typically has some tunable parameters that can be
changed at run-time. Use the <a class="reference internal" href="../man/man1/pmix_info.1.html#man1-pmix-info"><span class="std std-ref">pmix_info(1)</span></a>
command to check a component to see what its tunable parameters are.
For example:</p>
<div class="highlight-sh notranslate"><div class="highlight"><pre><span></span>shell$<span class="w"> </span>pmix_info<span class="w"> </span>--param<span class="w"> </span>psensor<span class="w"> </span>file
</pre></div>
</div>
<p>shows the parameters (and default values) for the <code class="docutils literal notranslate"><span class="pre">file</span></code> <code class="docutils literal notranslate"><span class="pre">psensor</span></code>
component.</p>
<p>See <a class="reference internal" href="../mca.html#label-running-setting-mca-param-values"><span class="std std-ref">this section</span></a> for
details on how to set MCA parameters at run time.</p>
</div>
</div>
</div>
</div>
<footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
<a href="source-code.html" class="btn btn-neutral float-left" title="12.7. Source code" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
<a href="gnu-autotools.html" class="btn btn-neutral float-right" title="12.9. Manually installing the GNU Autootools" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
</div>
<hr/>
<div role="contentinfo">
<p>&#169; Copyright 2014-2025, The OpenPMIx Community.</p>
</div>
Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
<a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
provided by <a href="https://readthedocs.org">Read the Docs</a>.
</footer>
</div>
</div>
</section>
</div>
<script>
jQuery(function () {
SphinxRtdTheme.Navigation.enable(true);
});
</script>
</body>
</html>

View File

@@ -0,0 +1,324 @@
<!DOCTYPE html>
<html class="writer-html5" lang="en">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>12.2. GitHub, Git, and related topics &mdash; OpenPMIx 5.0.5 documentation</title>
<link rel="stylesheet" type="text/css" href="../_static/pygments.css" />
<link rel="stylesheet" type="text/css" href="../_static/css/theme.css" />
<!--[if lt IE 9]>
<script src="../_static/js/html5shiv.min.js"></script>
<![endif]-->
<script data-url_root="../" id="documentation_options" src="../_static/documentation_options.js"></script>
<script src="../_static/jquery.js"></script>
<script src="../_static/underscore.js"></script>
<script src="../_static/_sphinx_javascript_frameworks_compat.js"></script>
<script src="../_static/doctools.js"></script>
<script src="../_static/sphinx_highlight.js"></script>
<script src="../_static/js/theme.js"></script>
<link rel="index" title="Index" href="../genindex.html" />
<link rel="search" title="Search" href="../search.html" />
<link rel="next" title="12.3. Compiler Pickyness by Default" href="compiler-pickyness.html" />
<link rel="prev" title="12.1. Prerequisites" href="prerequisites.html" />
</head>
<body class="wy-body-for-nav">
<div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="wy-side-scroll">
<div class="wy-side-nav-search" >
<a href="../index.html" class="icon icon-home">
OpenPMIx
</a>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="../search.html" method="get">
<input type="text" name="q" placeholder="Search docs" aria-label="Search docs" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
<ul class="current">
<li class="toctree-l1"><a class="reference internal" href="../quickstart.html">1. Quick start</a></li>
<li class="toctree-l1"><a class="reference internal" href="../getting-help.html">2. Getting help</a></li>
<li class="toctree-l1"><a class="reference internal" href="../release-notes/index.html">3. Release notes</a></li>
<li class="toctree-l1"><a class="reference internal" href="../exceptions.html">4. Exceptions to the PMIx Standard</a></li>
<li class="toctree-l1"><a class="reference internal" href="../installing-pmix/index.html">5. Building and installing PMIx</a></li>
<li class="toctree-l1"><a class="reference internal" href="../how-things-work/index.html">6. How Things Work</a></li>
<li class="toctree-l1"><a class="reference internal" href="../release-notes.html">7. Release Notes</a></li>
<li class="toctree-l1"><a class="reference internal" href="../history.html">8. History</a></li>
<li class="toctree-l1"><a class="reference internal" href="../versions.html">9. Version Numbers and Binary Compatibility</a></li>
<li class="toctree-l1"><a class="reference internal" href="../mca.html">10. The Modular Component Architecture (MCA)</a></li>
<li class="toctree-l1"><a class="reference internal" href="../building-apps/index.html">11. Building PMIx applications</a></li>
<li class="toctree-l1 current"><a class="reference internal" href="index.html">12. Developers guide</a><ul class="current">
<li class="toctree-l2"><a class="reference internal" href="prerequisites.html">12.1. Prerequisites</a></li>
<li class="toctree-l2 current"><a class="current reference internal" href="#">12.2. GitHub, Git, and related topics</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#github">12.2.1. GitHub</a></li>
<li class="toctree-l3"><a class="reference internal" href="#git-commits-open-source-contributor-s-declaration">12.2.2. Git commits: open source / contributors declaration</a></li>
<li class="toctree-l3"><a class="reference internal" href="#git-branch-scheme">12.2.3. Git branch scheme</a></li>
<li class="toctree-l3"><a class="reference internal" href="#ci-testing">12.2.4. CI (testing)</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="compiler-pickyness.html">12.3. Compiler Pickyness by Default</a></li>
<li class="toctree-l2"><a class="reference internal" href="autogen.html">12.4. Running <code class="docutils literal notranslate"><span class="pre">autogen.pl</span></code></a></li>
<li class="toctree-l2"><a class="reference internal" href="building-pmix.html">12.5. Building PMIx</a></li>
<li class="toctree-l2"><a class="reference internal" href="terminology.html">12.6. OpenPMIx terminology</a></li>
<li class="toctree-l2"><a class="reference internal" href="source-code.html">12.7. Source code</a></li>
<li class="toctree-l2"><a class="reference internal" href="frameworks.html">12.8. Internal frameworks</a></li>
<li class="toctree-l2"><a class="reference internal" href="gnu-autotools.html">12.9. Manually installing the GNU Autootools</a></li>
<li class="toctree-l2"><a class="reference internal" href="sphinx.html">12.10. Installing and running Sphinx (building the OpenPMIx docs)</a></li>
<li class="toctree-l2"><a class="reference internal" href="rst-for-markdown-expats.html">12.11. ReStructured Text for those who know Markdown</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../contributing.html">13. Contributing to OpenPMIx</a></li>
<li class="toctree-l1"><a class="reference internal" href="../license.html">14. License</a></li>
<li class="toctree-l1"><a class="reference internal" href="../security.html">15. OpenPMIx Security Policy</a></li>
<li class="toctree-l1"><a class="reference internal" href="../news/index.html">16. News</a></li>
<li class="toctree-l1"><a class="reference internal" href="../man/index.html">17. OpenPMIx manual pages</a></li>
</ul>
</div>
</div>
</nav>
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" >
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="../index.html">OpenPMIx</a>
</nav>
<div class="wy-nav-content">
<div class="rst-content">
<div role="navigation" aria-label="Page navigation">
<ul class="wy-breadcrumbs">
<li><a href="../index.html" class="icon icon-home" aria-label="Home"></a></li>
<li class="breadcrumb-item"><a href="index.html"><span class="section-number">12. </span>Developers guide</a></li>
<li class="breadcrumb-item active"><span class="section-number">12.2. </span>GitHub, Git, and related topics</li>
<li class="wy-breadcrumbs-aside">
<a href="../_sources/developers/git-github.rst.txt" rel="nofollow"> View page source</a>
</li>
</ul>
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
<style>
.wy-table-responsive table td,.wy-table-responsive table th{white-space:normal}
</style><div class="section" id="github-git-and-related-topics">
<h1><span class="section-number">12.2. </span>GitHub, Git, and related topics<a class="headerlink" href="#github-git-and-related-topics" title="Permalink to this heading"></a></h1>
<div class="section" id="github">
<h2><span class="section-number">12.2.1. </span>GitHub<a class="headerlink" href="#github" title="Permalink to this heading"></a></h2>
<p>PMIxs Git repository is <a class="reference external" href="https://github.com/openpmix/openpmix">hosted at GitHub</a>.</p>
<ol class="arabic">
<li><p>First, you will need a Git client. We recommend getting the latest
version available. If you do not have the command <code class="docutils literal notranslate"><span class="pre">git</span></code> in your
path, you will likely need to download and install Git.</p></li>
<li><p><a class="reference external" href="https://github.com/openpmix/openpmix/">openpmix</a> is the main PMIx
repository where most active development is done. Git clone this
repository. Note that the use of the <code class="docutils literal notranslate"><span class="pre">--recursive</span></code> CLI option is
necessary because PMIx uses Git submodules:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span>shell$ git clone --recursive https://github.com/openpmix/openpmix.git
</pre></div>
</div>
</li>
</ol>
<p>Note that Git is natively capable of using many forms of web
proxies. If your network setup requires the user of a web proxy,
<a class="reference external" href="https://git-scm.com/">consult the Git documentation for more details</a>.</p>
</div>
<div class="section" id="git-commits-open-source-contributor-s-declaration">
<h2><span class="section-number">12.2.2. </span>Git commits: open source / contributors declaration<a class="headerlink" href="#git-commits-open-source-contributor-s-declaration" title="Permalink to this heading"></a></h2>
<p>In order to remain open source, all new commits to the PMIx
repository must include a <code class="docutils literal notranslate"><span class="pre">Signed-off-by:</span></code> line, indicating the
submitters agreement to the <a class="reference internal" href="../contributing.html#contributing-contributors-declaration-label"><span class="std std-ref">PMIx Contributors Declaration</span></a>.</p>
<div class="admonition tip">
<p class="admonition-title">Tip</p>
<p>You can use the <code class="docutils literal notranslate"><span class="pre">-s</span></code> option to <code class="docutils literal notranslate"><span class="pre">git</span> <span class="pre">commit</span></code> to
automatically add the <code class="docutils literal notranslate"><span class="pre">Signed-off-by:</span></code> line to your commit
message.</p>
</div>
</div>
<div class="section" id="git-branch-scheme">
<span id="git-github-branch-scheme-label"></span><h2><span class="section-number">12.2.3. </span>Git branch scheme<a class="headerlink" href="#git-branch-scheme" title="Permalink to this heading"></a></h2>
<p>Generally, PMIx has two types of branches in its Git repository:</p>
<ol class="arabic simple">
<li><p><code class="docutils literal notranslate"><span class="pre">master</span></code>:</p>
<ul class="simple">
<li><p>All active development occurs on the <code class="docutils literal notranslate"><span class="pre">master</span></code> branch (new features,
bug fixes, etc.).</p></li>
</ul>
</li>
<li><p>Release branches of the form <code class="docutils literal notranslate"><span class="pre">vMAJOR.MINOR.x</span></code> (e.g., <code class="docutils literal notranslate"><span class="pre">v4.0.x</span></code>,
<code class="docutils literal notranslate"><span class="pre">v4.1.x</span></code>, <code class="docutils literal notranslate"><span class="pre">v5.0.x</span></code>).</p>
<ul class="simple">
<li><p>The <code class="docutils literal notranslate"><span class="pre">.x</span></code> suffix indicates that this branch is used to create
all releases in the PMIx vMAJOR.MINOR series.</p></li>
<li><p>Periodically, the PMIx community will make a new release
branch, typically from <code class="docutils literal notranslate"><span class="pre">master</span></code>.</p></li>
<li><p>A Git tag of the form <code class="docutils literal notranslate"><span class="pre">vMAJOR.MINOR.RELEASE</span></code> is used to
indicate the specific commit on a release branch from where
official PMIx release tarball was created (e.g., <code class="docutils literal notranslate"><span class="pre">v4.1.0</span></code>,
<code class="docutils literal notranslate"><span class="pre">v4.1.1</span></code>, <code class="docutils literal notranslate"><span class="pre">v4.1.2</span></code>, etc.).</p></li>
</ul>
</li>
</ol>
<p>Once a bug is fixed or a new feature is implemented on <code class="docutils literal notranslate"><span class="pre">master</span></code>, it is
cherry-picked over to the relevant release branch(es).</p>
<div class="admonition attention">
<p class="admonition-title">Attention</p>
<p>It may seem odd to some, but the PMIx community
development model does <em>not</em> PR bug fixes or new
features directly to release branches. Instead,
initial bug-fix / feature PRs are generally first made
to <code class="docutils literal notranslate"><span class="pre">master</span></code>.</p>
<p>This helps us ensure that future releases (with
<code class="docutils literal notranslate"><span class="pre">master</span></code> as a Git ancestor) will contain the bug fix /
feature.</p>
</div>
<p>For example:</p>
<div class="highlight-sh notranslate"><div class="highlight"><pre><span></span>shell$<span class="w"> </span>git<span class="w"> </span>checkout<span class="w"> </span>master
shell$<span class="w"> </span>git<span class="w"> </span>pull<span class="w"> </span>--rebase
shell$<span class="w"> </span>git<span class="w"> </span>checkout<span class="w"> </span>pr/bug-fix
<span class="c1"># ... make changes / fix a bug / etc. ...</span>
shell$<span class="w"> </span>git<span class="w"> </span>add<span class="w"> </span>...
shell$<span class="w"> </span>git<span class="w"> </span>commit<span class="w"> </span>-s<span class="w"> </span>...
shell$<span class="w"> </span>git<span class="w"> </span>push<span class="w"> </span>myfork
</pre></div>
</div>
<p>At this point, you go create a PR from your forks <code class="docutils literal notranslate"><span class="pre">pr/bug-fix</span></code>
branch to the PMIx community GitHub repo <code class="docutils literal notranslate"><span class="pre">master</span></code> branch. Work
with the community to get the PR completed and merged. Then you can
open a new PR to cherry pick the Git commits from that bug fix to each
of the relevant release branches.</p>
<p>Depending on how far the release branch has diverged from <code class="docutils literal notranslate"><span class="pre">master</span></code>,
there may be some porting effort involved in the cherry-pick.</p>
<p>For example, if your bug fix on <code class="docutils literal notranslate"><span class="pre">master</span></code> is comprised of a single Git
commit hash <code class="docutils literal notranslate"><span class="pre">123abc</span></code>:</p>
<div class="highlight-sh notranslate"><div class="highlight"><pre><span></span><span class="c1"># Fetch all upstream git activity, including the merge of the &quot;master&quot; PR.</span>
shell$<span class="w"> </span>get<span class="w"> </span>fetch<span class="w"> </span>--all
<span class="c1"># Check out the target release branch, and advance to the most recent commit.</span>
shell$<span class="w"> </span>git<span class="w"> </span>checkout<span class="w"> </span>v5.0.x
shell$<span class="w"> </span>git<span class="w"> </span>pull<span class="w"> </span>--rebase
<span class="c1"># Make a branch for your bug fix</span>
shell$<span class="w"> </span>git<span class="w"> </span>checkout<span class="w"> </span>-b<span class="w"> </span>pr/v5.0.x/bug-fix
<span class="c1"># Cherry pick the commit from the &quot;master&quot; branch</span>
shell$<span class="w"> </span>git<span class="w"> </span>cherry-pick<span class="w"> </span>-x<span class="w"> </span>123abc
<span class="c1"># Push to your fork</span>
shell$<span class="w"> </span>git<span class="w"> </span>push<span class="w"> </span>myfork
</pre></div>
</div>
<p>The PMIx development community <em>requires</em> adding the following
line to the commit message of cherry-picked commits on release
branches:</p>
<div class="highlight-text notranslate"><div class="highlight"><pre><span></span>(cherry picked from commit [git_hash_of_original_commit])
</pre></div>
</div>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>Note the use of the <code class="docutils literal notranslate"><span class="pre">-x</span></code> option to <code class="docutils literal notranslate"><span class="pre">git</span> <span class="pre">cherry-pick</span></code>.
This option automatically adds the <code class="docutils literal notranslate"><span class="pre">(cherry</span> <span class="pre">picked</span> <span class="pre">from</span>
<span class="pre">...)</span></code> line to your commit message.</p>
</div>
<div class="tip admonition">
<p class="admonition-title">Rationale</p>
<p>Git does not actually store any meta data about Git cherry-picks in
the commit. Having a standardized text line containing the source
Git commit hash in the commit messages helps the PMIx
development community track where commits came from on release
branches, and therefore allows us to check whether all relevant
commits have been ported to a given release branch.</p>
</div>
<p>Once your commits are ready and pushed up to your fork, make a PR to
the target release branch.</p>
<div class="admonition warning">
<p class="admonition-title">Warning</p>
<p>A GitHub PR CI job checks all commits on release branches
for the <code class="docutils literal notranslate"><span class="pre">(cherry</span> <span class="pre">picked</span> <span class="pre">from...)</span></code> line. It will also
ensure that the Git hash cited in that line actually
exists on the <code class="docutils literal notranslate"><span class="pre">master</span></code> branch.</p>
<p>This check ensures that commits are not made to release
branches before their corresponding <code class="docutils literal notranslate"><span class="pre">master</span></code> PR was
merged.</p>
</div>
<p>All this being said, sometimes there is a need for a non-cherry-picked
commit on a release branch. E.g., sometimes a release branch has
diverged so much that the bug no longer exists on <code class="docutils literal notranslate"><span class="pre">master</span></code>. It would
therefore not make sense — or even be impossible — to
commit the bug fix in question to <code class="docutils literal notranslate"><span class="pre">master</span></code>.</p>
<p>In such cases, make a regular PR to the target branch (with commits
that do <em>not</em> include <code class="docutils literal notranslate"><span class="pre">(cherry</span> <span class="pre">picked</span> <span class="pre">from</span> <span class="pre">...)</span></code> lines). In the PR
description, add a line with the following token:</p>
<div class="highlight-text notranslate"><div class="highlight"><pre><span></span>bot:notacherrypick
</pre></div>
</div>
<p>This tells the GitHub CI job that this PR contains commits that are
not cherry-picked from <code class="docutils literal notranslate"><span class="pre">master</span></code>.</p>
<div class="admonition warning">
<p class="admonition-title">Warning</p>
<p><code class="docutils literal notranslate"><span class="pre">bot:notacherrypick</span></code> should only be used when
absolutely necessary. It is not a license to avoid
the process of PRing to <code class="docutils literal notranslate"><span class="pre">master</span></code> first.</p>
</div>
</div>
<div class="section" id="ci-testing">
<h2><span class="section-number">12.2.4. </span>CI (testing)<a class="headerlink" href="#ci-testing" title="Permalink to this heading"></a></h2>
<p>The PMIx community generally runs a bunch of tests on each PR
(Continuous Integration / CI). These tests are a mixture of
GitHub Actions and other CI systems (e.g., Jenkins). Examples
include (but are not limited to):</p>
<blockquote>
<div><ul class="simple">
<li><p>Check each Git commit for bozo email addresses</p></li>
<li><p>Check that each Git commit contains a <code class="docutils literal notranslate"><span class="pre">Signed-off-by</span></code> line</p></li>
<li><p>Check that commits on release branches contain a cherry-pick
notice</p></li>
<li><p>Build and publish the docs</p></li>
<li><p>Build PMIx in a variety of environments and run sanity tests
with that installation</p></li>
</ul>
</div></blockquote>
</div>
</div>
</div>
</div>
<footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
<a href="prerequisites.html" class="btn btn-neutral float-left" title="12.1. Prerequisites" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
<a href="compiler-pickyness.html" class="btn btn-neutral float-right" title="12.3. Compiler Pickyness by Default" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
</div>
<hr/>
<div role="contentinfo">
<p>&#169; Copyright 2014-2025, The OpenPMIx Community.</p>
</div>
Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
<a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
provided by <a href="https://readthedocs.org">Read the Docs</a>.
</footer>
</div>
</div>
</section>
</div>
<script>
jQuery(function () {
SphinxRtdTheme.Navigation.enable(true);
});
</script>
</body>
</html>

View File

@@ -0,0 +1,360 @@
<!DOCTYPE html>
<html class="writer-html5" lang="en">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>12.9. Manually installing the GNU Autootools &mdash; OpenPMIx 5.0.5 documentation</title>
<link rel="stylesheet" type="text/css" href="../_static/pygments.css" />
<link rel="stylesheet" type="text/css" href="../_static/css/theme.css" />
<!--[if lt IE 9]>
<script src="../_static/js/html5shiv.min.js"></script>
<![endif]-->
<script data-url_root="../" id="documentation_options" src="../_static/documentation_options.js"></script>
<script src="../_static/jquery.js"></script>
<script src="../_static/underscore.js"></script>
<script src="../_static/_sphinx_javascript_frameworks_compat.js"></script>
<script src="../_static/doctools.js"></script>
<script src="../_static/sphinx_highlight.js"></script>
<script src="../_static/js/theme.js"></script>
<link rel="index" title="Index" href="../genindex.html" />
<link rel="search" title="Search" href="../search.html" />
<link rel="next" title="12.10. Installing and running Sphinx (building the OpenPMIx docs)" href="sphinx.html" />
<link rel="prev" title="12.8. Internal frameworks" href="frameworks.html" />
</head>
<body class="wy-body-for-nav">
<div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="wy-side-scroll">
<div class="wy-side-nav-search" >
<a href="../index.html" class="icon icon-home">
OpenPMIx
</a>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="../search.html" method="get">
<input type="text" name="q" placeholder="Search docs" aria-label="Search docs" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
<ul class="current">
<li class="toctree-l1"><a class="reference internal" href="../quickstart.html">1. Quick start</a></li>
<li class="toctree-l1"><a class="reference internal" href="../getting-help.html">2. Getting help</a></li>
<li class="toctree-l1"><a class="reference internal" href="../release-notes/index.html">3. Release notes</a></li>
<li class="toctree-l1"><a class="reference internal" href="../exceptions.html">4. Exceptions to the PMIx Standard</a></li>
<li class="toctree-l1"><a class="reference internal" href="../installing-pmix/index.html">5. Building and installing PMIx</a></li>
<li class="toctree-l1"><a class="reference internal" href="../how-things-work/index.html">6. How Things Work</a></li>
<li class="toctree-l1"><a class="reference internal" href="../release-notes.html">7. Release Notes</a></li>
<li class="toctree-l1"><a class="reference internal" href="../history.html">8. History</a></li>
<li class="toctree-l1"><a class="reference internal" href="../versions.html">9. Version Numbers and Binary Compatibility</a></li>
<li class="toctree-l1"><a class="reference internal" href="../mca.html">10. The Modular Component Architecture (MCA)</a></li>
<li class="toctree-l1"><a class="reference internal" href="../building-apps/index.html">11. Building PMIx applications</a></li>
<li class="toctree-l1 current"><a class="reference internal" href="index.html">12. Developers guide</a><ul class="current">
<li class="toctree-l2"><a class="reference internal" href="prerequisites.html">12.1. Prerequisites</a></li>
<li class="toctree-l2"><a class="reference internal" href="git-github.html">12.2. GitHub, Git, and related topics</a></li>
<li class="toctree-l2"><a class="reference internal" href="compiler-pickyness.html">12.3. Compiler Pickyness by Default</a></li>
<li class="toctree-l2"><a class="reference internal" href="autogen.html">12.4. Running <code class="docutils literal notranslate"><span class="pre">autogen.pl</span></code></a></li>
<li class="toctree-l2"><a class="reference internal" href="building-pmix.html">12.5. Building PMIx</a></li>
<li class="toctree-l2"><a class="reference internal" href="terminology.html">12.6. OpenPMIx terminology</a></li>
<li class="toctree-l2"><a class="reference internal" href="source-code.html">12.7. Source code</a></li>
<li class="toctree-l2"><a class="reference internal" href="frameworks.html">12.8. Internal frameworks</a></li>
<li class="toctree-l2 current"><a class="current reference internal" href="#">12.9. Manually installing the GNU Autootools</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#use-a-package-manager">12.9.1. Use a package manager</a></li>
<li class="toctree-l3"><a class="reference internal" href="#autotools-versions">12.9.2. Autotools versions</a></li>
<li class="toctree-l3"><a class="reference internal" href="#checking-your-versions">12.9.3. Checking your versions</a></li>
<li class="toctree-l3"><a class="reference internal" href="#installing-the-gnu-autotools-from-source">12.9.4. Installing the GNU Autotools from source</a></li>
<li class="toctree-l3"><a class="reference internal" href="#build-and-install-ordering">12.9.5. Build and install ordering</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="sphinx.html">12.10. Installing and running Sphinx (building the OpenPMIx docs)</a></li>
<li class="toctree-l2"><a class="reference internal" href="rst-for-markdown-expats.html">12.11. ReStructured Text for those who know Markdown</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../contributing.html">13. Contributing to OpenPMIx</a></li>
<li class="toctree-l1"><a class="reference internal" href="../license.html">14. License</a></li>
<li class="toctree-l1"><a class="reference internal" href="../security.html">15. OpenPMIx Security Policy</a></li>
<li class="toctree-l1"><a class="reference internal" href="../news/index.html">16. News</a></li>
<li class="toctree-l1"><a class="reference internal" href="../man/index.html">17. OpenPMIx manual pages</a></li>
</ul>
</div>
</div>
</nav>
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" >
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="../index.html">OpenPMIx</a>
</nav>
<div class="wy-nav-content">
<div class="rst-content">
<div role="navigation" aria-label="Page navigation">
<ul class="wy-breadcrumbs">
<li><a href="../index.html" class="icon icon-home" aria-label="Home"></a></li>
<li class="breadcrumb-item"><a href="index.html"><span class="section-number">12. </span>Developers guide</a></li>
<li class="breadcrumb-item active"><span class="section-number">12.9. </span>Manually installing the GNU Autootools</li>
<li class="wy-breadcrumbs-aside">
<a href="../_sources/developers/gnu-autotools.rst.txt" rel="nofollow"> View page source</a>
</li>
</ul>
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
<style>
.wy-table-responsive table td,.wy-table-responsive table th{white-space:normal}
</style><div class="section" id="manually-installing-the-gnu-autootools">
<span id="developers-installing-autotools-label"></span><h1><span class="section-number">12.9. </span>Manually installing the GNU Autootools<a class="headerlink" href="#manually-installing-the-gnu-autootools" title="Permalink to this heading"></a></h1>
<p>There is enough detail in building the GNU Autotools that it warrants
its own section.</p>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>As noted above, you only need to read/care about this
section if you are building PMIx from a Git clone. End
users installing an PMIx distribution tarball do <em>not</em>
need to have the GNU Autotools installed.</p>
</div>
<div class="section" id="use-a-package-manager">
<h2><span class="section-number">12.9.1. </span>Use a package manager<a class="headerlink" href="#use-a-package-manager" title="Permalink to this heading"></a></h2>
<p>It is recommended that you use your Linux distributions package
manager, or Homebrew or MacPorts on macOS to install recent versions
of GNU Autoconf, Automake, and Libtool.</p>
<p>If you cannot, keep reading in this section to see how to build and
install these applications manually (i.e., download the source from
the internet and build/install it yourself).</p>
</div>
<div class="section" id="autotools-versions">
<h2><span class="section-number">12.9.2. </span>Autotools versions<a class="headerlink" href="#autotools-versions" title="Permalink to this heading"></a></h2>
<p>The following tools are required for developers to compile PMIx
from its repository sources (users who download PMIx tarballs do
not need these tools - they are only required for developers working
on the internals of PMIx itself):</p>
<table class="docutils align-default">
<colgroup>
<col style="width: 33%" />
<col style="width: 33%" />
<col style="width: 33%" />
</colgroup>
<thead>
<tr class="row-odd"><th class="head"><p>Software package</p></th>
<th class="head"><p>Version</p></th>
<th class="head"><p>URL</p></th>
</tr>
</thead>
<tbody>
<tr class="row-even"><td><p>GNU m4</p></td>
<td><p>1.4.17</p></td>
<td><p><a class="reference external" href="https://ftp.gnu.org/gnu/m4/">https://ftp.gnu.org/gnu/m4/</a></p></td>
</tr>
<tr class="row-odd"><td><p>GNU Autoconf</p></td>
<td><p>2.69</p></td>
<td><p><a class="reference external" href="https://ftp.gnu.org/gnu/autoconf/">https://ftp.gnu.org/gnu/autoconf/</a></p></td>
</tr>
<tr class="row-even"><td><p>GNU Automake</p></td>
<td><p>1.15</p></td>
<td><p><a class="reference external" href="https://ftp.gnu.org/gnu/automake/">https://ftp.gnu.org/gnu/automake/</a></p></td>
</tr>
<tr class="row-odd"><td><p>GNU Libtool</p></td>
<td><p>2.4.6</p></td>
<td><p><a class="reference external" href="https://ftp.gnu.org/gnu/libtool/">https://ftp.gnu.org/gnu/libtool/</a></p></td>
</tr>
<tr class="row-even"><td><p>Flex</p></td>
<td><p>2.5.35</p></td>
<td><p><a class="reference external" href="https://sourceforge.net/projects/flex/">https://sourceforge.net/projects/flex/</a></p></td>
</tr>
<tr class="row-odd"><td><p>Sphinx</p></td>
<td><p>4.2.0</p></td>
<td><p><a class="reference external" href="https://www.sphinx-doc.org/en/master/index.html">https://www.sphinx-doc.org/en/master/index.html</a></p></td>
</tr>
</tbody>
</table>
<p>The above table lists the versions that are used to make official
release PMIx tarballs. Other versions of the
tools <em>may</em> work for some (but almost certainly not all) platforms;
the ones listed below are the versions that we know work across an
extremely wide variety of platforms and environments.</p>
<p>To strengthen this point: the core PMIx developers typically
use very, very recent versions of the GNU tools. There are known bugs
in older versions of the GNU tools that PMIx no longer compensates
for (it seemed senseless to indefinitely support patches for ancient
versions of Autoconf, for example).</p>
<div class="admonition warning">
<p class="admonition-title">Warning</p>
<p>You <strong>will</strong> have problems if you do not use recent
versions of the GNU Autotools.</p>
</div>
<p>That being said, <code class="docutils literal notranslate"><span class="pre">autogen.pl</span></code> and <code class="docutils literal notranslate"><span class="pre">configure.ac</span></code> scripts tend to
be a bit lenient and enforce slightly older minimum versions than the
ones listed above. This is because such older versions still make
usable PMIx builds on many platforms - especially Linux on x86_64
with GNU compilers - and are convenient for developers whose Linux
distribution may not have as recent as the versions listed above (but are
recent enough to produce a working version for their platform).</p>
<p>To be clear: the versions listed above are required to support a wide
variety of platforms and environments, and are used to make the official
release tarballs. When building PMIx, YMMV when using
versions older than those listed above — especially if you are
not building on Linux x86_64 with the GNU compilers.</p>
<p>Using older versions is unsupported. If you run into problems, upgrade
to at least the versions listed above.</p>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>Sphinx was only recently added to the list of required tools
to generate the documentation. It is not required for PMIx
versions prior to v4.2.3.</p>
</div>
</div>
<div class="section" id="checking-your-versions">
<h2><span class="section-number">12.9.3. </span>Checking your versions<a class="headerlink" href="#checking-your-versions" title="Permalink to this heading"></a></h2>
<p>You can check what versions of the Autotools you have installed with
the following:</p>
<div class="highlight-sh notranslate"><div class="highlight"><pre><span></span>shell$<span class="w"> </span>m4<span class="w"> </span>--version
shell$<span class="w"> </span>autoconf<span class="w"> </span>--version
shell$<span class="w"> </span>automake<span class="w"> </span>--version
shell$<span class="w"> </span>libtoolize<span class="w"> </span>--version
</pre></div>
</div>
</div>
<div class="section" id="installing-the-gnu-autotools-from-source">
<h2><span class="section-number">12.9.4. </span>Installing the GNU Autotools from source<a class="headerlink" href="#installing-the-gnu-autotools-from-source" title="Permalink to this heading"></a></h2>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>Most operating system packaging systems (to include Homebrew
and MacPorts on MacOS) install recent-enough versions of the
GNU Autotools. You should generally only install the GNU
Autotools manually if you cant use your operating system
packaging system to install them for you.</p>
</div>
<p>The GNU Autotools sources can be can be downloaded from:</p>
<ul class="simple">
<li><p><a class="reference external" href="https://ftp.gnu.org/gnu/autoconf/">https://ftp.gnu.org/gnu/autoconf/</a></p></li>
<li><p><a class="reference external" href="https://ftp.gnu.org/gnu/automake/">https://ftp.gnu.org/gnu/automake/</a></p></li>
<li><p><a class="reference external" href="https://ftp.gnu.org/gnu/libtool/">https://ftp.gnu.org/gnu/libtool/</a></p></li>
<li><p>And if you need it: <a class="reference external" href="https://ftp.gnu.org/gnu/m4/">https://ftp.gnu.org/gnu/m4/</a></p></li>
</ul>
<p>It is certainly easiest to download/build/install all four of these
tools together. But note that PMIx has no specific m4
requirements; it is only listed here because Autoconf requires minimum
versions of GNU m4. Hence, you may or may not <em>need</em> to actually
install a new version of GNU m4. That being said, if you are confused
or dont know, just install the latest GNU m4 with the rest of the GNU
Autotools and everything will work out fine.</p>
</div>
<div class="section" id="build-and-install-ordering">
<h2><span class="section-number">12.9.5. </span>Build and install ordering<a class="headerlink" href="#build-and-install-ordering" title="Permalink to this heading"></a></h2>
<p>You must build and install the GNU Autotools in the following order:</p>
<ol class="arabic simple">
<li><p>m4</p></li>
<li><p>Autoconf</p></li>
<li><p>Automake</p></li>
<li><p>Libtool</p></li>
</ol>
<div class="admonition important">
<p class="admonition-title">Important</p>
<p>You <em>must</em> install the last three tools (Autoconf,
Automake, Libtool) into the same prefix directory.
These three tools are somewhat inter-related, and if
theyre going to be used together, they <em>must</em> share a
common installation prefix.</p>
</div>
<p>You can install m4 anywhere as long as it can be found in the path;
it may be convenient to install it in the same prefix as the other
three. Or you can use any recent-enough m4 that is in your path.</p>
<div class="admonition warning">
<p class="admonition-title">Warning</p>
<p>It is <em>strongly</em> encouraged that you do <strong>not</strong> install
your new versions over the OS-installed versions. This could cause
other things on your system to break. Instead, install into
<code class="docutils literal notranslate"><span class="pre">$HOME/local</span></code>, or <code class="docutils literal notranslate"><span class="pre">/usr/local</span></code>, or wherever else you tend to
install “local” kinds of software.</p>
<p>In doing so, be sure to prefix your <code class="docutils literal notranslate"><span class="pre">$PATH</span></code> with the directory
where they are installed. For example, if you install into
<code class="docutils literal notranslate"><span class="pre">$HOME/local</span></code>, you may want to edit your shell startup file
(<code class="docutils literal notranslate"><span class="pre">.bashrc</span></code>, <code class="docutils literal notranslate"><span class="pre">.cshrc</span></code>, <code class="docutils literal notranslate"><span class="pre">.tcshrc</span></code>, etc.) to have something
like</p>
<div class="highlight-sh notranslate"><div class="highlight"><pre><span></span><span class="c1"># For bash/sh:</span>
<span class="nb">export</span><span class="w"> </span><span class="nv">PATH</span><span class="o">=</span><span class="nv">$HOME</span>/local/bin:<span class="nv">$PATH</span>
<span class="c1"># For csh/tcsh:</span>
<span class="nb">set</span><span class="w"> </span><span class="nv">path</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="o">(</span><span class="nv">$HOME</span>/local/bin<span class="w"> </span><span class="nv">$path</span><span class="o">)</span>
</pre></div>
</div>
<p>Ensure to set your <code class="docutils literal notranslate"><span class="pre">$PATH</span></code> <em>before</em> you configure/build/install
the four packages.</p>
</div>
<p>All four packages require two simple commands to build and
install:</p>
<div class="highlight-sh notranslate"><div class="highlight"><pre><span></span>shell$<span class="w"> </span><span class="nb">cd</span><span class="w"> </span>M4_DIRECTORY
shell$<span class="w"> </span>./configure<span class="w"> </span>--prefix<span class="o">=</span>PREFIX
shell$<span class="w"> </span>make<span class="w"> </span>all<span class="w"> </span>install
</pre></div>
</div>
<div class="admonition important">
<p class="admonition-title">Important</p>
<p>If you are using a shell that does not automatically
re-index the <code class="docutils literal notranslate"><span class="pre">$PATH</span></code> (e.g., the <code class="docutils literal notranslate"><span class="pre">csh</span></code> or <code class="docutils literal notranslate"><span class="pre">tcsh</span></code>
shells), be sure to run the <code class="docutils literal notranslate"><span class="pre">rehash</span></code> command before
you install the next package so that the executables
that were just installed can be found by the next
package.</p>
</div>
<div class="highlight-sh notranslate"><div class="highlight"><pre><span></span><span class="c1"># Make $PATH be re-indexed if necessary, e.g., via &quot;rehash&quot;</span>
shell$<span class="w"> </span><span class="nb">cd</span><span class="w"> </span>AUTOCONF_DIRECTORY
shell$<span class="w"> </span>./configure<span class="w"> </span>--prefix<span class="o">=</span>PREFIX
shell$<span class="w"> </span>make<span class="w"> </span>all<span class="w"> </span>install
</pre></div>
</div>
<div class="highlight-sh notranslate"><div class="highlight"><pre><span></span><span class="c1"># Make $PATH be re-indexed if necessary, e.g., via &quot;rehash&quot;</span>
shell$<span class="w"> </span><span class="nb">cd</span><span class="w"> </span>AUTOMAKE_DIRECTORY
shell$<span class="w"> </span>./configure<span class="w"> </span>--prefix<span class="o">=</span>PREFIX
shell$<span class="w"> </span>make<span class="w"> </span>all<span class="w"> </span>install
</pre></div>
</div>
<div class="highlight-sh notranslate"><div class="highlight"><pre><span></span><span class="c1"># Make $PATH be re-indexed if necessary, e.g., via &quot;rehash&quot;</span>
shell$<span class="w"> </span><span class="nb">cd</span><span class="w"> </span>LIBTOOL_DIRECTORY
shell$<span class="w"> </span>./configure<span class="w"> </span>--prefix<span class="o">=</span>PREFIX
shell$<span class="w"> </span>make<span class="w"> </span>all<span class="w"> </span>install
</pre></div>
</div>
</div>
</div>
</div>
</div>
<footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
<a href="frameworks.html" class="btn btn-neutral float-left" title="12.8. Internal frameworks" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
<a href="sphinx.html" class="btn btn-neutral float-right" title="12.10. Installing and running Sphinx (building the OpenPMIx docs)" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
</div>
<hr/>
<div role="contentinfo">
<p>&#169; Copyright 2014-2025, The OpenPMIx Community.</p>
</div>
Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
<a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
provided by <a href="https://readthedocs.org">Read the Docs</a>.
</footer>
</div>
</div>
</section>
</div>
<script>
jQuery(function () {
SphinxRtdTheme.Navigation.enable(true);
});
</script>
</body>
</html>

View File

@@ -0,0 +1,216 @@
<!DOCTYPE html>
<html class="writer-html5" lang="en">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>12. Developers guide &mdash; OpenPMIx 5.0.5 documentation</title>
<link rel="stylesheet" type="text/css" href="../_static/pygments.css" />
<link rel="stylesheet" type="text/css" href="../_static/css/theme.css" />
<!--[if lt IE 9]>
<script src="../_static/js/html5shiv.min.js"></script>
<![endif]-->
<script data-url_root="../" id="documentation_options" src="../_static/documentation_options.js"></script>
<script src="../_static/jquery.js"></script>
<script src="../_static/underscore.js"></script>
<script src="../_static/_sphinx_javascript_frameworks_compat.js"></script>
<script src="../_static/doctools.js"></script>
<script src="../_static/sphinx_highlight.js"></script>
<script src="../_static/js/theme.js"></script>
<link rel="index" title="Index" href="../genindex.html" />
<link rel="search" title="Search" href="../search.html" />
<link rel="next" title="12.1. Prerequisites" href="prerequisites.html" />
<link rel="prev" title="11.5. Building fully-static PMIx applications" href="../building-apps/building-static-apps.html" />
</head>
<body class="wy-body-for-nav">
<div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="wy-side-scroll">
<div class="wy-side-nav-search" >
<a href="../index.html" class="icon icon-home">
OpenPMIx
</a>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="../search.html" method="get">
<input type="text" name="q" placeholder="Search docs" aria-label="Search docs" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
<ul class="current">
<li class="toctree-l1"><a class="reference internal" href="../quickstart.html">1. Quick start</a></li>
<li class="toctree-l1"><a class="reference internal" href="../getting-help.html">2. Getting help</a></li>
<li class="toctree-l1"><a class="reference internal" href="../release-notes/index.html">3. Release notes</a></li>
<li class="toctree-l1"><a class="reference internal" href="../exceptions.html">4. Exceptions to the PMIx Standard</a></li>
<li class="toctree-l1"><a class="reference internal" href="../installing-pmix/index.html">5. Building and installing PMIx</a></li>
<li class="toctree-l1"><a class="reference internal" href="../how-things-work/index.html">6. How Things Work</a></li>
<li class="toctree-l1"><a class="reference internal" href="../release-notes.html">7. Release Notes</a></li>
<li class="toctree-l1"><a class="reference internal" href="../history.html">8. History</a></li>
<li class="toctree-l1"><a class="reference internal" href="../versions.html">9. Version Numbers and Binary Compatibility</a></li>
<li class="toctree-l1"><a class="reference internal" href="../mca.html">10. The Modular Component Architecture (MCA)</a></li>
<li class="toctree-l1"><a class="reference internal" href="../building-apps/index.html">11. Building PMIx applications</a></li>
<li class="toctree-l1 current"><a class="current reference internal" href="#">12. Developers guide</a><ul>
<li class="toctree-l2"><a class="reference internal" href="prerequisites.html">12.1. Prerequisites</a></li>
<li class="toctree-l2"><a class="reference internal" href="git-github.html">12.2. GitHub, Git, and related topics</a></li>
<li class="toctree-l2"><a class="reference internal" href="compiler-pickyness.html">12.3. Compiler Pickyness by Default</a></li>
<li class="toctree-l2"><a class="reference internal" href="autogen.html">12.4. Running <code class="docutils literal notranslate"><span class="pre">autogen.pl</span></code></a></li>
<li class="toctree-l2"><a class="reference internal" href="building-pmix.html">12.5. Building PMIx</a></li>
<li class="toctree-l2"><a class="reference internal" href="terminology.html">12.6. OpenPMIx terminology</a></li>
<li class="toctree-l2"><a class="reference internal" href="source-code.html">12.7. Source code</a></li>
<li class="toctree-l2"><a class="reference internal" href="frameworks.html">12.8. Internal frameworks</a></li>
<li class="toctree-l2"><a class="reference internal" href="gnu-autotools.html">12.9. Manually installing the GNU Autootools</a></li>
<li class="toctree-l2"><a class="reference internal" href="sphinx.html">12.10. Installing and running Sphinx (building the OpenPMIx docs)</a></li>
<li class="toctree-l2"><a class="reference internal" href="rst-for-markdown-expats.html">12.11. ReStructured Text for those who know Markdown</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../contributing.html">13. Contributing to OpenPMIx</a></li>
<li class="toctree-l1"><a class="reference internal" href="../license.html">14. License</a></li>
<li class="toctree-l1"><a class="reference internal" href="../security.html">15. OpenPMIx Security Policy</a></li>
<li class="toctree-l1"><a class="reference internal" href="../news/index.html">16. News</a></li>
<li class="toctree-l1"><a class="reference internal" href="../man/index.html">17. OpenPMIx manual pages</a></li>
</ul>
</div>
</div>
</nav>
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" >
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="../index.html">OpenPMIx</a>
</nav>
<div class="wy-nav-content">
<div class="rst-content">
<div role="navigation" aria-label="Page navigation">
<ul class="wy-breadcrumbs">
<li><a href="../index.html" class="icon icon-home" aria-label="Home"></a></li>
<li class="breadcrumb-item active"><span class="section-number">12. </span>Developers guide</li>
<li class="wy-breadcrumbs-aside">
<a href="../_sources/developers/index.rst.txt" rel="nofollow"> View page source</a>
</li>
</ul>
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
<style>
.wy-table-responsive table td,.wy-table-responsive table th{white-space:normal}
</style><div class="section" id="developer-s-guide">
<h1><span class="section-number">12. </span>Developers guide<a class="headerlink" href="#developer-s-guide" title="Permalink to this heading"></a></h1>
<p>This section is here for those who are building/exploring the
internals of PMIx in its source code form, most likely through a
developers tree (i.e., a Git clone).</p>
<p>If you are simply <em>using</em> PMIx, you probably dont need to read this
section.</p>
<div class="toctree-wrapper compound">
<ul>
<li class="toctree-l1"><a class="reference internal" href="prerequisites.html">12.1. Prerequisites</a><ul>
<li class="toctree-l2"><a class="reference internal" href="prerequisites.html#compilers">12.1.1. Compilers</a></li>
<li class="toctree-l2"><a class="reference internal" href="prerequisites.html#gnu-autotools">12.1.2. GNU Autotools</a></li>
<li class="toctree-l2"><a class="reference internal" href="prerequisites.html#perl">12.1.3. Perl</a></li>
<li class="toctree-l2"><a class="reference internal" href="prerequisites.html#flex">12.1.4. Flex</a></li>
<li class="toctree-l2"><a class="reference internal" href="prerequisites.html#sphinx-and-therefore-python">12.1.5. Sphinx (and therefore Python)</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="git-github.html">12.2. GitHub, Git, and related topics</a><ul>
<li class="toctree-l2"><a class="reference internal" href="git-github.html#github">12.2.1. GitHub</a></li>
<li class="toctree-l2"><a class="reference internal" href="git-github.html#git-commits-open-source-contributor-s-declaration">12.2.2. Git commits: open source / contributors declaration</a></li>
<li class="toctree-l2"><a class="reference internal" href="git-github.html#git-branch-scheme">12.2.3. Git branch scheme</a></li>
<li class="toctree-l2"><a class="reference internal" href="git-github.html#ci-testing">12.2.4. CI (testing)</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="compiler-pickyness.html">12.3. Compiler Pickyness by Default</a></li>
<li class="toctree-l1"><a class="reference internal" href="autogen.html">12.4. Running <code class="docutils literal notranslate"><span class="pre">autogen.pl</span></code></a></li>
<li class="toctree-l1"><a class="reference internal" href="building-pmix.html">12.5. Building PMIx</a></li>
<li class="toctree-l1"><a class="reference internal" href="terminology.html">12.6. OpenPMIx terminology</a><ul>
<li class="toctree-l2"><a class="reference internal" href="terminology.html#modular-component-architecture-mca">12.6.1. Modular Component Architecture (MCA)</a></li>
<li class="toctree-l2"><a class="reference internal" href="terminology.html#required-3rd-party-libraries">12.6.2. Required 3rd party libraries</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="source-code.html">12.7. Source code</a><ul>
<li class="toctree-l2"><a class="reference internal" href="source-code.html#code-style">12.7.1. Code style</a></li>
<li class="toctree-l2"><a class="reference internal" href="source-code.html#tree-layout">12.7.2. Tree layout</a></li>
<li class="toctree-l2"><a class="reference internal" href="source-code.html#symbol-visibility">12.7.3. Symbol Visibility</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="frameworks.html">12.8. Internal frameworks</a><ul>
<li class="toctree-l2"><a class="reference internal" href="frameworks.html#framework-notes">12.8.1. Framework notes</a></li>
<li class="toctree-l2"><a class="reference internal" href="frameworks.html#mca-parameter-notes">12.8.2. MCA parameter notes</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="gnu-autotools.html">12.9. Manually installing the GNU Autootools</a><ul>
<li class="toctree-l2"><a class="reference internal" href="gnu-autotools.html#use-a-package-manager">12.9.1. Use a package manager</a></li>
<li class="toctree-l2"><a class="reference internal" href="gnu-autotools.html#autotools-versions">12.9.2. Autotools versions</a></li>
<li class="toctree-l2"><a class="reference internal" href="gnu-autotools.html#checking-your-versions">12.9.3. Checking your versions</a></li>
<li class="toctree-l2"><a class="reference internal" href="gnu-autotools.html#installing-the-gnu-autotools-from-source">12.9.4. Installing the GNU Autotools from source</a></li>
<li class="toctree-l2"><a class="reference internal" href="gnu-autotools.html#build-and-install-ordering">12.9.5. Build and install ordering</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="sphinx.html">12.10. Installing and running Sphinx (building the OpenPMIx docs)</a><ul>
<li class="toctree-l2"><a class="reference internal" href="sphinx.html#installing-python">12.10.1. Installing Python</a></li>
<li class="toctree-l2"><a class="reference internal" href="sphinx.html#installing-sphinx">12.10.2. Installing Sphinx</a></li>
<li class="toctree-l2"><a class="reference internal" href="sphinx.html#running-sphinx">12.10.3. Running Sphinx</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="rst-for-markdown-expats.html">12.11. ReStructured Text for those who know Markdown</a><ul>
<li class="toctree-l2"><a class="reference internal" href="rst-for-markdown-expats.html#whitespace-and-indenting">12.11.1. Whitespace and indenting</a></li>
<li class="toctree-l2"><a class="reference internal" href="rst-for-markdown-expats.html#fixed-width-font">12.11.2. Fixed width font</a></li>
<li class="toctree-l2"><a class="reference internal" href="rst-for-markdown-expats.html#italics">12.11.3. Italics</a></li>
<li class="toctree-l2"><a class="reference internal" href="rst-for-markdown-expats.html#boldface">12.11.4. Boldface</a></li>
<li class="toctree-l2"><a class="reference internal" href="rst-for-markdown-expats.html#chapter-and-section-delimiters">12.11.5. Chapter and section delimiters</a></li>
<li class="toctree-l2"><a class="reference internal" href="rst-for-markdown-expats.html#multi-line-code-fixed-width-font">12.11.6. Multi-line code/fixed-width font</a></li>
<li class="toctree-l2"><a class="reference internal" href="rst-for-markdown-expats.html#un-numbered-bullets">12.11.7. Un-numbered bullets</a></li>
<li class="toctree-l2"><a class="reference internal" href="rst-for-markdown-expats.html#numbered-bullets">12.11.8. Numbered bullets:</a></li>
<li class="toctree-l2"><a class="reference internal" href="rst-for-markdown-expats.html#comments">12.11.9. Comments</a></li>
<li class="toctree-l2"><a class="reference internal" href="rst-for-markdown-expats.html#including-files">12.11.10. Including files</a></li>
<li class="toctree-l2"><a class="reference internal" href="rst-for-markdown-expats.html#hyperlinks-to-urls">12.11.11. Hyperlinks to URLs</a></li>
<li class="toctree-l2"><a class="reference internal" href="rst-for-markdown-expats.html#hyperlinks-to-anchors">12.11.12. Hyperlinks to anchors</a></li>
<li class="toctree-l2"><a class="reference internal" href="rst-for-markdown-expats.html#hyperlinks-to-other-rst-pages">12.11.13. Hyperlinks to other (RST) pages</a></li>
<li class="toctree-l2"><a class="reference internal" href="rst-for-markdown-expats.html#macros">12.11.14. Macros</a></li>
<li class="toctree-l2"><a class="reference internal" href="rst-for-markdown-expats.html#brightly-colored-boxes">12.11.15. Brightly-colored boxes</a></li>
</ul>
</li>
</ul>
</div>
</div>
</div>
</div>
<footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
<a href="../building-apps/building-static-apps.html" class="btn btn-neutral float-left" title="11.5. Building fully-static PMIx applications" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
<a href="prerequisites.html" class="btn btn-neutral float-right" title="12.1. Prerequisites" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
</div>
<hr/>
<div role="contentinfo">
<p>&#169; Copyright 2014-2025, The OpenPMIx Community.</p>
</div>
Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
<a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
provided by <a href="https://readthedocs.org">Read the Docs</a>.
</footer>
</div>
</div>
</section>
</div>
<script>
jQuery(function () {
SphinxRtdTheme.Navigation.enable(true);
});
</script>
</body>
</html>

View File

@@ -0,0 +1,272 @@
<!DOCTYPE html>
<html class="writer-html5" lang="en">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>12.1. Prerequisites &mdash; OpenPMIx 5.0.5 documentation</title>
<link rel="stylesheet" type="text/css" href="../_static/pygments.css" />
<link rel="stylesheet" type="text/css" href="../_static/css/theme.css" />
<!--[if lt IE 9]>
<script src="../_static/js/html5shiv.min.js"></script>
<![endif]-->
<script data-url_root="../" id="documentation_options" src="../_static/documentation_options.js"></script>
<script src="../_static/jquery.js"></script>
<script src="../_static/underscore.js"></script>
<script src="../_static/_sphinx_javascript_frameworks_compat.js"></script>
<script src="../_static/doctools.js"></script>
<script src="../_static/sphinx_highlight.js"></script>
<script src="../_static/js/theme.js"></script>
<link rel="index" title="Index" href="../genindex.html" />
<link rel="search" title="Search" href="../search.html" />
<link rel="next" title="12.2. GitHub, Git, and related topics" href="git-github.html" />
<link rel="prev" title="12. Developers guide" href="index.html" />
</head>
<body class="wy-body-for-nav">
<div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="wy-side-scroll">
<div class="wy-side-nav-search" >
<a href="../index.html" class="icon icon-home">
OpenPMIx
</a>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="../search.html" method="get">
<input type="text" name="q" placeholder="Search docs" aria-label="Search docs" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
<ul class="current">
<li class="toctree-l1"><a class="reference internal" href="../quickstart.html">1. Quick start</a></li>
<li class="toctree-l1"><a class="reference internal" href="../getting-help.html">2. Getting help</a></li>
<li class="toctree-l1"><a class="reference internal" href="../release-notes/index.html">3. Release notes</a></li>
<li class="toctree-l1"><a class="reference internal" href="../exceptions.html">4. Exceptions to the PMIx Standard</a></li>
<li class="toctree-l1"><a class="reference internal" href="../installing-pmix/index.html">5. Building and installing PMIx</a></li>
<li class="toctree-l1"><a class="reference internal" href="../how-things-work/index.html">6. How Things Work</a></li>
<li class="toctree-l1"><a class="reference internal" href="../release-notes.html">7. Release Notes</a></li>
<li class="toctree-l1"><a class="reference internal" href="../history.html">8. History</a></li>
<li class="toctree-l1"><a class="reference internal" href="../versions.html">9. Version Numbers and Binary Compatibility</a></li>
<li class="toctree-l1"><a class="reference internal" href="../mca.html">10. The Modular Component Architecture (MCA)</a></li>
<li class="toctree-l1"><a class="reference internal" href="../building-apps/index.html">11. Building PMIx applications</a></li>
<li class="toctree-l1 current"><a class="reference internal" href="index.html">12. Developers guide</a><ul class="current">
<li class="toctree-l2 current"><a class="current reference internal" href="#">12.1. Prerequisites</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#compilers">12.1.1. Compilers</a></li>
<li class="toctree-l3"><a class="reference internal" href="#gnu-autotools">12.1.2. GNU Autotools</a></li>
<li class="toctree-l3"><a class="reference internal" href="#perl">12.1.3. Perl</a></li>
<li class="toctree-l3"><a class="reference internal" href="#flex">12.1.4. Flex</a></li>
<li class="toctree-l3"><a class="reference internal" href="#sphinx-and-therefore-python">12.1.5. Sphinx (and therefore Python)</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="git-github.html">12.2. GitHub, Git, and related topics</a></li>
<li class="toctree-l2"><a class="reference internal" href="compiler-pickyness.html">12.3. Compiler Pickyness by Default</a></li>
<li class="toctree-l2"><a class="reference internal" href="autogen.html">12.4. Running <code class="docutils literal notranslate"><span class="pre">autogen.pl</span></code></a></li>
<li class="toctree-l2"><a class="reference internal" href="building-pmix.html">12.5. Building PMIx</a></li>
<li class="toctree-l2"><a class="reference internal" href="terminology.html">12.6. OpenPMIx terminology</a></li>
<li class="toctree-l2"><a class="reference internal" href="source-code.html">12.7. Source code</a></li>
<li class="toctree-l2"><a class="reference internal" href="frameworks.html">12.8. Internal frameworks</a></li>
<li class="toctree-l2"><a class="reference internal" href="gnu-autotools.html">12.9. Manually installing the GNU Autootools</a></li>
<li class="toctree-l2"><a class="reference internal" href="sphinx.html">12.10. Installing and running Sphinx (building the OpenPMIx docs)</a></li>
<li class="toctree-l2"><a class="reference internal" href="rst-for-markdown-expats.html">12.11. ReStructured Text for those who know Markdown</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../contributing.html">13. Contributing to OpenPMIx</a></li>
<li class="toctree-l1"><a class="reference internal" href="../license.html">14. License</a></li>
<li class="toctree-l1"><a class="reference internal" href="../security.html">15. OpenPMIx Security Policy</a></li>
<li class="toctree-l1"><a class="reference internal" href="../news/index.html">16. News</a></li>
<li class="toctree-l1"><a class="reference internal" href="../man/index.html">17. OpenPMIx manual pages</a></li>
</ul>
</div>
</div>
</nav>
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" >
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="../index.html">OpenPMIx</a>
</nav>
<div class="wy-nav-content">
<div class="rst-content">
<div role="navigation" aria-label="Page navigation">
<ul class="wy-breadcrumbs">
<li><a href="../index.html" class="icon icon-home" aria-label="Home"></a></li>
<li class="breadcrumb-item"><a href="index.html"><span class="section-number">12. </span>Developers guide</a></li>
<li class="breadcrumb-item active"><span class="section-number">12.1. </span>Prerequisites</li>
<li class="wy-breadcrumbs-aside">
<a href="../_sources/developers/prerequisites.rst.txt" rel="nofollow"> View page source</a>
</li>
</ul>
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
<style>
.wy-table-responsive table td,.wy-table-responsive table th{white-space:normal}
</style><div class="section" id="prerequisites">
<h1><span class="section-number">12.1. </span>Prerequisites<a class="headerlink" href="#prerequisites" title="Permalink to this heading"></a></h1>
<div class="section" id="compilers">
<h2><span class="section-number">12.1.1. </span>Compilers<a class="headerlink" href="#compilers" title="Permalink to this heading"></a></h2>
<p>Although it should probably be assumed, youll need a C compiler that
supports C99.</p>
</div>
<div class="section" id="gnu-autotools">
<h2><span class="section-number">12.1.2. </span>GNU Autotools<a class="headerlink" href="#gnu-autotools" title="Permalink to this heading"></a></h2>
<p>When building OpenPMIx from its repository sources, the GNU Autotools
must be installed (i.e., <a class="reference external" href="https://www.gnu.org/software/autoconf/">GNU Autoconf</a>, <a class="reference external" href="https://www.gnu.org/software/automake/">GNU Automake</a>, and <a class="reference external" href="https://www.gnu.org/software/libtool/">GNU Libtool</a>).</p>
<table class="colwidths-given docutils align-default">
<colgroup>
<col style="width: 50%" />
<col style="width: 50%" />
</colgroup>
<thead>
<tr class="row-odd"><th class="head"><p>Tool</p></th>
<th class="head"><p>Minimum version</p></th>
</tr>
</thead>
<tbody>
<tr class="row-even"><td><p>Autoconf</p></td>
<td><p>2.69.0</p></td>
</tr>
<tr class="row-odd"><td><p>Automake</p></td>
<td><p>1.13.4</p></td>
</tr>
<tr class="row-even"><td><p>Libtool</p></td>
<td><p>2.4.2</p></td>
</tr>
</tbody>
</table>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>The GNU Autotools are <em>not</em> required when building OpenPMIx
from distribution tarballs. OpenPMIx distribution tarballs
are bootstrapped such that end-users do not need to have the
GNU Autotools installed.</p>
</div>
<p>You can generally install GNU Autoconf, Automake, and Libtool via your
Linux distribution native package system, or via Homebrew or MacPorts
on MacOS. This usually “just works.”</p>
<p>If you run into problems with the GNU Autotools, or need to download /
build them manually, see the <a class="reference internal" href="gnu-autotools.html#developers-installing-autotools-label"><span class="std std-ref">how to build and install GNU
Autotools section</span></a> for much
more detail.</p>
</div>
<div class="section" id="perl">
<h2><span class="section-number">12.1.3. </span>Perl<a class="headerlink" href="#perl" title="Permalink to this heading"></a></h2>
<p>OpenPMIx still uses Perl for a few of its build scripts (most notably,
<code class="docutils literal notranslate"><span class="pre">autogen.pl</span></code>).</p>
<p>Generally speaking, any recent-ish release of Perl 5 should be
sufficient to correctly execute OpenPMIxs Perl scripts.</p>
</div>
<div class="section" id="flex">
<h2><span class="section-number">12.1.4. </span>Flex<a class="headerlink" href="#flex" title="Permalink to this heading"></a></h2>
<p>Minimum supported version: 2.5.4.</p>
<p><a class="reference external" href="https://github.com/westes/flex">Flex</a> is used during the
compilation of a developers checkout (it is not used to build
official distribution tarballs). Other flavors of lex are <em>not</em>
supported: given the choice of making parsing code portable between
all flavors of lex and doing more interesting work on OpenPMIx, we
greatly prefer the latter.</p>
<p>Note that no testing has been performed to see what the minimum
version of Flex is required by OpenPMIx. We suggest that you use
v2.5.35 at the earliest.</p>
<p>For now, OpenPMIx will allow developer builds with Flex 2.5.4. This
is primarily motivated by the fact that RedHat/CentOS 5 ships with
Flex 2.5.4. It is likely that someday OpenPMIx developer builds will
require Flex version &gt;=2.5.35.</p>
<p>Note that the <code class="docutils literal notranslate"><span class="pre">flex</span></code>-generated code generates some compiler warnings
on some platforms, but the warnings do not seem to be consistent or
uniform on all platforms, compilers, and flex versions. As such, we
have done little to try to remove those warnings.</p>
<p>If you do not have Flex installed and cannot easily install it via
your operating systems packaging system (to include Homebrew or
MacPorts on MacOS), see <a class="reference external" href="https://github.com/westes/flex">the Flex Github repository</a>.</p>
</div>
<div class="section" id="sphinx-and-therefore-python">
<h2><span class="section-number">12.1.5. </span>Sphinx (and therefore Python)<a class="headerlink" href="#sphinx-and-therefore-python" title="Permalink to this heading"></a></h2>
<p><a class="reference external" href="https://www.sphinx-doc.org/">Sphinx</a> is a Python-based tool used to
generate both the HTML version of the documentation (that you are
reading right now) and the nroff man pages.</p>
<p>Official OpenPMIx distribution tarballs contain pre-built HTML
documentation and man pages. This means that similar to the GNU
Autotools end users do not need to have Sphinx installed, but will
still have both the HTML documentation and man pages installed as part
of the normal configure / build / install process.</p>
<p>However, the HTML documentation and man pages are <em>not</em> stored in OpenPMIxs
Git repository; only the ReStructred Text source code of the
documentation is in the Git repository. Hence, if you are building
OpenPMIx from a Git clone, you will need Sphinx (and some Python
modules) in order to build the HTML documentation and man pages.</p>
<div class="admonition important">
<p class="admonition-title">Important</p>
<p>Most systems do not have Sphinx and/or the required
Python modules installed by default. <a class="reference internal" href="sphinx.html#developers-installing-sphinx-label"><span class="std std-ref">See the
Installing Sphinx section</span></a> for details on
how to install Sphinx and the required Python modules.</p>
</div>
<p>If <code class="docutils literal notranslate"><span class="pre">configure</span></code> is able to find Sphinx and the required Python
modules, it will automatically generate the HTML documentation and man
pages during the normal build procedure (i.e., during <code class="docutils literal notranslate"><span class="pre">make</span> <span class="pre">all</span></code>).
If <code class="docutils literal notranslate"><span class="pre">configure</span></code> is <em>not</em> able to find Sphinx and/or the required
Python modules, it will simply skip building the documentation.</p>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>If you have built/installed OpenPMIx from a Git clone and
unexpectedly did not have the man pages installed, it is
likely that you do not have Sphinx and/or the required
Python modules available.</p>
<p><a class="reference internal" href="sphinx.html#developers-installing-sphinx-label"><span class="std std-ref">See the Installing Sphinx section</span></a> for details on how
to install Sphinx and the required Python modules.</p>
</div>
<div class="admonition important">
<p class="admonition-title">Important</p>
<p><code class="docutils literal notranslate"><span class="pre">make</span> <span class="pre">dist</span></code> will fail if <code class="docutils literal notranslate"><span class="pre">configure</span></code> did not find
Sphinx and/or the required Python modules.
Specifically: if <code class="docutils literal notranslate"><span class="pre">make</span> <span class="pre">dist</span></code> is not able to generate
the most up-to-date HTML documentation and man pages,
you cannot build a distribution tarball. <strong>This is an
intentional design decision.</strong></p>
</div>
</div>
</div>
</div>
</div>
<footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
<a href="index.html" class="btn btn-neutral float-left" title="12. Developers guide" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
<a href="git-github.html" class="btn btn-neutral float-right" title="12.2. GitHub, Git, and related topics" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
</div>
<hr/>
<div role="contentinfo">
<p>&#169; Copyright 2014-2025, The OpenPMIx Community.</p>
</div>
Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
<a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
provided by <a href="https://readthedocs.org">Read the Docs</a>.
</footer>
</div>
</div>
</section>
</div>
<script>
jQuery(function () {
SphinxRtdTheme.Navigation.enable(true);
});
</script>
</body>
</html>

View File

@@ -0,0 +1,564 @@
<!DOCTYPE html>
<html class="writer-html5" lang="en">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>12.11. ReStructured Text for those who know Markdown &mdash; OpenPMIx 5.0.5 documentation</title>
<link rel="stylesheet" type="text/css" href="../_static/pygments.css" />
<link rel="stylesheet" type="text/css" href="../_static/css/theme.css" />
<!--[if lt IE 9]>
<script src="../_static/js/html5shiv.min.js"></script>
<![endif]-->
<script data-url_root="../" id="documentation_options" src="../_static/documentation_options.js"></script>
<script src="../_static/jquery.js"></script>
<script src="../_static/underscore.js"></script>
<script src="../_static/_sphinx_javascript_frameworks_compat.js"></script>
<script src="../_static/doctools.js"></script>
<script src="../_static/sphinx_highlight.js"></script>
<script src="../_static/js/theme.js"></script>
<link rel="index" title="Index" href="../genindex.html" />
<link rel="search" title="Search" href="../search.html" />
<link rel="next" title="13. Contributing to OpenPMIx" href="../contributing.html" />
<link rel="prev" title="12.10. Installing and running Sphinx (building the OpenPMIx docs)" href="sphinx.html" />
</head>
<body class="wy-body-for-nav">
<div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="wy-side-scroll">
<div class="wy-side-nav-search" >
<a href="../index.html" class="icon icon-home">
OpenPMIx
</a>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="../search.html" method="get">
<input type="text" name="q" placeholder="Search docs" aria-label="Search docs" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
<ul class="current">
<li class="toctree-l1"><a class="reference internal" href="../quickstart.html">1. Quick start</a></li>
<li class="toctree-l1"><a class="reference internal" href="../getting-help.html">2. Getting help</a></li>
<li class="toctree-l1"><a class="reference internal" href="../release-notes/index.html">3. Release notes</a></li>
<li class="toctree-l1"><a class="reference internal" href="../exceptions.html">4. Exceptions to the PMIx Standard</a></li>
<li class="toctree-l1"><a class="reference internal" href="../installing-pmix/index.html">5. Building and installing PMIx</a></li>
<li class="toctree-l1"><a class="reference internal" href="../how-things-work/index.html">6. How Things Work</a></li>
<li class="toctree-l1"><a class="reference internal" href="../release-notes.html">7. Release Notes</a></li>
<li class="toctree-l1"><a class="reference internal" href="../history.html">8. History</a></li>
<li class="toctree-l1"><a class="reference internal" href="../versions.html">9. Version Numbers and Binary Compatibility</a></li>
<li class="toctree-l1"><a class="reference internal" href="../mca.html">10. The Modular Component Architecture (MCA)</a></li>
<li class="toctree-l1"><a class="reference internal" href="../building-apps/index.html">11. Building PMIx applications</a></li>
<li class="toctree-l1 current"><a class="reference internal" href="index.html">12. Developers guide</a><ul class="current">
<li class="toctree-l2"><a class="reference internal" href="prerequisites.html">12.1. Prerequisites</a></li>
<li class="toctree-l2"><a class="reference internal" href="git-github.html">12.2. GitHub, Git, and related topics</a></li>
<li class="toctree-l2"><a class="reference internal" href="compiler-pickyness.html">12.3. Compiler Pickyness by Default</a></li>
<li class="toctree-l2"><a class="reference internal" href="autogen.html">12.4. Running <code class="docutils literal notranslate"><span class="pre">autogen.pl</span></code></a></li>
<li class="toctree-l2"><a class="reference internal" href="building-pmix.html">12.5. Building PMIx</a></li>
<li class="toctree-l2"><a class="reference internal" href="terminology.html">12.6. OpenPMIx terminology</a></li>
<li class="toctree-l2"><a class="reference internal" href="source-code.html">12.7. Source code</a></li>
<li class="toctree-l2"><a class="reference internal" href="frameworks.html">12.8. Internal frameworks</a></li>
<li class="toctree-l2"><a class="reference internal" href="gnu-autotools.html">12.9. Manually installing the GNU Autootools</a></li>
<li class="toctree-l2"><a class="reference internal" href="sphinx.html">12.10. Installing and running Sphinx (building the OpenPMIx docs)</a></li>
<li class="toctree-l2 current"><a class="current reference internal" href="#">12.11. ReStructured Text for those who know Markdown</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#whitespace-and-indenting">12.11.1. Whitespace and indenting</a></li>
<li class="toctree-l3"><a class="reference internal" href="#fixed-width-font">12.11.2. Fixed width font</a></li>
<li class="toctree-l3"><a class="reference internal" href="#italics">12.11.3. Italics</a></li>
<li class="toctree-l3"><a class="reference internal" href="#boldface">12.11.4. Boldface</a></li>
<li class="toctree-l3"><a class="reference internal" href="#chapter-and-section-delimiters">12.11.5. Chapter and section delimiters</a></li>
<li class="toctree-l3"><a class="reference internal" href="#multi-line-code-fixed-width-font">12.11.6. Multi-line code/fixed-width font</a></li>
<li class="toctree-l3"><a class="reference internal" href="#un-numbered-bullets">12.11.7. Un-numbered bullets</a></li>
<li class="toctree-l3"><a class="reference internal" href="#numbered-bullets">12.11.8. Numbered bullets:</a></li>
<li class="toctree-l3"><a class="reference internal" href="#comments">12.11.9. Comments</a></li>
<li class="toctree-l3"><a class="reference internal" href="#including-files">12.11.10. Including files</a></li>
<li class="toctree-l3"><a class="reference internal" href="#hyperlinks-to-urls">12.11.11. Hyperlinks to URLs</a></li>
<li class="toctree-l3"><a class="reference internal" href="#hyperlinks-to-anchors">12.11.12. Hyperlinks to anchors</a></li>
<li class="toctree-l3"><a class="reference internal" href="#hyperlinks-to-other-rst-pages">12.11.13. Hyperlinks to other (RST) pages</a></li>
<li class="toctree-l3"><a class="reference internal" href="#macros">12.11.14. Macros</a></li>
<li class="toctree-l3"><a class="reference internal" href="#brightly-colored-boxes">12.11.15. Brightly-colored boxes</a></li>
</ul>
</li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../contributing.html">13. Contributing to OpenPMIx</a></li>
<li class="toctree-l1"><a class="reference internal" href="../license.html">14. License</a></li>
<li class="toctree-l1"><a class="reference internal" href="../security.html">15. OpenPMIx Security Policy</a></li>
<li class="toctree-l1"><a class="reference internal" href="../news/index.html">16. News</a></li>
<li class="toctree-l1"><a class="reference internal" href="../man/index.html">17. OpenPMIx manual pages</a></li>
</ul>
</div>
</div>
</nav>
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" >
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="../index.html">OpenPMIx</a>
</nav>
<div class="wy-nav-content">
<div class="rst-content">
<div role="navigation" aria-label="Page navigation">
<ul class="wy-breadcrumbs">
<li><a href="../index.html" class="icon icon-home" aria-label="Home"></a></li>
<li class="breadcrumb-item"><a href="index.html"><span class="section-number">12. </span>Developers guide</a></li>
<li class="breadcrumb-item active"><span class="section-number">12.11. </span>ReStructured Text for those who know Markdown</li>
<li class="wy-breadcrumbs-aside">
<a href="../_sources/developers/rst-for-markdown-expats.rst.txt" rel="nofollow"> View page source</a>
</li>
</ul>
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
<style>
.wy-table-responsive table td,.wy-table-responsive table th{white-space:normal}
</style><div class="section" id="restructured-text-for-those-who-know-markdown">
<span id="developers-rst-for-markdown-expats"></span><h1><span class="section-number">12.11. </span>ReStructured Text for those who know Markdown<a class="headerlink" href="#restructured-text-for-those-who-know-markdown" title="Permalink to this heading"></a></h1>
<p>You can think of RST as “Markdown, but much better”. Meaning:</p>
<ol class="arabic simple">
<li><p>RST is basically just as simple as Markdown</p></li>
<li><p>But RST is both more precise, and has more available formatting
constructs (without getting crazy complicated)</p></li>
</ol>
<p>The full Sphinx / RST documentation is available here:
<a class="reference external" href="https://www.sphinx-doc.org/en/master/index.html">https://www.sphinx-doc.org/en/master/index.html</a></p>
<p>If youre familiar with Markdown, the following sections contain some
tips to get you started in RST.</p>
<div class="section" id="whitespace-and-indenting">
<h2><span class="section-number">12.11.1. </span>Whitespace and indenting<a class="headerlink" href="#whitespace-and-indenting" title="Permalink to this heading"></a></h2>
<ul>
<li><p>MD: Whitespace and indenting generally doesnt matter in most
cases. It does matter with bullets and sub bullets, but the rules
get pretty weird, and vary between different Markdown renderers.</p></li>
<li><p>RST: <strong>Indenting matters</strong>. A lot. Just like Python. In
general, you indent all RST text to keep it within the same level.
For example, all this text would be a single paragraph</p>
<p><strong>Blank lines also matter</strong>. A lot. You use blank lines to
delimit sections within an indenting level. For example, the
blank line before this paragraph denotes a paragraph break.</p>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>RST was created by the Python community. Hence,
whitespace is quite important.</p>
<ul class="simple">
<li><p>Indenting matters</p></li>
<li><p>Blank lines between content matter</p></li>
</ul>
</div>
</li>
</ul>
<p>Using a blank line and outdenting indicates the end of the previous
item. For example, this paragraph is not part of the MD/RST
bulleted list.</p>
</div>
<div class="section" id="fixed-width-font">
<h2><span class="section-number">12.11.2. </span>Fixed width font<a class="headerlink" href="#fixed-width-font" title="Permalink to this heading"></a></h2>
<ul>
<li><p>MD: Use single quotes:</p>
<div class="highlight-md notranslate"><div class="highlight"><pre><span></span><span class="sb">`hello world`</span>
</pre></div>
</div>
</li>
<li><p>RST: Use a pair of single quotes:</p>
<div class="highlight-rst notranslate"><div class="highlight"><pre><span></span><span class="s">``hello world``</span>
</pre></div>
</div>
</li>
</ul>
</div>
<div class="section" id="italics">
<h2><span class="section-number">12.11.3. </span>Italics<a class="headerlink" href="#italics" title="Permalink to this heading"></a></h2>
<ul class="simple">
<li><p>MD: <code class="docutils literal notranslate"><span class="pre">*hello</span> <span class="pre">world*</span></code> or <code class="docutils literal notranslate"><span class="pre">_hello</span> <span class="pre">world_</span></code></p></li>
<li><p>RST: <code class="docutils literal notranslate"><span class="pre">*hello</span> <span class="pre">world*</span></code></p></li>
</ul>
</div>
<div class="section" id="boldface">
<h2><span class="section-number">12.11.4. </span>Boldface<a class="headerlink" href="#boldface" title="Permalink to this heading"></a></h2>
<ul class="simple">
<li><p>MD: <code class="docutils literal notranslate"><span class="pre">**hello</span> <span class="pre">world**</span></code></p></li>
<li><p>RST: Same as MD</p></li>
</ul>
</div>
<div class="section" id="chapter-and-section-delimiters">
<h2><span class="section-number">12.11.5. </span>Chapter and section delimiters<a class="headerlink" href="#chapter-and-section-delimiters" title="Permalink to this heading"></a></h2>
<ul>
<li><p>MD: Either use one or more pound signs (#, ##, ###) to the left of
the line of text, or underline the line of text with pound signs</p></li>
<li><p>RST: Have a single line of text, underlined by non-ASCII
characters.</p>
<ul>
<li><p>The length of the underlying <em>must</em> be at least as long as the
line of text</p></li>
<li><p>Which non-ASCII character is used for the underlying does not
matter, but the order in which they are used denotes chapters
/ sections / subsections / etc.</p>
<p>In these OpenPMIx docs, the sequence of underline characters we use
are:</p>
<div class="highlight-rst notranslate"><div class="highlight"><pre><span></span><span class="gh">Chapter 1: hello world</span>
<span class="gh">======================</span>
</pre></div>
</div>
<div class="highlight-rst notranslate"><div class="highlight"><pre><span></span><span class="gh">Section 1: hello world</span>
<span class="gh">----------------------</span>
</pre></div>
</div>
<div class="highlight-rst notranslate"><div class="highlight"><pre><span></span><span class="gh">Subsection 1: hello world</span>
<span class="gh">^^^^^^^^^^^^^^^^^^^^^^^^^</span>
</pre></div>
</div>
<div class="highlight-rst notranslate"><div class="highlight"><pre><span></span><span class="gh">Subsubsection 1: hello world</span>
<span class="gh">++++++++++++++++++++++++++++</span>
</pre></div>
</div>
<p>Meaning: underlines made of <code class="docutils literal notranslate"><span class="pre">=</span></code> denotes chapters, underlines
made of <code class="docutils literal notranslate"><span class="pre">-</span></code> denotes sections, underlines made of <code class="docutils literal notranslate"><span class="pre">^</span></code> denotes
subsections, and underlines made of <code class="docutils literal notranslate"><span class="pre">+</span></code> denote subsubsections.</p>
</li>
</ul>
</li>
</ul>
</div>
<div class="section" id="multi-line-code-fixed-width-font">
<h2><span class="section-number">12.11.6. </span>Multi-line code/fixed-width font<a class="headerlink" href="#multi-line-code-fixed-width-font" title="Permalink to this heading"></a></h2>
<ul>
<li><p>MD: Use three single quotes to delimit blocks of text. Optionally
include a token keyword to denote the syntax highlighting to use
inside that block.</p>
<div class="highlight-md notranslate"><div class="highlight"><pre><span></span><span class="sb">```c</span>
<span class="kt">int</span><span class="w"> </span><span class="nf">main</span><span class="p">()</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="n">printf</span><span class="p">(</span><span class="s">&quot;Hello world</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="mi">0</span><span class="w"> </span><span class="p">}</span>
<span class="sb">```</span>
</pre></div>
</div>
</li>
<li><p>RST: Use <code class="docutils literal notranslate"><span class="pre">..</span> <span class="pre">code-block::</span> <span class="pre">KEYWORD</span></code> to start a section of code.</p>
<div class="highlight-rst notranslate"><div class="highlight"><pre><span></span><span class="p">..</span> <span class="ow">code-block</span><span class="p">::</span> c
int main() { printf(&quot;Hello world\n&quot;); return 0 }
</pre></div>
</div>
<ul>
<li><p>KEYWORD indicates which syntax highlighting to use (e.g., <code class="docutils literal notranslate"><span class="pre">c</span></code>,
<code class="docutils literal notranslate"><span class="pre">c++</span></code> <code class="docutils literal notranslate"><span class="pre">make</span></code>, <code class="docutils literal notranslate"><span class="pre">sh</span></code>, <code class="docutils literal notranslate"><span class="pre">ini</span></code>, <code class="docutils literal notranslate"><span class="pre">Fortran</span></code>, <code class="docutils literal notranslate"><span class="pre">diff</span></code>,
<code class="docutils literal notranslate"><span class="pre">python</span></code>, <code class="docutils literal notranslate"><span class="pre">java</span></code>, <code class="docutils literal notranslate"><span class="pre">rst</span></code>, … etc.).</p></li>
<li><p>KEYWORD can be omitted if no specific highlighting is to be
used.</p></li>
<li><p>There <em>MUST</em> be a blank line after the <code class="docutils literal notranslate"><span class="pre">code-block</span></code> line.</p></li>
<li><p>The lines in the block must be indented to the same column as the
first <code class="docutils literal notranslate"><span class="pre">c</span></code> in <code class="docutils literal notranslate"><span class="pre">code-block</span></code>. For example:</p>
<div class="highlight-rst notranslate"><div class="highlight"><pre><span></span><span class="p">..</span> <span class="ow">code-block</span><span class="p">::</span> <span class="k">sh</span>
shell$<span class="w"> </span>tar<span class="w"> </span>xf<span class="w"> </span>pmix-&lt;version&gt;.tar.bz2
shell$<span class="w"> </span><span class="nb">cd</span><span class="w"> </span>pmix-&lt;version&gt;
shell$<span class="w"> </span>./configure<span class="w"> </span>--prefix<span class="o">=</span>&lt;path&gt;<span class="w"> </span><span class="p">|&amp;</span><span class="w"> </span>tee<span class="w"> </span>config.out
</pre></div>
</div>
<p>Note that the code block will be rendered at the same level as
where the first <code class="docutils literal notranslate"><span class="pre">.</span></code> of <code class="docutils literal notranslate"><span class="pre">..</span> <span class="pre">code-block::</span></code> starts. In this
case, the example code block will be rendered in the bulleted
item.</p>
</li>
</ul>
</li>
</ul>
<p>Whereas this parargraph and code block will be outside of the
above bulleted list:</p>
<div class="highlight-sh notranslate"><div class="highlight"><pre><span></span>shell$<span class="w"> </span>tar<span class="w"> </span>xf<span class="w"> </span>pmix-&lt;version&gt;.tar.bz2
shell$<span class="w"> </span><span class="nb">cd</span><span class="w"> </span>pmix-&lt;version&gt;
shell$<span class="w"> </span>./configure<span class="w"> </span>--prefix<span class="o">=</span>&lt;path&gt;<span class="w"> </span><span class="p">|&amp;</span><span class="w"> </span>tee<span class="w"> </span>config.out
<span class="c1"># Fun note: the code-block can contain blank lines.</span>
</pre></div>
</div>
<p>The code-block is terminated by a blank line and then outdent back
to the same level as the first <code class="docutils literal notranslate"><span class="pre">.</span></code> in <code class="docutils literal notranslate"><span class="pre">..</span> <span class="pre">code-block::</span></code>.</p>
</div>
<div class="section" id="un-numbered-bullets">
<h2><span class="section-number">12.11.7. </span>Un-numbered bullets<a class="headerlink" href="#un-numbered-bullets" title="Permalink to this heading"></a></h2>
<ul>
<li><p>MD: Start lines with <code class="docutils literal notranslate"><span class="pre">*</span></code> or <code class="docutils literal notranslate"><span class="pre">-</span></code></p></li>
<li><p>RST: Start lines with <code class="docutils literal notranslate"><span class="pre">*</span></code>. You can wrap lines at the same
indenting level to make paragraphs in the same bullet.</p>
<p>Having a blank line and then more text at the same indenting level
makes another paragraph in the same bullet. You even put other
directives in this same indenting level.</p>
<ul>
<li><p>For example, you can start a sub bullet.</p>
<p>This text is the next paragraph in the same sub bullet.</p>
<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>This is a verbatim code block within this same sub bullet.
More about code-blocks below.
</pre></div>
</div>
<p>This is the next paragraph (after the code block) in the same
sub bullet.</p>
</li>
<li><p>If you start a new bullet, that terminates the previous bullet.</p></li>
<li><p>You <strong>MUST</strong> put blank lines between bullets!</p></li>
</ul>
</li>
</ul>
</div>
<div class="section" id="numbered-bullets">
<h2><span class="section-number">12.11.8. </span>Numbered bullets:<a class="headerlink" href="#numbered-bullets" title="Permalink to this heading"></a></h2>
<ul>
<li><p>MD: Start lines with <code class="docutils literal notranslate"><span class="pre">#</span></code></p></li>
<li><p>RST: Start lines with <code class="docutils literal notranslate"><span class="pre">#.</span></code></p>
<div class="admonition important">
<p class="admonition-title">Important</p>
<p>Yes, the trailing <code class="docutils literal notranslate"><span class="pre">.</span></code> is important</p>
</div>
<p>For example:</p>
<div class="highlight-rst notranslate"><div class="highlight"><pre><span></span><span class="m">#.</span> Item number 1
<span class="m">#.</span> The second item
<span class="m">#.</span> A third item
</pre></div>
</div>
<p>All the same rules for indentation apply as described above.</p>
</li>
</ul>
</div>
<div class="section" id="comments">
<h2><span class="section-number">12.11.9. </span>Comments<a class="headerlink" href="#comments" title="Permalink to this heading"></a></h2>
<ul>
<li><p>MD: Enclose content in <code class="docutils literal notranslate"><span class="pre">&lt;!--</span></code> and <code class="docutils literal notranslate"><span class="pre">--&gt;</span></code> (i.e., HTML comments,
but they are included in the output)</p></li>
<li><p>RST: Start a line with two periods and a space.</p>
<p>For example, the following block is a comment, and will not be
included in the output:</p>
<div class="highlight-rst notranslate"><div class="highlight"><pre><span></span><span class="cp">.. Hello world. This is a comment. This whole block is a</span>
<span class="cp"> comment. You can leave it here in the final document, and it</span>
<span class="cp"> will not be included in the rendered output.</span>
<span class="cp"> Your comment can even include blank lines. You terminate a</span>
<span class="cp"> comment -- just like most other things in RST -- by a blank</span>
<span class="cp"> line and then outdenting back out to the same column as the</span>
<span class="cp"> first &quot;.&quot;.</span>
This line is no longer part of the comment.
</pre></div>
</div>
</li>
</ul>
</div>
<div class="section" id="including-files">
<h2><span class="section-number">12.11.10. </span>Including files<a class="headerlink" href="#including-files" title="Permalink to this heading"></a></h2>
<ul>
<li><p>MD: You cannot include files in Markdown.</p></li>
<li><p>RST: Use the <code class="docutils literal notranslate"><span class="pre">..</span> <span class="pre">include::</span> <span class="pre">FILENAME</span></code> directive. For example:</p>
<div class="highlight-rst notranslate"><div class="highlight"><pre><span></span><span class="p">..</span> <span class="ow">include</span><span class="p">::</span> features-extensions.rst
<span class="p">..</span> <span class="ow">include</span><span class="p">::</span> features-java.rst
</pre></div>
</div>
<p>Those directives include those 2 files right here in this RST file.</p>
<div class="admonition important">
<p class="admonition-title">Important</p>
<p>Chapter/section/subsection delimiters will be
continued in those files as part of rendering this
file.</p>
</div>
</li>
</ul>
</div>
<div class="section" id="hyperlinks-to-urls">
<h2><span class="section-number">12.11.11. </span>Hyperlinks to URLs<a class="headerlink" href="#hyperlinks-to-urls" title="Permalink to this heading"></a></h2>
<ul>
<li><p>MD:</p>
<div class="highlight-md notranslate"><div class="highlight"><pre><span></span>[<span class="nt">this is the link text</span>](<span class="na">https://example.com/</span>)
</pre></div>
</div>
</li>
<li><p>RST:</p>
<div class="highlight-rst notranslate"><div class="highlight"><pre><span></span><span class="s">`this is the link text </span><span class="si">&lt;https://example.com/&gt;</span><span class="s">`_</span>
</pre></div>
</div>
<div class="admonition important">
<p class="admonition-title">Important</p>
<p>Yes, the trailing underscore in RST is important.
Its a little weird, but youll cope.</p>
</div>
</li>
</ul>
</div>
<div class="section" id="hyperlinks-to-anchors">
<h2><span class="section-number">12.11.12. </span>Hyperlinks to anchors<a class="headerlink" href="#hyperlinks-to-anchors" title="Permalink to this heading"></a></h2>
<ul>
<li><p>MD: I forget offhand how to make anchors and links to them in MD.</p></li>
<li><p>RST: Use the <code class="docutils literal notranslate"><span class="pre">:ref:</span></code> directive.</p>
<p>Make an anchor like this:</p>
<div class="highlight-rst notranslate"><div class="highlight"><pre><span></span><span class="p">..</span> <span class="nt">_ANCHOR_NAME:</span>
</pre></div>
</div>
<p>It <em>must</em> start with and underscore and end with a colon.</p>
<p>Ive typically used anchor names that either begin with <code class="docutils literal notranslate"><span class="pre">label-</span></code>
or end in <code class="docutils literal notranslate"><span class="pre">-label</span></code> to make it blatantly obvious that its a
label. For example:</p>
<div class="highlight-rst notranslate"><div class="highlight"><pre><span></span><span class="p">..</span> <span class="nt">_building-and-installing-section-label:</span>
</pre></div>
</div>
<p>Then you can use the <code class="docutils literal notranslate"><span class="pre">:ref:</span></code> directive:</p>
<div class="highlight-rst notranslate"><div class="highlight"><pre><span></span>be sure to see :ref:`the VPATH build section
<span class="nt">&lt;building-and-installing-section-label&gt;</span>`.
</pre></div>
</div>
</li>
</ul>
</div>
<div class="section" id="hyperlinks-to-other-rst-pages">
<h2><span class="section-number">12.11.13. </span>Hyperlinks to other (RST) pages<a class="headerlink" href="#hyperlinks-to-other-rst-pages" title="Permalink to this heading"></a></h2>
<ul>
<li><p>MD:</p>
<div class="highlight-md notranslate"><div class="highlight"><pre><span></span>[<span class="nt">link text</span>](<span class="na">page_name</span>)
</pre></div>
</div>
</li>
<li><p>RST: Use the <code class="docutils literal notranslate"><span class="pre">:doc:</span></code> directive.</p>
<p>General format:</p>
<div class="highlight-rst notranslate"><div class="highlight"><pre><span></span><span class="na">:doc:</span><span class="nv">`link text &lt;PAGE_PATH&gt;`</span>
</pre></div>
</div>
<p>For example:</p>
<div class="highlight-rst notranslate"><div class="highlight"><pre><span></span>You should read <span class="na">:doc:</span><span class="nv">`the Developer&#39;s Guide &lt;/developers&gt;`</span>.
</pre></div>
</div>
<p>The page path is relative to the <code class="docutils literal notranslate"><span class="pre">docs</span></code> dir in the OpenPMIx git tree.</p>
</li>
</ul>
</div>
<div class="section" id="macros">
<h2><span class="section-number">12.11.14. </span>Macros<a class="headerlink" href="#macros" title="Permalink to this heading"></a></h2>
<ul>
<li><p>MD: There are no macros in Markdown.</p></li>
<li><p>RST: We have defined a few OpenPMIx-specific macros in RST. You can
insert these macros anywhere in RST content text.</p>
<ul>
<li><p><code class="docutils literal notranslate"><span class="pre">|ompi_ver|</span></code> is the full OpenPMIx version number, including
alpha/beta/rc/greek denotation. For example <code class="docutils literal notranslate"><span class="pre">5.0.0rc1</span></code>.</p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">|ompi_series|</span></code> is the major/minor OpenPMIx version, e.g.,
<code class="docutils literal notranslate"><span class="pre">5.0.x</span></code>.</p>
<div class="admonition important">
<p class="admonition-title">Important</p>
<p>Think twice about hard-coding the OpenPMIx version
number or series when referring to the current
version or series. It can be appropriate to
hard-code an “x.y.0” version to denote a
generational epoch, but in most other cases, you
probably want to use one of the macros.</p>
</div>
</li>
<li><p><code class="docutils literal notranslate"><span class="pre">|mdash|</span></code> is a unicode long dash, an “em” dash. Use it instead
of <code class="docutils literal notranslate"><span class="pre">--</span></code>.</p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">|rarrow|</span></code> is a unicode right arrow. Use it instead of <code class="docutils literal notranslate"><span class="pre">-&gt;</span></code>
or <code class="docutils literal notranslate"><span class="pre">--&gt;</span></code>.</p></li>
</ul>
</li>
</ul>
</div>
<div class="section" id="brightly-colored-boxes">
<h2><span class="section-number">12.11.15. </span>Brightly-colored boxes<a class="headerlink" href="#brightly-colored-boxes" title="Permalink to this heading"></a></h2>
<ul>
<li><p>MD: There are no brightly-colored boxes in MD.</p></li>
<li><p>RST: You can use various directives to make brightly-colored
“note” boxes (Called admonitions) in RST. For example:</p>
<div class="admonition important">
<p class="admonition-title">Important</p>
<p>a green box with a “!” icon</p>
<p>Standard indenting rules apply for the content in the box. You
can have multiple lines and multiple paragraphs, for example.</p>
<p>Yippee.</p>
<ul>
<li><p>You can even have bullets.</p>
<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>You can even have code blocks inside the bullet inside the
caution box.
</pre></div>
</div>
</li>
<li><p>All the standard indenting rules apply.</p></li>
</ul>
</div>
<div class="admonition hint">
<p class="admonition-title">Hint</p>
<p>a green box with a “!” icon</p>
</div>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>a blue box with a “!” icon</p>
</div>
<div class="admonition caution">
<p class="admonition-title">Caution</p>
<p>an orange box with a “!” icon</p>
</div>
<div class="admonition attention">
<p class="admonition-title">Attention</p>
<p>an orange box with a “!” icon</p>
</div>
<div class="admonition warning">
<p class="admonition-title">Warning</p>
<p>an orange box with a “!” icon</p>
</div>
<div class="admonition error">
<p class="admonition-title">Error</p>
<p>a red box with a “!” icon</p>
</div>
<div class="admonition danger">
<p class="admonition-title">Danger</p>
<p>a red box with a “!” icon</p>
</div>
<div class="tip admonition">
<p class="admonition-title">Custom title</p>
<p>You can name this box whatever you want:</p>
<div class="highlight-rst notranslate"><div class="highlight"><pre><span></span><span class="p">..</span> <span class="ow">admonition</span><span class="p">::</span> Custom title
<span class="nc">:class:</span> tip
Content of your box here.
</pre></div>
</div>
<p>Custom text for this custom admonition. Note that the <code class="docutils literal notranslate"><span class="pre">:class:</span> <span class="pre">&lt;type&gt;</span></code>
will change the coloring to the color for the basic admonition of that
type. E.g., <code class="docutils literal notranslate"><span class="pre">:class:</span> <span class="pre">tip</span></code> makes the box be green.</p>
</div>
</li>
</ul>
</div>
</div>
</div>
</div>
<footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
<a href="sphinx.html" class="btn btn-neutral float-left" title="12.10. Installing and running Sphinx (building the OpenPMIx docs)" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
<a href="../contributing.html" class="btn btn-neutral float-right" title="13. Contributing to OpenPMIx" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
</div>
<hr/>
<div role="contentinfo">
<p>&#169; Copyright 2014-2025, The OpenPMIx Community.</p>
</div>
Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
<a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
provided by <a href="https://readthedocs.org">Read the Docs</a>.
</footer>
</div>
</div>
</section>
</div>
<script>
jQuery(function () {
SphinxRtdTheme.Navigation.enable(true);
});
</script>
</body>
</html>

View File

@@ -0,0 +1,378 @@
<!DOCTYPE html>
<html class="writer-html5" lang="en">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>12.7. Source code &mdash; OpenPMIx 5.0.5 documentation</title>
<link rel="stylesheet" type="text/css" href="../_static/pygments.css" />
<link rel="stylesheet" type="text/css" href="../_static/css/theme.css" />
<!--[if lt IE 9]>
<script src="../_static/js/html5shiv.min.js"></script>
<![endif]-->
<script data-url_root="../" id="documentation_options" src="../_static/documentation_options.js"></script>
<script src="../_static/jquery.js"></script>
<script src="../_static/underscore.js"></script>
<script src="../_static/_sphinx_javascript_frameworks_compat.js"></script>
<script src="../_static/doctools.js"></script>
<script src="../_static/sphinx_highlight.js"></script>
<script src="../_static/js/theme.js"></script>
<link rel="index" title="Index" href="../genindex.html" />
<link rel="search" title="Search" href="../search.html" />
<link rel="next" title="12.8. Internal frameworks" href="frameworks.html" />
<link rel="prev" title="12.6. OpenPMIx terminology" href="terminology.html" />
</head>
<body class="wy-body-for-nav">
<div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="wy-side-scroll">
<div class="wy-side-nav-search" >
<a href="../index.html" class="icon icon-home">
OpenPMIx
</a>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="../search.html" method="get">
<input type="text" name="q" placeholder="Search docs" aria-label="Search docs" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
<ul class="current">
<li class="toctree-l1"><a class="reference internal" href="../quickstart.html">1. Quick start</a></li>
<li class="toctree-l1"><a class="reference internal" href="../getting-help.html">2. Getting help</a></li>
<li class="toctree-l1"><a class="reference internal" href="../release-notes/index.html">3. Release notes</a></li>
<li class="toctree-l1"><a class="reference internal" href="../exceptions.html">4. Exceptions to the PMIx Standard</a></li>
<li class="toctree-l1"><a class="reference internal" href="../installing-pmix/index.html">5. Building and installing PMIx</a></li>
<li class="toctree-l1"><a class="reference internal" href="../how-things-work/index.html">6. How Things Work</a></li>
<li class="toctree-l1"><a class="reference internal" href="../release-notes.html">7. Release Notes</a></li>
<li class="toctree-l1"><a class="reference internal" href="../history.html">8. History</a></li>
<li class="toctree-l1"><a class="reference internal" href="../versions.html">9. Version Numbers and Binary Compatibility</a></li>
<li class="toctree-l1"><a class="reference internal" href="../mca.html">10. The Modular Component Architecture (MCA)</a></li>
<li class="toctree-l1"><a class="reference internal" href="../building-apps/index.html">11. Building PMIx applications</a></li>
<li class="toctree-l1 current"><a class="reference internal" href="index.html">12. Developers guide</a><ul class="current">
<li class="toctree-l2"><a class="reference internal" href="prerequisites.html">12.1. Prerequisites</a></li>
<li class="toctree-l2"><a class="reference internal" href="git-github.html">12.2. GitHub, Git, and related topics</a></li>
<li class="toctree-l2"><a class="reference internal" href="compiler-pickyness.html">12.3. Compiler Pickyness by Default</a></li>
<li class="toctree-l2"><a class="reference internal" href="autogen.html">12.4. Running <code class="docutils literal notranslate"><span class="pre">autogen.pl</span></code></a></li>
<li class="toctree-l2"><a class="reference internal" href="building-pmix.html">12.5. Building PMIx</a></li>
<li class="toctree-l2"><a class="reference internal" href="terminology.html">12.6. OpenPMIx terminology</a></li>
<li class="toctree-l2 current"><a class="current reference internal" href="#">12.7. Source code</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#code-style">12.7.1. Code style</a><ul>
<li class="toctree-l4"><a class="reference internal" href="#all-languages">12.7.1.1. All languages</a></li>
<li class="toctree-l4"><a class="reference internal" href="#c-c">12.7.1.2. C / C++</a></li>
<li class="toctree-l4"><a class="reference internal" href="#shell-scripting">12.7.1.3. Shell scripting</a></li>
<li class="toctree-l4"><a class="reference internal" href="#m4">12.7.1.4. m4</a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="#tree-layout">12.7.2. Tree layout</a></li>
<li class="toctree-l3"><a class="reference internal" href="#symbol-visibility">12.7.3. Symbol Visibility</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="frameworks.html">12.8. Internal frameworks</a></li>
<li class="toctree-l2"><a class="reference internal" href="gnu-autotools.html">12.9. Manually installing the GNU Autootools</a></li>
<li class="toctree-l2"><a class="reference internal" href="sphinx.html">12.10. Installing and running Sphinx (building the OpenPMIx docs)</a></li>
<li class="toctree-l2"><a class="reference internal" href="rst-for-markdown-expats.html">12.11. ReStructured Text for those who know Markdown</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../contributing.html">13. Contributing to OpenPMIx</a></li>
<li class="toctree-l1"><a class="reference internal" href="../license.html">14. License</a></li>
<li class="toctree-l1"><a class="reference internal" href="../security.html">15. OpenPMIx Security Policy</a></li>
<li class="toctree-l1"><a class="reference internal" href="../news/index.html">16. News</a></li>
<li class="toctree-l1"><a class="reference internal" href="../man/index.html">17. OpenPMIx manual pages</a></li>
</ul>
</div>
</div>
</nav>
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" >
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="../index.html">OpenPMIx</a>
</nav>
<div class="wy-nav-content">
<div class="rst-content">
<div role="navigation" aria-label="Page navigation">
<ul class="wy-breadcrumbs">
<li><a href="../index.html" class="icon icon-home" aria-label="Home"></a></li>
<li class="breadcrumb-item"><a href="index.html"><span class="section-number">12. </span>Developers guide</a></li>
<li class="breadcrumb-item active"><span class="section-number">12.7. </span>Source code</li>
<li class="wy-breadcrumbs-aside">
<a href="../_sources/developers/source-code.rst.txt" rel="nofollow"> View page source</a>
</li>
</ul>
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
<style>
.wy-table-responsive table td,.wy-table-responsive table th{white-space:normal}
</style><div class="section" id="source-code">
<h1><span class="section-number">12.7. </span>Source code<a class="headerlink" href="#source-code" title="Permalink to this heading"></a></h1>
<div class="section" id="code-style">
<h2><span class="section-number">12.7.1. </span>Code style<a class="headerlink" href="#code-style" title="Permalink to this heading"></a></h2>
<p>We intentionally do not have too many code conventions in the PMIx
code base.</p>
<div class="section" id="all-languages">
<h3><span class="section-number">12.7.1.1. </span>All languages<a class="headerlink" href="#all-languages" title="Permalink to this heading"></a></h3>
<ul class="simple">
<li><p>4 space tabs. No more, no less.</p></li>
<li><p><strong>NEVER</strong> use actual tab characters; always use spaces. Both emacs
and vim have secret mojo that can automatically use spaces when you
hit the <code class="docutils literal notranslate"><span class="pre">&lt;TAB&gt;</span></code> key. This makes the code look the same in every
browser, regardless of individual tab display settings.</p></li>
</ul>
</div>
<div class="section" id="c-c">
<h3><span class="section-number">12.7.1.2. </span>C / C++<a class="headerlink" href="#c-c" title="Permalink to this heading"></a></h3>
<ul>
<li><p>When comparing constants for equality or inequality, always put the
constant on the left. This is defensive programming: if you have a
typo in the test and miss a <code class="docutils literal notranslate"><span class="pre">!</span></code> or <code class="docutils literal notranslate"><span class="pre">=</span></code>, youll get a compiler error.
For example:</p>
<div class="highlight-c notranslate"><div class="highlight"><pre><span></span><span class="cm">/* Do this */</span>
<span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="nb">NULL</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="n">foo</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="p">...</span><span class="w"> </span><span class="p">}</span>
<span class="cm">/* Because if you have a typo (i.e., = instead of ==), this will</span>
<span class="cm"> be a compile error rather than a subtle bug */</span>
<span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="nb">NULL</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">foo</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="p">...</span><span class="w"> </span><span class="p">}</span>
</pre></div>
</div>
</li>
<li><p>More defensive programming: <em>always</em> include blocks in curly braces
<code class="docutils literal notranslate"><span class="pre">{</span> <span class="pre">}</span></code>, even if they are only one line long. For example:</p>
<div class="highlight-c notranslate"><div class="highlight"><pre><span></span><span class="cm">/* Do this */</span>
<span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">whatever</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">OMPI_SUCCESS</span><span class="p">;</span>
<span class="p">}</span>
<span class="cm">/* Not this */</span>
<span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">whatever</span><span class="p">)</span>
<span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">OMPI_SUCCESS</span><span class="p">;</span>
</pre></div>
</div>
</li>
<li><p>PMIx requires a C99-compliant compiler.</p>
<ul class="simple">
<li><p>C++-style comments are now allowed (and preferred).</p></li>
<li><p>C99-style mixing declarations are allow allowable (and preferred).</p></li>
</ul>
</li>
<li><p><strong>ALWAYS</strong> include <code class="docutils literal notranslate"><span class="pre">pmix_config.h</span></code> as your first #include file.
There are very, very few cases where
this is not true (E.g., some bizarre Windows scenarios). But in
99.9999% of cases, this file should be included <strong>first</strong> so that it
can affect system-level #include files if necessary.</p></li>
<li><p>Filenames and symbols must follow the <strong>prefix rule</strong> (see [e-mail
thread](<a class="reference external" href="http://www.open-mpi.org/community/lists/devel/2009/07/6389.php">http://www.open-mpi.org/community/lists/devel/2009/07/6389.php</a>)):</p>
<ul class="simple">
<li><p>Filenames must be prefixed with <code class="docutils literal notranslate"><span class="pre">&lt;framework&gt;_&lt;component&gt;</span></code>.</p></li>
<li><p>Public symbols must be prefixed in components with
<code class="docutils literal notranslate"><span class="pre">pmix_&lt;framework&gt;_&lt;component&gt;</span></code>. When in doubt about
whether a symbol is public, be safe and add the prefix.</p></li>
<li><p>Non-public symbols must be declared <code class="docutils literal notranslate"><span class="pre">static</span></code> or otherwise made to
not appear in the global scope.</p></li>
</ul>
</li>
<li><p><strong>ALWAYS</strong> #define macros, even for logical values.</p>
<ul>
<li><p>The GNU Way is to <code class="docutils literal notranslate"><span class="pre">#define</span></code> a macro when it is “true” and to
<code class="docutils literal notranslate"><span class="pre">#undef</span></code> it when it is “false”.</p></li>
<li><p>In PMIx, we <strong>always</strong> <code class="docutils literal notranslate"><span class="pre">#define</span></code> a logical macro to be
either 0 or 1 we never <code class="docutils literal notranslate"><span class="pre">#undef</span></code> it.</p></li>
<li><p>The reason for this is defensive programming: if you are only
checking if a preprocessor macro is defined (via <code class="docutils literal notranslate"><span class="pre">#ifdef</span> <span class="pre">FOO</span></code> or
<code class="docutils literal notranslate"><span class="pre">#if</span> <span class="pre">defined(FOO)</span></code>), you will get no warning when compiling if
you accidentally misspell the macro name. However, if you use the
logic test <code class="docutils literal notranslate"><span class="pre">#if</span> <span class="pre">FOO</span></code> with an undefined macro (e.g., because you
misspelled it), youll get a compiler warning or error.</p>
<div class="tip admonition">
<p class="admonition-title">Rationale</p>
<p>Misspelled macro names can be tremendously difficult to find
when they are buried in thousands of lines of code; we will
take all the help from the preprocessor/compiler that we can
get!</p>
</div>
</li>
</ul>
<div class="highlight-c notranslate"><div class="highlight"><pre><span></span><span class="cm">/* GNU Way - you will get no warning from the compiler if you</span>
<span class="cm"> misspell &quot;FOO&quot;; the test will simply be false */</span>
<span class="cp">#ifdef FOO</span>
<span class="p">...</span>
<span class="cp">#else</span>
<span class="p">...</span>
<span class="cp">#endif</span>
<span class="cm">/* PMIx Way - you will get a warning from the compiler if you</span>
<span class="cm"> misspell &quot;FOO&quot;; the result of the test is a different value</span>
<span class="cm"> than whether you spelled the macro name right or not */</span>
<span class="cp">#if FOO</span>
<span class="p">...</span>
<span class="cp">#else</span>
<span class="p">...</span>
<span class="cp">#endif</span>
</pre></div>
</div>
</li>
</ul>
</div>
<div class="section" id="shell-scripting">
<h3><span class="section-number">12.7.1.3. </span>Shell scripting<a class="headerlink" href="#shell-scripting" title="Permalink to this heading"></a></h3>
<p>Please read some of the existing shell code in the source code tree
and try to use a similar style.</p>
<ul>
<li><p>Always enclose evaluated shell variables in quotes to ensure that
multi-token values are handled properly.</p>
<div class="highlight-sh notranslate"><div class="highlight"><pre><span></span><span class="c1"># This is bad</span>
<span class="k">if</span><span class="w"> </span><span class="nb">test</span><span class="w"> </span><span class="nv">$foo</span><span class="w"> </span><span class="o">=</span><span class="w"> </span>bar<span class="p">;</span><span class="w"> </span><span class="k">then</span>
<span class="c1"># This is good</span>
<span class="k">if</span><span class="w"> </span><span class="nb">test</span><span class="w"> </span><span class="s2">&quot;</span><span class="nv">$foo</span><span class="s2">&quot;</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s2">&quot;bar&quot;</span><span class="p">;</span><span class="w"> </span><span class="k">then</span>
</pre></div>
</div>
<ul>
<li><p>The one exception to this is that when doing an assignment to a
shell variable from another shell variable, it is not necessary to
use quotes on the right hand side:</p>
<div class="highlight-sh notranslate"><div class="highlight"><pre><span></span><span class="c1"># This is harmless, but unnecessary</span>
<span class="nv">foo</span><span class="o">=</span><span class="s2">&quot;</span><span class="nv">$bar</span><span class="s2">&quot;</span>
<span class="c1"># This is actually sufficient, even for multi-token values of $bar</span>
<span class="nv">foo</span><span class="o">=</span><span class="nv">$bar</span>
</pre></div>
</div>
</li>
</ul>
</li>
<li><p>Do not use the <code class="docutils literal notranslate"><span class="pre">==</span></code> operator for <code class="docutils literal notranslate"><span class="pre">test</span></code> — this is a GNU
extension and can cause portability problems on BSD systems.
Instead, use the single <code class="docutils literal notranslate"><span class="pre">=</span></code> operator.</p>
<div class="highlight-sh notranslate"><div class="highlight"><pre><span></span><span class="c1"># This is bad</span>
<span class="k">if</span><span class="w"> </span><span class="nb">test</span><span class="w"> </span><span class="s2">&quot;</span><span class="nv">$foo</span><span class="s2">&quot;</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="s2">&quot;bar&quot;</span><span class="p">;</span><span class="w"> </span><span class="k">then</span>
<span class="c1"># This is good</span>
<span class="k">if</span><span class="w"> </span><span class="nb">test</span><span class="w"> </span><span class="s2">&quot;</span><span class="nv">$foo</span><span class="s2">&quot;</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s2">&quot;bar&quot;</span><span class="p">;</span><span class="w"> </span><span class="k">then</span>
</pre></div>
</div>
</li>
</ul>
</div>
<div class="section" id="m4">
<h3><span class="section-number">12.7.1.4. </span>m4<a class="headerlink" href="#m4" title="Permalink to this heading"></a></h3>
<p>We do not have specific coding style guidelines for m4 (the language
used to create the <code class="docutils literal notranslate"><span class="pre">configure</span></code> script). Please read some of the
existing m4 code in the source code tree and try to use a similar
style.</p>
</div>
</div>
<div class="section" id="tree-layout">
<h2><span class="section-number">12.7.2. </span>Tree layout<a class="headerlink" href="#tree-layout" title="Permalink to this heading"></a></h2>
<p>There are a few notable top-level directories in the source
tree:</p>
<ul class="simple">
<li><p>The main PMIx source is under the <code class="docutils literal notranslate"><span class="pre">src</span></code> directory</p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">config</span></code>: M4 scripts supporting the top-level <code class="docutils literal notranslate"><span class="pre">configure</span></code> script</p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">etc</span></code>: Some miscellaneous text files</p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">docs</span></code>: Source code for PMIx documentation</p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">examples</span></code>: Trivial example programs</p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">include</span></code>: The public PMIx headers</p></li>
</ul>
<p>The <code class="docutils literal notranslate"><span class="pre">src</span></code> directory generates a top-level library named <code class="docutils literal notranslate"><span class="pre">libpmix</span></code>.
It can be built as either a static or shared library. The directory
structure under it includes:</p>
<ul class="simple">
<li><p><code class="docutils literal notranslate"><span class="pre">class</span></code>: C++-like “classes” (using the OPAL class system)
specific to this project</p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">include</span></code>: Top-level internal include files</p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">mca</span></code>: MCA frameworks and components specific to PMIx</p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">runtime</span></code>: Startup and shutdown of PMIx at runtime</p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">tools</span></code>: Executables specific to PMIx</p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">util</span></code>: Random utility code</p></li>
</ul>
<p>The layout of the <code class="docutils literal notranslate"><span class="pre">mca</span></code> tree is strictly defined to be of the
form:</p>
<div class="highlight-text notranslate"><div class="highlight"><pre><span></span>mca/FRAMEWORK/COMPONENT
</pre></div>
</div>
<p>To be explicit: it is forbidden to have a directory under the <code class="docutils literal notranslate"><span class="pre">mca</span></code>
tree that does not meet this template (with the exception of <code class="docutils literal notranslate"><span class="pre">base</span></code>
directories, explained below). Hence, only framework and component
code can be in the <code class="docutils literal notranslate"><span class="pre">mca</span></code> tree.</p>
<p>That is, framework and component names must be valid directory names
(and C variables; more on that later). For example, the CLIENT PTL
component is located in <code class="docutils literal notranslate"><span class="pre">mca/ptl/client/</span></code>.</p>
<p>The name <code class="docutils literal notranslate"><span class="pre">base</span></code> is reserved; there cannot be a framework or component
named <code class="docutils literal notranslate"><span class="pre">base</span></code>. Directories named <code class="docutils literal notranslate"><span class="pre">base</span></code> are reserved for the
implementation of the MCA and frameworks. Here are a few examples (as
of the v5.0.x source tree):</p>
<div class="highlight-sh notranslate"><div class="highlight"><pre><span></span><span class="c1"># Main implementation of the MCA</span>
mca/base
<span class="c1"># Implementation of the ptl framework</span>
mca/ptl/base
<span class="c1"># Implementation of the client component of the ptl framework</span>
mca/ptl/client
</pre></div>
</div>
<p>Under these mandated directories, frameworks and/or components may have
arbitrary directory structures, however.</p>
</div>
<div class="section" id="symbol-visibility">
<h2><span class="section-number">12.7.3. </span>Symbol Visibility<a class="headerlink" href="#symbol-visibility" title="Permalink to this heading"></a></h2>
<p>The <code class="docutils literal notranslate"><span class="pre">PMIX_EXPORT</span></code> macro provides a method to annotate symbols to indicate
their intended visibility when compiling dynamically shared object files
(e.g., <code class="docutils literal notranslate"><span class="pre">libpmix.so</span></code>).</p>
<p>The macro expands to the appropriate compiler and platform flags for marking
whether a symbol should be explicitly made public in the PMIx
library namespace.
The <code class="docutils literal notranslate"><span class="pre">PMIX_EXPORT</span></code> attribute is used to declare that a symbol is to be
visible outside of the PMIx DSOs scope.</p>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>This is entirely related to dynamic library compilation and does not
apply to static compilation.</p>
</div>
</div>
</div>
</div>
</div>
<footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
<a href="terminology.html" class="btn btn-neutral float-left" title="12.6. OpenPMIx terminology" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
<a href="frameworks.html" class="btn btn-neutral float-right" title="12.8. Internal frameworks" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
</div>
<hr/>
<div role="contentinfo">
<p>&#169; Copyright 2014-2025, The OpenPMIx Community.</p>
</div>
Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
<a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
provided by <a href="https://readthedocs.org">Read the Docs</a>.
</footer>
</div>
</div>
</section>
</div>
<script>
jQuery(function () {
SphinxRtdTheme.Navigation.enable(true);
});
</script>
</body>
</html>

View File

@@ -0,0 +1,379 @@
<!DOCTYPE html>
<html class="writer-html5" lang="en">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>12.10. Installing and running Sphinx (building the OpenPMIx docs) &mdash; OpenPMIx 5.0.5 documentation</title>
<link rel="stylesheet" type="text/css" href="../_static/pygments.css" />
<link rel="stylesheet" type="text/css" href="../_static/css/theme.css" />
<!--[if lt IE 9]>
<script src="../_static/js/html5shiv.min.js"></script>
<![endif]-->
<script data-url_root="../" id="documentation_options" src="../_static/documentation_options.js"></script>
<script src="../_static/jquery.js"></script>
<script src="../_static/underscore.js"></script>
<script src="../_static/_sphinx_javascript_frameworks_compat.js"></script>
<script src="../_static/doctools.js"></script>
<script src="../_static/sphinx_highlight.js"></script>
<script src="../_static/js/theme.js"></script>
<link rel="index" title="Index" href="../genindex.html" />
<link rel="search" title="Search" href="../search.html" />
<link rel="next" title="12.11. ReStructured Text for those who know Markdown" href="rst-for-markdown-expats.html" />
<link rel="prev" title="12.9. Manually installing the GNU Autootools" href="gnu-autotools.html" />
</head>
<body class="wy-body-for-nav">
<div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="wy-side-scroll">
<div class="wy-side-nav-search" >
<a href="../index.html" class="icon icon-home">
OpenPMIx
</a>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="../search.html" method="get">
<input type="text" name="q" placeholder="Search docs" aria-label="Search docs" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
<ul class="current">
<li class="toctree-l1"><a class="reference internal" href="../quickstart.html">1. Quick start</a></li>
<li class="toctree-l1"><a class="reference internal" href="../getting-help.html">2. Getting help</a></li>
<li class="toctree-l1"><a class="reference internal" href="../release-notes/index.html">3. Release notes</a></li>
<li class="toctree-l1"><a class="reference internal" href="../exceptions.html">4. Exceptions to the PMIx Standard</a></li>
<li class="toctree-l1"><a class="reference internal" href="../installing-pmix/index.html">5. Building and installing PMIx</a></li>
<li class="toctree-l1"><a class="reference internal" href="../how-things-work/index.html">6. How Things Work</a></li>
<li class="toctree-l1"><a class="reference internal" href="../release-notes.html">7. Release Notes</a></li>
<li class="toctree-l1"><a class="reference internal" href="../history.html">8. History</a></li>
<li class="toctree-l1"><a class="reference internal" href="../versions.html">9. Version Numbers and Binary Compatibility</a></li>
<li class="toctree-l1"><a class="reference internal" href="../mca.html">10. The Modular Component Architecture (MCA)</a></li>
<li class="toctree-l1"><a class="reference internal" href="../building-apps/index.html">11. Building PMIx applications</a></li>
<li class="toctree-l1 current"><a class="reference internal" href="index.html">12. Developers guide</a><ul class="current">
<li class="toctree-l2"><a class="reference internal" href="prerequisites.html">12.1. Prerequisites</a></li>
<li class="toctree-l2"><a class="reference internal" href="git-github.html">12.2. GitHub, Git, and related topics</a></li>
<li class="toctree-l2"><a class="reference internal" href="compiler-pickyness.html">12.3. Compiler Pickyness by Default</a></li>
<li class="toctree-l2"><a class="reference internal" href="autogen.html">12.4. Running <code class="docutils literal notranslate"><span class="pre">autogen.pl</span></code></a></li>
<li class="toctree-l2"><a class="reference internal" href="building-pmix.html">12.5. Building PMIx</a></li>
<li class="toctree-l2"><a class="reference internal" href="terminology.html">12.6. OpenPMIx terminology</a></li>
<li class="toctree-l2"><a class="reference internal" href="source-code.html">12.7. Source code</a></li>
<li class="toctree-l2"><a class="reference internal" href="frameworks.html">12.8. Internal frameworks</a></li>
<li class="toctree-l2"><a class="reference internal" href="gnu-autotools.html">12.9. Manually installing the GNU Autootools</a></li>
<li class="toctree-l2 current"><a class="current reference internal" href="#">12.10. Installing and running Sphinx (building the OpenPMIx docs)</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#installing-python">12.10.1. Installing Python</a></li>
<li class="toctree-l3"><a class="reference internal" href="#installing-sphinx">12.10.2. Installing Sphinx</a><ul>
<li class="toctree-l4"><a class="reference internal" href="#install-sphinx-in-a-python-virtual-environment">12.10.2.1. Install Sphinx in a Python virtual environment</a></li>
<li class="toctree-l4"><a class="reference internal" href="#install-sphinx-globally">12.10.2.2. Install Sphinx globally</a></li>
<li class="toctree-l4"><a class="reference internal" href="#install-sphinx-locally">12.10.2.3. Install Sphinx locally</a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="#running-sphinx">12.10.3. Running Sphinx</a><ul>
<li class="toctree-l4"><a class="reference internal" href="#sphinx-execution-time">12.10.3.1. Sphinx execution time</a></li>
<li class="toctree-l4"><a class="reference internal" href="#checking-sphinx-html-links">12.10.3.2. Checking Sphinx HTML links</a></li>
<li class="toctree-l4"><a class="reference internal" href="#viewing-docs-locally">12.10.3.3. Viewing docs locally</a></li>
</ul>
</li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="rst-for-markdown-expats.html">12.11. ReStructured Text for those who know Markdown</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../contributing.html">13. Contributing to OpenPMIx</a></li>
<li class="toctree-l1"><a class="reference internal" href="../license.html">14. License</a></li>
<li class="toctree-l1"><a class="reference internal" href="../security.html">15. OpenPMIx Security Policy</a></li>
<li class="toctree-l1"><a class="reference internal" href="../news/index.html">16. News</a></li>
<li class="toctree-l1"><a class="reference internal" href="../man/index.html">17. OpenPMIx manual pages</a></li>
</ul>
</div>
</div>
</nav>
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" >
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="../index.html">OpenPMIx</a>
</nav>
<div class="wy-nav-content">
<div class="rst-content">
<div role="navigation" aria-label="Page navigation">
<ul class="wy-breadcrumbs">
<li><a href="../index.html" class="icon icon-home" aria-label="Home"></a></li>
<li class="breadcrumb-item"><a href="index.html"><span class="section-number">12. </span>Developers guide</a></li>
<li class="breadcrumb-item active"><span class="section-number">12.10. </span>Installing and running Sphinx (building the OpenPMIx docs)</li>
<li class="wy-breadcrumbs-aside">
<a href="../_sources/developers/sphinx.rst.txt" rel="nofollow"> View page source</a>
</li>
</ul>
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
<style>
.wy-table-responsive table td,.wy-table-responsive table th{white-space:normal}
</style><div class="section" id="installing-and-running-sphinx-building-the-openpmix-docs">
<span id="developers-installing-sphinx-label"></span><h1><span class="section-number">12.10. </span>Installing and running Sphinx (building the OpenPMIx docs)<a class="headerlink" href="#installing-and-running-sphinx-building-the-openpmix-docs" title="Permalink to this heading"></a></h1>
<p>As with all content in the Developers Guide, this section is only
relevant for developers who work in the OpenPMIx code base itself.
End users who install a binary OpenPMIx package or build from an
official OpenPMIx distribution tarball do not need to have Sphinx
installed.</p>
<div class="section" id="installing-python">
<h2><span class="section-number">12.10.1. </span>Installing Python<a class="headerlink" href="#installing-python" title="Permalink to this heading"></a></h2>
<p>The <a class="reference external" href="https://www.sphinx-doc.org/">Sphinx tool</a> is written in Python,
and therefore needs to have Python available. As of late 2022, Sphinx
requires Python &gt;= v3.7.</p>
<p>This documentation does not contain detailed instructions for
installing a Python version sufficient for using Sphinx. Consult your
local OS documentation for how to obtain Python &gt;= v3.7, or search the
internet for further information.</p>
</div>
<div class="section" id="installing-sphinx">
<h2><span class="section-number">12.10.2. </span>Installing Sphinx<a class="headerlink" href="#installing-sphinx" title="Permalink to this heading"></a></h2>
<p><a class="reference external" href="https://www.sphinx-doc.org/en/master/usage/installation.html">The Sphinx documentation</a>
recommends installing Sphinx (and its required Python dependencies)
via <code class="docutils literal notranslate"><span class="pre">pip</span></code>, which typically requires connectivity to the general
internet.</p>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>If you are running on MacOS, you may be tempted to use
Homebrew or MacPorts to install Sphinx. The Sphinx documentation
recommends <strong>against</strong> this. Instead, you should use <code class="docutils literal notranslate"><span class="pre">pip</span></code> to
install Sphinx.</p>
</div>
<p>There are three general ways to install Sphinx; you only need one of
them.</p>
<div class="section" id="install-sphinx-in-a-python-virtual-environment">
<h3><span class="section-number">12.10.2.1. </span>Install Sphinx in a Python virtual environment<a class="headerlink" href="#install-sphinx-in-a-python-virtual-environment" title="Permalink to this heading"></a></h3>
<p>The preferred method of installing Sphinx for OpenPMIx documentation
development is to install Sphinx in a Python virtual environment.
This places Sphinx in a sandbox that will not conflict with other
<code class="docutils literal notranslate"><span class="pre">pip</span></code>-installed Python modules. This example installs Sphinx and
other Python modules in the <code class="docutils literal notranslate"><span class="pre">ompi-docs-venv</span></code> tree under your OpenPMIx
Git clone directory:</p>
<div class="highlight-sh notranslate"><div class="highlight"><pre><span></span><span class="c1"># Create the Python virtual environment</span>
shell$<span class="w"> </span><span class="nb">cd</span><span class="w"> </span>TOP_OF_OpenPMIx_GIT_CLONE
shell$<span class="w"> </span>python3<span class="w"> </span>-m<span class="w"> </span>venv<span class="w"> </span>ompi-docs-venv
<span class="c1"># Or: python3 -m virtualenv ompi-docs-venv</span>
<span class="c1"># Or: virtualenv --python=python3 ompi-docs-venv</span>
<span class="c1"># Activate the virtual environment</span>
shell$<span class="w"> </span>.<span class="w"> </span>./ompi-docs-venv/bin/activate
<span class="c1"># Notice that the shell prompt changes</span>
<span class="c1"># Now install the required Python modules</span>
<span class="o">(</span>ompi-docs-venv<span class="o">)</span><span class="w"> </span>shell$<span class="w"> </span>pip3<span class="w"> </span>install<span class="w"> </span>-r<span class="w"> </span>docs/requirements.txt
<span class="c1"># Or: python3 -m pip install install -r docs/requirements.txt</span>
</pre></div>
</div>
<p>Note that sourcing the <code class="docutils literal notranslate"><span class="pre">activate</span></code> script will change your prompt to
put the name of your virtual environment directory at the front, just
as a visual reminder that you are operating in a Python virtual
environment. You can run <code class="docutils literal notranslate"><span class="pre">deactivate</span></code> to leave the virtual
environment.</p>
<div class="admonition important">
<p class="admonition-title">Important</p>
<p>You will need to source the <code class="docutils literal notranslate"><span class="pre">activate</span></code> script to put
Sphinx in your <code class="docutils literal notranslate"><span class="pre">PATH</span></code> <em>before</em> running <code class="docutils literal notranslate"><span class="pre">configure</span></code>.</p>
</div>
</div>
<div class="section" id="install-sphinx-globally">
<h3><span class="section-number">12.10.2.2. </span>Install Sphinx globally<a class="headerlink" href="#install-sphinx-globally" title="Permalink to this heading"></a></h3>
<p>If Python virtual environments are not desirable on your system, you
can install Sphinx globally on your system (you may need to run with
root privileges):</p>
<div class="highlight-sh notranslate"><div class="highlight"><pre><span></span>shell$<span class="w"> </span><span class="nb">cd</span><span class="w"> </span>TOP_OF_OpenPMIx_GIT_CLONE
shell$<span class="w"> </span>pip3<span class="w"> </span>install<span class="w"> </span>-r<span class="w"> </span>docs/requirements.txt
<span class="c1"># Or: python3 -m pip install install -r docs/requirements.txt</span>
</pre></div>
</div>
<p>This will install Sphinx and some Python modules required for building
the OpenPMIx documentation in a system-wide location.</p>
<p>This will likely install the <code class="docutils literal notranslate"><span class="pre">sphinx-build</span></code> executable in a location
that is already in your <code class="docutils literal notranslate"><span class="pre">PATH</span></code>. If the location is not already in
your <code class="docutils literal notranslate"><span class="pre">PATH</span></code>, then you need to add it to your <code class="docutils literal notranslate"><span class="pre">PATH</span></code>.</p>
<div class="admonition important">
<p class="admonition-title">Important</p>
<p>You will need to ensure that Sphinx is in your <code class="docutils literal notranslate"><span class="pre">PATH</span></code>
<em>before</em> running <code class="docutils literal notranslate"><span class="pre">configure</span></code>.</p>
</div>
</div>
<div class="section" id="install-sphinx-locally">
<h3><span class="section-number">12.10.2.3. </span>Install Sphinx locally<a class="headerlink" href="#install-sphinx-locally" title="Permalink to this heading"></a></h3>
<p>If you cannot or do not want to install Sphinx globally on your
system, the following will install Sphinx somewhere under your
<code class="docutils literal notranslate"><span class="pre">$HOME</span></code>. It is the same <code class="docutils literal notranslate"><span class="pre">pip</span></code> command as shown above, but with
the addition of the <code class="docutils literal notranslate"><span class="pre">--user</span></code> flag (you should not need <code class="docutils literal notranslate"><span class="pre">root</span></code>
permissions to run this command):</p>
<div class="highlight-sh notranslate"><div class="highlight"><pre><span></span>shell$<span class="w"> </span><span class="nb">cd</span><span class="w"> </span>TOP_OF_OpenPMIx_GIT_CLONE
shell$<span class="w"> </span>pip3<span class="w"> </span>install<span class="w"> </span>--user<span class="w"> </span>-r<span class="w"> </span>docs/requirements.txt
<span class="c1"># Or: python3 -m pip install install -r docs/requirements.txt</span>
</pre></div>
</div>
<p>This will install Sphinx and some Python modules required for building
the OpenPMIx documentation in a system-wide location.</p>
<p>You will likely need to find the location where <code class="docutils literal notranslate"><span class="pre">sphinx-build</span></code> was
installed and add it to your <code class="docutils literal notranslate"><span class="pre">PATH</span></code>.</p>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>On MacOS, look for <code class="docutils literal notranslate"><span class="pre">sphinx-build</span></code> under
<code class="docutils literal notranslate"><span class="pre">$HOME/Library/Python/VERSION/bin</span></code> (where <code class="docutils literal notranslate"><span class="pre">VERSION</span></code> is
the version number of Python). Or it may have installed to
<code class="docutils literal notranslate"><span class="pre">/usr/local/bin/sphinx-build</span></code>. YMMV.</p>
</div>
<div class="admonition important">
<p class="admonition-title">Important</p>
<p>You will need to ensure that Sphinx is in your <code class="docutils literal notranslate"><span class="pre">PATH</span></code>
<em>before</em> running <code class="docutils literal notranslate"><span class="pre">configure</span></code>.</p>
</div>
</div>
</div>
<div class="section" id="running-sphinx">
<h2><span class="section-number">12.10.3. </span>Running Sphinx<a class="headerlink" href="#running-sphinx" title="Permalink to this heading"></a></h2>
<p>OpenPMIxs build environment is setup to invoke Sphinx automatically;
you should not need to invoke Sphinx manually.</p>
<div class="admonition important">
<p class="admonition-title">Important</p>
<p>You will need to ensure that Sphinx is in your <code class="docutils literal notranslate"><span class="pre">PATH</span></code>
<em>before</em> running <code class="docutils literal notranslate"><span class="pre">configure</span></code>.</p>
</div>
<p>As long as <code class="docutils literal notranslate"><span class="pre">configure</span></code> found Sphinx, <code class="docutils literal notranslate"><span class="pre">make</span></code> will invoke Sphinx to
build the documentation. You can also run <code class="docutils literal notranslate"><span class="pre">make</span></code> directly in the
<code class="docutils literal notranslate"><span class="pre">docs/</span></code> directory to build <em>just</em> the docs and skip building the
rest of the OpenPMIx software. This can be a huge time-saver when
iteratively writing, rendering, and viewing/proofing documentation.</p>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>The fully-built HTML and man page docs are included in
official OpenPMIx distribution tarballs. Meaning: if you
download an official distribution OpenPMIx tarball,
the pre-built HTML and man page files are included
in the tarball.</p>
<p>Sphinx is a requirement for <em>developers</em> who want to build
the OpenPMIx docs. End users do <em>not</em> need to have Sphinx
available to build OpenPMIx or have its docs installed from
an official distribution tarball.</p>
</div>
<div class="section" id="sphinx-execution-time">
<h3><span class="section-number">12.10.3.1. </span>Sphinx execution time<a class="headerlink" href="#sphinx-execution-time" title="Permalink to this heading"></a></h3>
<p>Sphinx is stateful: subsequent runs can be significantly faster
because Sphinx will only re-render HTML files that have changes. This
is a nice time saver for OpenPMIx (e.g., if you are iterating over
writing the docs and running <code class="docutils literal notranslate"><span class="pre">make</span></code> to see how they rendered in
HTML).</p>
<div class="admonition caution">
<p class="admonition-title">Caution</p>
<p>Sphinx is only <em>somewhat</em> smart in its partial
re-rendering. If you change a title in an RST file, for
example, Sphinx will (by default) only re-render <em>that</em>
page. The Tables of Contents / left hand navigation on
other pages may not be updated.</p>
<p>You can always force a full re-render via:</p>
<div class="highlight-sh notranslate"><div class="highlight"><pre><span></span>shell$<span class="w"> </span><span class="nb">cd</span><span class="w"> </span>docs
shell$<span class="w"> </span>rm<span class="w"> </span>-rf<span class="w"> </span>_build
shell$<span class="w"> </span>make
</pre></div>
</div>
</div>
</div>
<div class="section" id="checking-sphinx-html-links">
<h3><span class="section-number">12.10.3.2. </span>Checking Sphinx HTML links<a class="headerlink" href="#checking-sphinx-html-links" title="Permalink to this heading"></a></h3>
<p><code class="docutils literal notranslate"><span class="pre">make</span> <span class="pre">linkcheck</span></code> will invoke Sphinxs functionality to check all the
external links in the documentation:</p>
<div class="highlight-sh notranslate"><div class="highlight"><pre><span></span>shell$<span class="w"> </span><span class="nb">cd</span><span class="w"> </span>docs
shell$<span class="w"> </span>make<span class="w"> </span>linkcheck
</pre></div>
</div>
<div class="admonition important">
<p class="admonition-title">Important</p>
<p>You will need to be on a computer that has good access
to the internet when running this command.</p>
</div>
</div>
<div class="section" id="viewing-docs-locally">
<h3><span class="section-number">12.10.3.3. </span>Viewing docs locally<a class="headerlink" href="#viewing-docs-locally" title="Permalink to this heading"></a></h3>
<p>Once you have built the docs in your local Git clone, you can view
them locally in the build tree:</p>
<ol class="arabic">
<li><p>Open <code class="docutils literal notranslate"><span class="pre">docs/_build/html/index.html</span></code> in a browser to view the HTML
docs. For example, on MacOS, the following command opens the build
tree docs in the default web browser:</p>
<div class="highlight-sh notranslate"><div class="highlight"><pre><span></span>shell$<span class="w"> </span>open<span class="w"> </span>docs/_build/html/index.html
</pre></div>
</div>
</li>
<li><p>Use the <code class="docutils literal notranslate"><span class="pre">man</span></code> command to view the Nroff files in
<code class="docutils literal notranslate"><span class="pre">docs/_build/man</span></code> (you may need to use an absolute or relative
filename to prevent <code class="docutils literal notranslate"><span class="pre">man</span></code> from using its search paths). For
example:</p>
<div class="highlight-sh notranslate"><div class="highlight"><pre><span></span>shell$<span class="w"> </span><span class="nb">cd</span><span class="w"> </span>docs/_build/man
shell$<span class="w"> </span>man<span class="w"> </span>./PMIx_Abort.3
</pre></div>
</div>
</li>
</ol>
<p>Alternatively, you can view these files in their installed locations
after running <code class="docutils literal notranslate"><span class="pre">make</span> <span class="pre">install</span></code>:</p>
<ol class="arabic">
<li><p>The HTML docs are installed (by default) to
<code class="docutils literal notranslate"><span class="pre">$prefix/share/doc/pmix/html</span></code>. You can use a web browser to
open the <code class="docutils literal notranslate"><span class="pre">index.html</span></code> in that directory to view the docs locally.
For example, on MacOS, the following command opens the installed
docs in the default web browser:</p>
<div class="highlight-sh notranslate"><div class="highlight"><pre><span></span>shell$<span class="w"> </span>open<span class="w"> </span><span class="nv">$prefix</span>/share/doc/pmix/html/index.html
</pre></div>
</div>
</li>
<li><p>The man pages are installed (by default) to <code class="docutils literal notranslate"><span class="pre">$preix/share/man</span></code>.
If your man page search path includes this location, you can invoke
commands similar to the following to see the same content that you
see in these HTML pages:</p>
<div class="highlight-sh notranslate"><div class="highlight"><pre><span></span>shell$<span class="w"> </span>man<span class="w"> </span>PMIx_Abort
</pre></div>
</div>
</li>
</ol>
</div>
</div>
</div>
</div>
</div>
<footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
<a href="gnu-autotools.html" class="btn btn-neutral float-left" title="12.9. Manually installing the GNU Autootools" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
<a href="rst-for-markdown-expats.html" class="btn btn-neutral float-right" title="12.11. ReStructured Text for those who know Markdown" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
</div>
<hr/>
<div role="contentinfo">
<p>&#169; Copyright 2014-2025, The OpenPMIx Community.</p>
</div>
Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
<a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
provided by <a href="https://readthedocs.org">Read the Docs</a>.
</footer>
</div>
</div>
</section>
</div>
<script>
jQuery(function () {
SphinxRtdTheme.Navigation.enable(true);
});
</script>
</body>
</html>

View File

@@ -0,0 +1,192 @@
<!DOCTYPE html>
<html class="writer-html5" lang="en">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>12.6. OpenPMIx terminology &mdash; OpenPMIx 5.0.5 documentation</title>
<link rel="stylesheet" type="text/css" href="../_static/pygments.css" />
<link rel="stylesheet" type="text/css" href="../_static/css/theme.css" />
<!--[if lt IE 9]>
<script src="../_static/js/html5shiv.min.js"></script>
<![endif]-->
<script data-url_root="../" id="documentation_options" src="../_static/documentation_options.js"></script>
<script src="../_static/jquery.js"></script>
<script src="../_static/underscore.js"></script>
<script src="../_static/_sphinx_javascript_frameworks_compat.js"></script>
<script src="../_static/doctools.js"></script>
<script src="../_static/sphinx_highlight.js"></script>
<script src="../_static/js/theme.js"></script>
<link rel="index" title="Index" href="../genindex.html" />
<link rel="search" title="Search" href="../search.html" />
<link rel="next" title="12.7. Source code" href="source-code.html" />
<link rel="prev" title="12.5. Building PMIx" href="building-pmix.html" />
</head>
<body class="wy-body-for-nav">
<div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="wy-side-scroll">
<div class="wy-side-nav-search" >
<a href="../index.html" class="icon icon-home">
OpenPMIx
</a>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="../search.html" method="get">
<input type="text" name="q" placeholder="Search docs" aria-label="Search docs" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
<ul class="current">
<li class="toctree-l1"><a class="reference internal" href="../quickstart.html">1. Quick start</a></li>
<li class="toctree-l1"><a class="reference internal" href="../getting-help.html">2. Getting help</a></li>
<li class="toctree-l1"><a class="reference internal" href="../release-notes/index.html">3. Release notes</a></li>
<li class="toctree-l1"><a class="reference internal" href="../exceptions.html">4. Exceptions to the PMIx Standard</a></li>
<li class="toctree-l1"><a class="reference internal" href="../installing-pmix/index.html">5. Building and installing PMIx</a></li>
<li class="toctree-l1"><a class="reference internal" href="../how-things-work/index.html">6. How Things Work</a></li>
<li class="toctree-l1"><a class="reference internal" href="../release-notes.html">7. Release Notes</a></li>
<li class="toctree-l1"><a class="reference internal" href="../history.html">8. History</a></li>
<li class="toctree-l1"><a class="reference internal" href="../versions.html">9. Version Numbers and Binary Compatibility</a></li>
<li class="toctree-l1"><a class="reference internal" href="../mca.html">10. The Modular Component Architecture (MCA)</a></li>
<li class="toctree-l1"><a class="reference internal" href="../building-apps/index.html">11. Building PMIx applications</a></li>
<li class="toctree-l1 current"><a class="reference internal" href="index.html">12. Developers guide</a><ul class="current">
<li class="toctree-l2"><a class="reference internal" href="prerequisites.html">12.1. Prerequisites</a></li>
<li class="toctree-l2"><a class="reference internal" href="git-github.html">12.2. GitHub, Git, and related topics</a></li>
<li class="toctree-l2"><a class="reference internal" href="compiler-pickyness.html">12.3. Compiler Pickyness by Default</a></li>
<li class="toctree-l2"><a class="reference internal" href="autogen.html">12.4. Running <code class="docutils literal notranslate"><span class="pre">autogen.pl</span></code></a></li>
<li class="toctree-l2"><a class="reference internal" href="building-pmix.html">12.5. Building PMIx</a></li>
<li class="toctree-l2 current"><a class="current reference internal" href="#">12.6. OpenPMIx terminology</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#modular-component-architecture-mca">12.6.1. Modular Component Architecture (MCA)</a></li>
<li class="toctree-l3"><a class="reference internal" href="#required-3rd-party-libraries">12.6.2. Required 3rd party libraries</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="source-code.html">12.7. Source code</a></li>
<li class="toctree-l2"><a class="reference internal" href="frameworks.html">12.8. Internal frameworks</a></li>
<li class="toctree-l2"><a class="reference internal" href="gnu-autotools.html">12.9. Manually installing the GNU Autootools</a></li>
<li class="toctree-l2"><a class="reference internal" href="sphinx.html">12.10. Installing and running Sphinx (building the OpenPMIx docs)</a></li>
<li class="toctree-l2"><a class="reference internal" href="rst-for-markdown-expats.html">12.11. ReStructured Text for those who know Markdown</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../contributing.html">13. Contributing to OpenPMIx</a></li>
<li class="toctree-l1"><a class="reference internal" href="../license.html">14. License</a></li>
<li class="toctree-l1"><a class="reference internal" href="../security.html">15. OpenPMIx Security Policy</a></li>
<li class="toctree-l1"><a class="reference internal" href="../news/index.html">16. News</a></li>
<li class="toctree-l1"><a class="reference internal" href="../man/index.html">17. OpenPMIx manual pages</a></li>
</ul>
</div>
</div>
</nav>
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" >
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="../index.html">OpenPMIx</a>
</nav>
<div class="wy-nav-content">
<div class="rst-content">
<div role="navigation" aria-label="Page navigation">
<ul class="wy-breadcrumbs">
<li><a href="../index.html" class="icon icon-home" aria-label="Home"></a></li>
<li class="breadcrumb-item"><a href="index.html"><span class="section-number">12. </span>Developers guide</a></li>
<li class="breadcrumb-item active"><span class="section-number">12.6. </span>OpenPMIx terminology</li>
<li class="wy-breadcrumbs-aside">
<a href="../_sources/developers/terminology.rst.txt" rel="nofollow"> View page source</a>
</li>
</ul>
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
<style>
.wy-table-responsive table td,.wy-table-responsive table th{white-space:normal}
</style><div class="section" id="openpmix-terminology">
<h1><span class="section-number">12.6. </span>OpenPMIx terminology<a class="headerlink" href="#openpmix-terminology" title="Permalink to this heading"></a></h1>
<p>OpenPMIx is a medium-sized project containing a number of different sub-systems and
a relatively big code base. Lets first cover some fundamental
terminology in order to make the rest of the discussion easier.</p>
<p>First, note that you will see <code class="docutils literal notranslate"><span class="pre">OpenPMIx</span></code> frequently referred to
as just <code class="docutils literal notranslate"><span class="pre">PMIx</span></code>. While there is a separate PMIx Standard, there
are (as of this writing) no alternative implementations of that
Standard. In fact, the Standard post-dates the library by several
years, and often lags behind the library in terms of new definitions.
Thus, it is customary to refer to the library as just <code class="docutils literal notranslate"><span class="pre">PMIx</span></code> and
drop the longer name - at least, until some other implementation
arises (which many consider unlikely).</p>
<div class="section" id="modular-component-architecture-mca">
<h2><span class="section-number">12.6.1. </span>Modular Component Architecture (MCA)<a class="headerlink" href="#modular-component-architecture-mca" title="Permalink to this heading"></a></h2>
<p><a class="reference internal" href="../mca.html#label-mca"><span class="std std-ref">See this section</span></a> for a discussion of the Modular
Component Architecture (MCA). Seriously. Go read it now. From
reading that section, you should understand the following terms before
continuing reading these docs:</p>
<ul class="simple">
<li><p>Framework</p></li>
<li><p>Component</p></li>
<li><p>Module</p></li>
<li><p>Parameters (variables)</p></li>
</ul>
<p>Frameworks, components, and modules can be dynamic or static. That is,
they can be available as plugins or they may be compiled statically
into libraries (e.g., <code class="docutils literal notranslate"><span class="pre">libpmix</span></code>).</p>
<p>In PMIx, <code class="docutils literal notranslate"><span class="pre">configure</span></code> defaults to:</p>
<ul class="simple">
<li><p>Building <code class="docutils literal notranslate"><span class="pre">libpmix</span></code> as a dynamic library</p></li>
<li><p>Linking all components directly into the <code class="docutils literal notranslate"><span class="pre">libpmix</span></code> libraries
(vs. compiling them as independent DSOs)</p></li>
</ul>
<p>These defaults can be modified by <a class="reference internal" href="../installing-pmix/configure-cli-options/index.html"><span class="doc">command line
arguments to configure</span></a>.</p>
</div>
<div class="section" id="required-3rd-party-libraries">
<h2><span class="section-number">12.6.2. </span>Required 3rd party libraries<a class="headerlink" href="#required-3rd-party-libraries" title="Permalink to this heading"></a></h2>
<p>Note that PMIx uses two third-party libraries for core
functionality:</p>
<ul class="simple">
<li><p>Libevent or Libev</p></li>
<li><p>Hardware Locality (“hwloc”)</p></li>
</ul>
<p>These are discussed in detail in the <a class="reference internal" href="../installing-pmix/required-support-libraries.html#label-install-required-support-libraries"><span class="std std-ref">required support libraries
section</span></a>.</p>
</div>
</div>
</div>
</div>
<footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
<a href="building-pmix.html" class="btn btn-neutral float-left" title="12.5. Building PMIx" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
<a href="source-code.html" class="btn btn-neutral float-right" title="12.7. Source code" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
</div>
<hr/>
<div role="contentinfo">
<p>&#169; Copyright 2014-2025, The OpenPMIx Community.</p>
</div>
Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
<a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
provided by <a href="https://readthedocs.org">Read the Docs</a>.
</footer>
</div>
</div>
</section>
</div>
<script>
jQuery(function () {
SphinxRtdTheme.Navigation.enable(true);
});
</script>
</body>
</html>