1
1

Per discussion on the OMPI teleconf this morning:

* Remove the check for a specific m4 version.  We don't require it.
   Autoconf requires a specific version of m4, but we don't.
 * Reduce flex min version to 2.5.4
 * Update a bunch of language in HACKING, including:
   * General text updates
   * OMPI doesn't require a specific m4; Autoconf does
   * Soften language about flex version
   * Reserve the right to upgrade min flex version to 2.5.35 someday

This commit was SVN r27647.
This commit is contained in:
Jeff Squyres 2012-11-27 18:09:35 +00:00
parent 9355d431cc
commit 7f1f857359
2 changed files with 50 additions and 34 deletions

78
HACKING
View File

@ -8,7 +8,7 @@ Copyright (c) 2004-2005 High Performance Computing Center Stuttgart,
University of Stuttgart. All rights reserved.
Copyright (c) 2004-2005 The Regents of the University of California.
All rights reserved.
Copyright (c) 2008-2010 Cisco Systems, Inc. All rights reserved.
Copyright (c) 2008-2012 Cisco Systems, Inc. All rights reserved.
$COPYRIGHT$
Additional copyrights may follow
@ -82,8 +82,8 @@ developer's checkout, you have three main options:
shell$ make all install
Use of GNU m4, Autoconf, Automake, and Libtool
==============================================
Use of GNU Autoconf, Automake, and Libtool (and m4)
===================================================
This procedure is *ONLY* necessary if you are building from a
developer's tree. If you have an Open MPI distribution tarball, this
@ -91,10 +91,12 @@ procedure is unnecessary -- you can (and should) skip reading this
section.
If you are building Open MPI from a developer's tree, you must first
install fairly recent versions of the GNU tools m4, Autoconf, Automake,
and Libtool. The specific versions required depend on if you are
using the trunk or a release branch (and which release branch you are
using). The specific versions can be found at:
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). The specific versions
required depend on if you are using the trunk or a release branch (and
which release branch you are using). The specific versions can be
found at:
http://www.open-mpi.org/svn/building.php
@ -117,16 +119,25 @@ 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 (via
Fink or any other mechanism).
GNU libtool. You must download and install the GNU version
(e.g., via MacPorts, Homebrew, or some other mechanism).
1. Unless your OS distribution has easy-to-use binary installations,
the sources can be can be downloaded from:
ftp://ftp.gnu.org/gnu/m4/
ftp://ftp.gnu.org/gnu/autoconf/
ftp://ftp.gnu.org/gnu/automake/
ftp://ftp.gnu.org/gnu/libtool/
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 Open MPI 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.
2. Build and install the tools in the following order:
@ -138,9 +149,11 @@ NOTE: On MacOS/X, the default "libtool" program is different than the
3. 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 instal the same prefix as the other three.
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.
3a. It is *strongly* encouraged that you do not install your new
versions over the OS-installed versions. This could cause
@ -198,15 +211,15 @@ NOTE: On MacOS/X, the default "libtool" program is different than the
will invoke the GNU Autoconf, Automake, and Libtool commands in the
proper order and setup to run OMPI's top-level "configure" script.
Running autogen.pl may take several minutes, depending on your
Running autogen.pl may take a few minutes, depending on your
system. It's not very exciting to watch. :-)
If you have a multi-processor system, enabling the multi-threaded
behavior in Automake 1.11 (or newer) can result in autogen.pl
running faster. Do this by setting the AUTOMAKE_JOBS environment
variable to the number of processors (threads) that you want it to
use. For example (you can again put this in your shell startup
files):
use before invoking autogen.pl. For example (you can again put
this in your shell startup files):
# For bash/sh:
export AUTOMAKE_JOBS=4
@ -214,9 +227,10 @@ NOTE: On MacOS/X, the default "libtool" program is different than the
set AUTOMAKE_JOBS 4
5a. You generally need to run autogen.pl whenever the top-level
file "configure.ac" changes, or any files in the config/
directory change (the config/ directory is where a lot of
"include" files for OMPI's configure script live).
file "configure.ac" changes, or any files in the config/ or
<project>/config/ directories change (these directories are
where a lot of "include" files for OMPI's configure script
live).
5b. You do *NOT* need to re-run autogen.pl if you modify a
Makefile.am.
@ -225,21 +239,27 @@ Use of Flex
===========
Flex is used during the compilation of a developer's checkout (it is
not used in 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 Open MPI, we
greatly prefer the latter.
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
Open MPI, we greatly prefer the latter.
Note that no testing has been performed to see what the minimum
version of Flex is required by Open MPI. We suggest that you use
v2.5.35 at the earliest.
*** NOTE: Windows builds of Open MPI require Flex version 2.5.35.
Specifically, we know that v2.5.35 works and 2.5.4a does not. We have
not tested to figure out exactly what the minimum required flex
version is on Windows; we suggest that you use 2.5.35 at the earliest.
It is for this reason that the contrib/dist/make_dist_tarball script
checks for a Windows-friendly version of flex before continuing.
*** NOTE: Windows developer builds of Open MPI *require* Flex version
2.5.35. Specifically, we know that v2.5.35 works and 2.5.4a does not.
We have not tested to figure out exactly what the minimum required
flex version is on Windows; we suggest that you use 2.5.35 at the
earliest. It is for this reason that the
contrib/dist/make_dist_tarball script checks for a Windows-friendly
version of flex before continuing.
For now, Open MPI 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 Open MPI developer builds will
require Flex version >=2.5.35.
Note that the flex-generated code generates some compiler warnings on
some platforms, but the warnings do not seem to be consistent or

View File

@ -56,15 +56,13 @@ my $exclude_list;
my $ompi_automake_version = "1.11.1";
my $ompi_autoconf_version = "2.65";
my $ompi_libtool_version = "2.2.6b";
my $ompi_flex_version = "2.5.35";
my $ompi_m4_version = "1.4.16";
my $ompi_flex_version = "2.5.4";
# Search paths
my $ompi_autoconf_search = "autoconf";
my $ompi_automake_search = "automake";
my $ompi_libtoolize_search = "libtoolize;glibtoolize";
my $ompi_flex_search = "flex";
my $ompi_m4_search = "m4;gm4";
# One-time setup
my $username;
@ -811,7 +809,6 @@ tools:
GNU Autoconf: $ompi_autoconf_version
GNU Automake: $ompi_automake_version
GNU Libtool: $ompi_libtool_version
GNU M4: $ompi_m4_version (BSD/Solaris M4 is ok)
Flex: $ompi_flex_version
=================================================================\n";
my_exit(1);
@ -1032,7 +1029,6 @@ $step. Checking tool versions\n\n";
&find_and_check("libtool", $ompi_libtoolize_search, $ompi_libtool_version);
&find_and_check("automake", $ompi_automake_search, $ompi_automake_version);
&find_and_check("flex", $ompi_flex_search, $ompi_flex_version);
&find_and_check("m4", $ompi_m4_search, $ompi_m4_version);
#---------------------------------------------------------------------------