Hello there,
Proposed below is a patch to remove the redundant instance of the
version algorithm, together with some cleanup (for unification of
the two algorithms, which have diverged a little) and a micro bit
more efficiency.
One could add a rebuilding rule to config/Makefile.am, if you think
it's
useful, just as Automake adds them for 'configure' and Makefiles.
If you apply this, you should add config/ompi_get_version.m4sh to svn,
and remove config/ompi_get_version.sh, as it's now a generated file.
The latter should still be distributed so users don't need autom4te
(done in patch below).
In case ompi_get_version.sh may be used in other configure.ac files
than
the toplevel one, the script should be generated before autoconf is
run
there.
Cheers,
Ralf
* config/ompi_get_version.m4sh: New (distributed) file, acts as
input to
ompi_get_version.sh. Common functionality factored in
ompi_get_version.m4, generation done by autom4te in autogen.
--- /dev/null 1970-01-01 12:00:00.000000000 +0000
+++ config/ompi_get_version.m4sh 2006-01-18 20:57:14.000000000 +0100
@@ -0,0 +1,98 @@
+m4_define([_m4_divert(SCRIPT)], 100)
+m4_divert_push([SCRIPT])dnl
+#!/bin/sh
+#
+# ompi_get_version is created from ompi_get_version.m4 and
ompi_get_version.m4sh.
+#
+# Copyright (c) 2004-2005 The Trustees of Indiana University and
Indiana
+# University Research and Technology
+# Corporation. All rights reserved.
+# Copyright (c) 2004-2005 The University of Tennessee and The
University
+# of Tennessee Research Foundation. All
rights
+# reserved.
+# 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$
+#
+# Additional copyrights may follow
+#
+# $HEADER$
+#
+
+m4_include([ompi_get_version.m4])
+
+srcfile="$1"
+option="$2"
+
+case "$option" in
+ # svnversion can take a while to run. If we don't need it,
don't run it.
+ --major|--minor|--release|--greek|--base|--help)
+ gv_need_svn=0
+ ;;
+ *)
+ gv_need_svn=1
+esac
+
+
+if test -z "$srcfile"; then
+ option="--help"
+else
+ OMPI_GET_VERSION([$srcfile],[OMPI])
+
+ if test "$option" = ""; then
+ option="--full"
+ fi
+fi
+
+case "$option" in
+ --full|-v|--version)
+ echo $OMPI_VERSION
+ ;;
+ --major)
+ echo $OMPI_MAJOR_VERSION
+ ;;
+ --minor)
+ echo $OMPI_MINOR_VERSION
+ ;;
+ --release)
+ echo $OMPI_RELEASE_VERSION
+ ;;
+ --greek)
+ echo $OMPI_GREEK_VERSION
+ ;;
+ --svn)
+ echo $OMPI_SVN_R
+ ;;
+ --base)
+ echo $OMPI_BASE_VERSION
+ ;;
+ --all)
+ echo ${OMPI_VERSION} ${OMPI_MAJOR_VERSION} $
{OMPI_MINOR_VERSION} ${OMPI_RELEASE_VERSION} ${OMPI_GREEK_VERSION} $
{OMPI_SVN_R}
+ ;;
+ -h|--help)
+ cat <<EOF
+$0 <srcfile> [<option>]
+
+<srcfile> - Text version file
+<option> - One of:
+ --full - Full version number
+ --major - Major version number
+ --minor - Minor version number
+ --release - Release version number
+ --greek - Greek (alpha, beta, etc) version number
+ --svn - Subversion repository number
+ --all - Show all version numbers, separated by :
+ --base - Show base version number (no svn number)
+ --help - This message
+EOF
+ ;;
+ *)
+ echo "Unrecognized option $option. Run $0 --help for
options"
+ ;;
+esac
+
+# All done
+
+exit 0
Index: config/ompi_get_version.m4
===================================================================
--- config/ompi_get_version.m4 (revision 8727)
+++ config/ompi_get_version.m4 (working copy)
@@ -18,32 +18,30 @@
dnl
dnl
-dnl This file is almost identical in functionality to
-dnl ompi_get_version.sh. It is unfortunate that we have to
duplicate code,
-dnl but it is really the only what that I can think to do it. :-
( Hence,
-dnl if you change the logic here for determining version numbers,
YOU MUST
-dnl ALSO CHANGE IT IN ompi_get_version.sh!!
-dnl
+dnl This file is also used as input to ompi_get_version.sh.
+dnl
-AC_DEFUN([OMPI_GET_VERSION],[
+m4_define([OMPI_GET_VERSION],[
gv_ver_file="$1"
gv_prefix="$2"
+: ${gv_need_svn=0}
+: ${srcdir=.}
dnl quote eval to suppress macro expansion with non-GNU m4
-gv_run() {
- str="${gv_prefix}_${2}=\$gv_${1}"
- [eval] $str
-}
-
-if test -n "$gv_ver_file" -a -f "$gv_ver_file"; then
- gv_major_version="`egrep '^major=' $gv_ver_file | cut -d= -f2`"
- gv_minor_version="`egrep '^minor=' $gv_ver_file | cut -d= -f2`"
- gv_release_version="`egrep '^release=' $gv_ver_file | cut -d= -
f2`"
- gv_greek_version="`egrep '^greek=' $gv_ver_file | cut -d= -f2`"
- gv_want_svn="`egrep '^want_svn=' $gv_ver_file | cut -d= -f2`"
- gv_svn_r="`egrep '^svn_r=' $gv_ver_file | cut -d= -f2`"
-
+if test -n "$gv_ver_file" && test -f "$gv_ver_file"; then
+ [eval] "`sed -n \"\
+ t clear
+ : clear
+ s/^major/gv_&_version/
+ s/^minor/gv_&_version/
+ s/^release/gv_&_version/
+ s/^greek/gv_&_version/
+ s/^want_svn/gv_&/
+ s/^svn_r/gv_&/
+ T
+ p\" < \"\$gv_ver_file\"`"
+
if test -n "$gv_release_version" -a "$gv_release_version" !=
"0"; then
gv_full_version="$gv_major_version.$gv_minor_version.
$gv_release_version"
else
@@ -52,12 +50,14 @@
gv_full_version="${gv_full_version}${gv_greek_version}"
- if test "$gv_want_svn" = "1"; then
- if test "$gv_svn_r" = "-1"; then
+ gv_base_version=$gv_full_version
+
+ if test "$gv_want_svn" = 1 && test "$gv_need_svn" = 1; then
+ if test "$gv_svn_r" = -1; then
if test -d "$srcdir/.svn"; then
ver=r`svnversion "$srcdir"`
# make sure svnversion worked
- if test "$?" != "0" ; then
+ if test "$?" != 0 ; then
ver=svn`date '+%m%d%Y'`
fi
else
@@ -69,14 +69,14 @@
fi
# Set the values
-
- gv_run full_version VERSION
- gv_run major_version MAJOR_VERSION
- gv_run minor_version MINOR_VERSION
- gv_run release_version RELEASE_VERSION
- gv_run greek_version GREEK_VERSION
- gv_run want_svn WANT_SVN
- gv_run svn_r SVN_R
+ [eval] "${gv_prefix}_VERSION=\$gv_full_version
+ ${gv_prefix}_BASE_VERSION=\$gv_base_version
+ ${gv_prefix}_MAJOR_VERSION=\$gv_major_version
+ ${gv_prefix}_MINOR_VERSION=\$gv_minor_version
+ ${gv_prefix}_RELEASE_VERSION=\$gv_release_version
+ ${gv_prefix}_GREEK_VERSION=\$gv_greek_version
+ ${gv_prefix}_WANT_SVN=\$gv_want_svn
+ ${gv_prefix}_SVN_R=\$gv_svn_r"
fi
# Clean up
Index: config/Makefile.am
===================================================================
--- config/Makefile.am (revision 8727)
+++ config/Makefile.am (working copy)
@@ -49,6 +49,7 @@
ompi_configure_options.m4 \
ompi_functions.m4 \
ompi_get_version.m4 \
+ ompi_get_version.m4sh \
ompi_get_version.sh \
ompi_make_stripped_flags.m4 \
ompi_mca.m4 \
Index: autogen.sh
===================================================================
--- autogen.sh (revision 8727)
+++ autogen.sh (working copy)
@@ -40,6 +40,10 @@
if test ! -z "$AUTOCONF"; then
ompi_autoconf_search="$AUTOCONF"
fi
+ompi_autom4te_search="autom4te"
+if test ! -z "$AUTOM4TE"; then
+ ompi_autom4te_search="$AUTOM4TE"
+fi
ompi_libtoolize_search="libtoolize;glibtoolize"
if test ! -z "$LIBTOOLIZE"; then
ompi_libtoolize_search="$LIBTOOLIZE"
@@ -375,6 +379,12 @@
echo "*** Running GNU tools"
+ if test -f include/mpi.h.in; then
+ cd config
+ run_and_check $ompi_autom4te --language=m4sh
ompi_get_version.m4sh -o ompi_get_version.sh
+ cd ..
+ fi
+
run_and_check $ompi_aclocal
if test "`grep AC_CONFIG_HEADER $file`" != "" -o \
"`grep AM_CONFIG_HEADER $file`" != ""; then
@@ -1088,6 +1098,7 @@
fi
# find all the apps we are going to run
+find_app "autom4te"
find_app "aclocal"
find_app "autoheader"
find_app "autoconf"
_______________________________________________
devel mailing list
de...@open-mpi.org
http://www.open-mpi.org/mailman/listinfo.cgi/devel