This procedure is ONLY necessary if you are building from a Git clone of the PMIx repository. If you have a PMIx distribution tarball, this procedure is unnecessary – you can (and should) skip reading this section.
If you are building PMIx from a repository clone, you must first install fairly recent versions of the GNU tools Autoconf, Automake, and Libtool (and possibly GNU m4, because recent versions of Autoconf have specific GNU m4 version requirements). 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
To strengthen the above 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 tools.
If you need newer versions, you are strongly encouraged to heed the following advice:
NOTE: On MacOS/X, the default “libtool” program is different than the GNU libtool. You must download and install the GNU version (e.g., via MacPorts, Homebrew, or some other mechanism).
and if you need it: - ftp://ftp.gnu.org/gnu/m4/
NOTE: 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.
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 (.bashrc, .cshrc, .tcshrc, etc.) to have something like:
# For bash/sh: export PATH=$HOME/local/bin:$PATH # For csh/tcsh: set path = ($HOME/local/bin $path)
All four packages require two simple commands to build and install (where PREFIX is the prefix discussed in 3, above).
shell$ cd m4-1.4.13 shell$ ./configure –prefix=PREFIX shell$ make; make install
shell$ cd ../autoconf-2.68 shell$ ./configure –prefix=PREFIX shell$ make; make install
shell$ cd ../automake-1.11.1 shell$ ./configure –prefix=PREFIX shell$ make; make install
shell$ cd ../libtool-2.2.8 shell$ ./configure –prefix=PREFIX shell$ make; make install
m4, Autoconf and Automake build and install very quickly; Libtool will take a minute or two.
- You generally need to run autogen.pl only when the top-level file "configure.ac" changes, any files in the config directory change, or any .m4 file in a plugin directory changes. - You **do NOT** need to re-run autogen.pl if you modify a Makefile.am.
Flex may be used during the compilation of a developer’s checkout (it is not used to build official distribution tarballs). Other flavors of lex are not supported: given the choice of making parsing code portable between all flavors of lex and doing more interesting work on PMIx, we greatly prefer the latter.
Note that no testing has been performed to see what the minimum version of Flex is required by PMIx. We suggest that you use v2.5.35 at the earliest.
Note that the flex-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.
If you do not have Flex installed, it can be downloaded from the Flex site