12.9. Manually installing the GNU Autootools
There is enough detail in building the GNU Autotools that it warrants its own section.
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 not need to have the GNU Autotools installed.
12.9.1. Use a package manager
It is recommended that you use your Linux distribution’s package manager, or Homebrew or MacPorts on macOS to install recent versions of GNU Autoconf, Automake, and Libtool.
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).
12.9.2. Autotools versions
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):
The above table lists the versions that are used to make official release PMIx tarballs. Other versions of the tools may 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.
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).
You will have problems if you do not use recent versions of the GNU Autotools.
That being said,
configure.ac 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).
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.
Using older versions is unsupported. If you run into problems, upgrade to at least the versions listed above.
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.
12.9.3. Checking your versions
You can check what versions of the Autotools you have installed with the following:
shell$ m4 --version shell$ autoconf --version shell$ automake --version shell$ libtoolize --version
12.9.4. Installing the GNU Autotools from source
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 can’t use your operating system packaging system to install them for you.
The GNU Autotools sources can be can be downloaded from:
And if you need it: https://ftp.gnu.org/gnu/m4/
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 need to actually install a new version of GNU m4. That being said, if you are confused or don’t know, just install the latest GNU m4 with the rest of the GNU Autotools and everything will work out fine.
12.9.5. Build and install ordering
You must build and install the GNU Autotools in the following order:
You must install the last three tools (Autoconf, Automake, Libtool) into the same prefix directory. These three tools are somewhat inter-related, and if they’re going to be used together, they must share a common installation prefix.
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.
It is strongly encouraged that you do not install
your new versions over the OS-installed versions. This could cause
other things on your system to break. Instead, install into
/usr/local, or wherever else you tend to
install “local” kinds of software.
In doing so, be sure to prefix your
$PATH with the directory
where they are installed. For example, if you install into
$HOME/local, you may want to edit your shell startup file
.tcshrc, etc.) to have something
# For bash/sh: export PATH=$HOME/local/bin:$PATH # For csh/tcsh: set path = ($HOME/local/bin $path)
Ensure to set your
$PATH before you configure/build/install
the four packages.
All four packages require two simple commands to build and install:
shell$ cd M4_DIRECTORY shell$ ./configure --prefix=PREFIX shell$ make all install
If you are using a shell that does not automatically
$PATH (e.g., the
shells), be sure to run the
rehash command before
you install the next package so that the executables
that were just installed can be found by the next
# Make $PATH be re-indexed if necessary, e.g., via "rehash" shell$ cd AUTOCONF_DIRECTORY shell$ ./configure --prefix=PREFIX shell$ make all install
# Make $PATH be re-indexed if necessary, e.g., via "rehash" shell$ cd AUTOMAKE_DIRECTORY shell$ ./configure --prefix=PREFIX shell$ make all install
# Make $PATH be re-indexed if necessary, e.g., via "rehash" shell$ cd LIBTOOL_DIRECTORY shell$ ./configure --prefix=PREFIX shell$ make all install