1
1

Changes to finally make it possible to develop components outside of

the Open MPI tree.  This fixes bug 1015.
- Eliminate some confusion/inconsistencies through the tree; we only
  use MCA_<type>_<name>_VERSION now, not ..._FULL_VERSION
- coll demo component is ready
- ROMIO io component had a VERSION file but wasn't using it, so now
  it's using it properly
- Updated autogen.sh and mca_make_configure.pl to generate version
  header templates upon demand

This commit was SVN r3267.
Этот коммит содержится в:
Jeff Squyres 2004-10-21 16:27:17 +00:00
родитель 02e8f3dcab
Коммит 721fda8ecb
9 изменённых файлов: 203 добавлений и 114 удалений

Просмотреть файл

@ -261,7 +261,6 @@ find_and_delete() {
# run_gnu_tools - run the GNU tools in a given directory # run_gnu_tools - run the GNU tools in a given directory
# #
# INPUT: # INPUT:
# - directory to run in
# - OMPI top directory # - OMPI top directory
# #
# OUTPUT: # OUTPUT:
@ -275,8 +274,7 @@ find_and_delete() {
# #
############################################################################## ##############################################################################
run_gnu_tools() { run_gnu_tools() {
rgt_dir="$1" rgt_ompi_topdir="$1"
rgt_ompi_topdir="$2"
# Sanity check to ensure that there's a configure.in or # Sanity check to ensure that there's a configure.in or
# configure.ac file here, or if there's a configure.params # configure.ac file here, or if there's a configure.params
@ -295,6 +293,17 @@ EOF
echo "*** autogen.sh failed to complete!" echo "*** autogen.sh failed to complete!"
exit 1 exit 1
fi fi
# If we need to make a version header template file, do so
rgt_abs_dir="`pwd`"
rgt_component_name="`basename $rgt_abs_dir`"
rgt_component_type="`dirname $rgt_abs_dir`"
rgt_component_type="`basename $rgt_component_type`"
rgt_ver_header="$rgt_abs_dir/$rgt_component_type-$rgt_component_name-version.h"
rgt_ver_header_base="`basename $rgt_ver_header`"
make_version_header_template "$rgt_ver_header_base" "$rgt_component_type" "$rgt_component_name"
happy=1 happy=1
file=configure.ac file=configure.ac
elif test -f configure.in; then elif test -f configure.in; then
@ -454,7 +463,7 @@ EOF
*** `pwd` *** `pwd`
EOF EOF
run_gnu_tools "$pd_dir" "$pd_ompi_topdir" run_gnu_tools "$pd_ompi_topdir"
elif test -f configure.params -a -f configure.stub; then elif test -f configure.params -a -f configure.stub; then
cat <<EOF cat <<EOF
@ -463,7 +472,7 @@ EOF
*** `pwd` *** `pwd`
EOF EOF
run_gnu_tools "$pd_dir" "$pd_ompi_topdir" run_gnu_tools "$pd_ompi_topdir"
elif test -f configure.params; then elif test -f configure.params; then
cat <<EOF cat <<EOF
@ -479,8 +488,8 @@ EOF
*** Nothing to do -- skipping this directory *** Nothing to do -- skipping this directory
EOF EOF
else else
pd_component_name="`basename $pd_dir`" pd_component_name="`basename $pd_abs_dir`"
pd_component_type="`dirname $pd_dir`" pd_component_type="`dirname $pd_abs_dir`"
pd_component_type="`basename $pd_component_type`" pd_component_type="`basename $pd_component_type`"
# Write out to two files (they're merged at the end) # Write out to two files (they're merged at the end)
@ -539,6 +548,7 @@ EOF
# don't have version numbers. # don't have version numbers.
if test -n "$PARAM_VERSION_FILE" -a \ if test -n "$PARAM_VERSION_FILE" -a \
-f "$PARAM_VERSION_FILE" -a \
"$pd_component_type" != "common"; then "$pd_component_type" != "common"; then
pd_ver_header="$pd_dir/$pd_component_type-$pd_component_name-version.h" pd_ver_header="$pd_dir/$pd_component_type-$pd_component_name-version.h"
pd_ver_header_base="`basename $pd_ver_header`" pd_ver_header_base="`basename $pd_ver_header`"
@ -565,48 +575,34 @@ EOF
# have #define's with values that are @foo@ (i.e., # have #define's with values that are @foo@ (i.e.,
# the result of AC_SUBST) # the result of AC_SUBST)
make_version_header_template "$pd_ver_header_base" "$pd_component_type" "$pd_component_name"
# 2. Add the template header file to the list of # 2. Add the template header file to the list of
# AC_CONFIG_FILES so that AC_SUBST'ed things will # AC_CONFIG_FILES so that AC_SUBST'ed things will
# be substituted in. # be substituted in.
# 3. Setup commands to run after config.status has
# run. Compare the resulting template header
# version file with the existing version header
# file. If they're different (or if the version
# header file does not yet exist), replace it with
# the template version header file. Otherwise,
# leave it alone. This leaves the
# <type>-<name>-version.h file unchanged (and
# therefore its timestamp unaltered) if nothing
# changed.
rm -f "$pd_ver_header_base.template.in"
cat > "$pd_ver_header_base.template.in" <<EOF
/*
* This file is automatically created by autogen.sh; it should not
* be edited by hand!!
*
* List of version number for this component
*/
#ifndef MCA_${pd_component_type}_${pd_component_name}_VERSION_H
#define MCA_${pd_component_type}_${pd_component_name}_VERSION_H
#define MCA_${pd_component_type}_${pd_component_name}_MAJOR_VERSION @MCA_${pd_component_type}_${pd_component_name}_MAJOR_VERSION@
#define MCA_${pd_component_type}_${pd_component_name}_MINOR_VERSION @MCA_${pd_component_type}_${pd_component_name}_MINOR_VERSION@
#define MCA_${pd_component_type}_${pd_component_name}_RELEASE_VERSION @MCA_${pd_component_type}_${pd_component_name}_RELEASE_VERSION@
#define MCA_${pd_component_type}_${pd_component_name}_ALPHA_VERSION @MCA_${pd_component_type}_${pd_component_name}_ALPHA_VERSION@
#define MCA_${pd_component_type}_${pd_component_name}_BETA_VERSION @MCA_${pd_component_type}_${pd_component_name}_BETA_VERSION@
#define MCA_${pd_component_type}_${pd_component_name}_SVN_VERSION "@MCA_${pd_component_type}_${pd_component_name}_SVN_VERSION@"
#define MCA_${pd_component_type}_${pd_component_name}_FULL_VERSION "@MCA_${pd_component_type}_${pd_component_name}_FULL_VERSION@"
#endif /* MCA_${pd_component_type}_${pd_component_name}_VERSION_H */
EOF
cat >> $pd_list_file <<EOF cat >> $pd_list_file <<EOF
dnl Generate the version header template dnl Generate the version header template
AC_CONFIG_FILES([$pd_ver_header.template]) AC_CONFIG_FILES([$pd_ver_header.template])
EOF
# 3. Hard-code the version numbers (obtained
# above) into variable assignments so that they
# can be written out to the [templated] version
# header file. Setup commands to run after
# config.status has run. Compare the resulting
# template header version file with the existing
# version header file. If they're different (or
# if the version header file does not yet exist),
# replace it with the template version header
# file. Otherwise, leave it alone. This leaves
# the <type>-<name>-version.h file unchanged (and
# therefore its timestamp unaltered) if nothing
# changed.
cat >> $pd_list_file <<EOF
dnl Assign and AC_SUBST all the version number components dnl Assign and AC_SUBST all the version number components
MCA_${pd_component_type}_${pd_component_name}_MAJOR_VERSION=$pd_ver_major MCA_${pd_component_type}_${pd_component_name}_MAJOR_VERSION=$pd_ver_major
@ -621,8 +617,8 @@ MCA_${pd_component_type}_${pd_component_name}_BETA_VERSION=$pd_ver_beta
AC_SUBST(MCA_${pd_component_type}_${pd_component_name}_BETA_VERSION) AC_SUBST(MCA_${pd_component_type}_${pd_component_name}_BETA_VERSION)
MCA_${pd_component_type}_${pd_component_name}_SVN_VERSION="$pd_ver_svn" MCA_${pd_component_type}_${pd_component_name}_SVN_VERSION="$pd_ver_svn"
AC_SUBST(MCA_${pd_component_type}_${pd_component_name}_SVN_VERSION) AC_SUBST(MCA_${pd_component_type}_${pd_component_name}_SVN_VERSION)
MCA_${pd_component_type}_${pd_component_name}_FULL_VERSION="$pd_ver_full" MCA_${pd_component_type}_${pd_component_name}_VERSION="$pd_ver_full"
AC_SUBST(MCA_${pd_component_type}_${pd_component_name}_FULL_VERSION) AC_SUBST(MCA_${pd_component_type}_${pd_component_name}_VERSION)
dnl After config.status has run, compare the version header template to dnl After config.status has run, compare the version header template to
dnl the version header. If the version header does not exist, create it dnl the version header. If the version header does not exist, create it
@ -705,6 +701,69 @@ EOF
} }
##############################################################################
#
# make_template_version_header -- make a templated version header
# file, but only if we have a PARAM_VERSION_FILE that exists
#
# INPUT:
# - filename base
# - component type name
# - component name
#
# OUTPUT:
# none
#
# SIDE EFFECTS:
#
##############################################################################
make_version_header_template() {
mvht_filename="$1"
mvht_component_type="$2"
mvht_component_name="$3"
# See if we have a VERSION file
. ./configure.params
if test -z "$PARAM_VERSION_FILE"; then
if test -f "VERSION"; then
PARAM_VERSION_FILE="VERSION"
fi
else
if test ! -f "$PARAM_VERSION_FILE"; then
PARAM_VERSION_FILE=
fi
fi
if test -n "$PARAM_VERSION_FILE" -a -f "$PARAM_VERSION_FILE" -a \
"$pd_component_type" != "common"; then
rm -f "$mvht_filename.template.in"
cat > "$mvht_filename.template.in" <<EOF
/*
* This file is automatically created by autogen.sh; it should not
* be edited by hand!!
*
* List of version number for this component
*/
#ifndef MCA_${mvht_component_type}_${mvht_component_name}_VERSION_H
#define MCA_${mvht_component_type}_${mvht_component_name}_VERSION_H
#define MCA_${mvht_component_type}_${mvht_component_name}_MAJOR_VERSION @MCA_${mvht_component_type}_${mvht_component_name}_MAJOR_VERSION@
#define MCA_${mvht_component_type}_${mvht_component_name}_MINOR_VERSION @MCA_${mvht_component_type}_${mvht_component_name}_MINOR_VERSION@
#define MCA_${mvht_component_type}_${mvht_component_name}_RELEASE_VERSION @MCA_${mvht_component_type}_${mvht_component_name}_RELEASE_VERSION@
#define MCA_${mvht_component_type}_${mvht_component_name}_ALPHA_VERSION @MCA_${mvht_component_type}_${mvht_component_name}_ALPHA_VERSION@
#define MCA_${mvht_component_type}_${mvht_component_name}_BETA_VERSION @MCA_${mvht_component_type}_${mvht_component_name}_BETA_VERSION@
#define MCA_${mvht_component_type}_${mvht_component_name}_SVN_VERSION "@MCA_${mvht_component_type}_${mvht_component_name}_SVN_VERSION@"
#define MCA_${mvht_component_type}_${mvht_component_name}_VERSION "@MCA_${mvht_component_type}_${mvht_component_name}_VERSION@"
#endif /* MCA_${mvht_component_type}_${mvht_component_name}_VERSION_H */
EOF
fi
unset PARAM_VERSION_FILE PARAM_CONFIG_FILES
}
############################################################################## ##############################################################################
# #
# run_global - run the config in the top OMPI dir and all MCA components # run_global - run the config in the top OMPI dir and all MCA components

Просмотреть файл

@ -25,7 +25,6 @@ if test -n "@PARAM_VERSION_FILE@" -a -f "@PARAM_VERSION_FILE@"; then
AC_SUBST(@PARAM_VAR_PREFIX@_ALPHA_VERSION) AC_SUBST(@PARAM_VAR_PREFIX@_ALPHA_VERSION)
AC_SUBST(@PARAM_VAR_PREFIX@_BETA_VERSION) AC_SUBST(@PARAM_VAR_PREFIX@_BETA_VERSION)
AC_SUBST(@PARAM_VAR_PREFIX@_SVN_VERSION) AC_SUBST(@PARAM_VAR_PREFIX@_SVN_VERSION)
AC_SUBST(@PARAM_VAR_PREFIX@_FULL_VERSION)
AC_SUBST(@PARAM_VAR_PREFIX@_VERSION) AC_SUBST(@PARAM_VAR_PREFIX@_VERSION)
version_string="version $@PARAM_VAR_PREFIX@_VERSION" version_string="version $@PARAM_VAR_PREFIX@_VERSION"
else else
@ -70,6 +69,61 @@ AH_TOP([/* -*- c -*-
AH_BOTTOM([#endif /* _@PARAM_VAR_PREFIX@_CONFIG_H */]) AH_BOTTOM([#endif /* _@PARAM_VAR_PREFIX@_CONFIG_H */])
#
# Generate the version header template -- only if we have a version
#
if test -n "$version_string"; then
# Add the version header template to AC _ CONFIG _ FILES, but only
# if mca_make_configure.pl found that it was listed in
# configure.params and the file exists, or the default file
# exists. If not, then this will be blank (because
# "$version_string" will never be non-empty, so this block is
# meaningless).
# We do this weird Texas two step for two reasons:
# 1) if Autoconf see AC _ CONFIG _ FILES, it assumes that the
# template must exist (and will error during autoconf if it does
# not), even if the AC _ CONFIG _ FILES is in a conditional block
# (like this one)... which actually makes sense. :-) So we only
# put this AC _ CONFIG _ FILES here if we actually have the
# template file (i.e., mca_make_configure.pl puts it here... or
# not).
# 2) AC _ CONFIG _ COMMANDS, on the other hand, does not require
# any Autoconf-compile-time specialness. It can sit here in a
# conditional shell block and be executed or not at run time, so
# there's no need to mca_make_configure.pl to do anything special
# with it.
@WRITE_VERSION_HEADER_TEMPLATE@
# After config.status has run, compare the version header template
# to the version header. If the version header does not exist,
# create it # from the template. If it does already exist, diff
# it and see if # they're different. If they're different, copy
# the template over the # old version. If they're the same, leave
# the original alone so that # we don't distrub any dependencies.
AC_CONFIG_COMMANDS([@MCA_TYPE@-@MCA_COMPONENT_NAME@],
[if test -f "@MCA_TYPE@-@MCA_COMPONENT_NAME@-version.h"; then
diff "@MCA_TYPE@-@MCA_COMPONENT_NAME@-version.h" "@MCA_TYPE@-@MCA_COMPONENT_NAME@-version.h.template" > /dev/null 2>&1
if test "$?" != "0"; then
cp "@MCA_TYPE@-@MCA_COMPONENT_NAME@-version.h.template" "@MCA_TYPE@-@MCA_COMPONENT_NAME@-version.h"
echo "config.status: regenerating @MCA_TYPE@-@MCA_COMPONENT_NAME@-version.h"
else
echo "config.state: @MCA_TYPE@-@MCA_COMPONENT_NAME@-version.h unchanged"
fi
else
cp "@MCA_TYPE@-@MCA_COMPONENT_NAME@-version.h.template" "@MCA_TYPE@-@MCA_COMPONENT_NAME@-version.h"
echo "config.status: creating @MCA_TYPE@-@MCA_COMPONENT_NAME@-version.h"
fi
rm -f @MCA_TYPE@-@MCA_COMPONENT_NAME@-version.h.template])
fi
# #
# Do the normal basics of setup: # Do the normal basics of setup:
# - set CLEANFILES # - set CLEANFILES

Просмотреть файл

@ -148,8 +148,8 @@ if (-f "$component_topdir/VERSION") {
# PARAM_VAR_PREFIX: calculate # PARAM_VAR_PREFIX: calculate
$config_params{$config_param_names{PVARPREFIX}} = $config_params{$config_param_names{PVARPREFIX}} =
"MCA_" . uc($config_values{"MCA_TYPE"}) . "MCA_" . $config_values{"MCA_TYPE"} .
"_" . uc($config_values{"MCA_COMPONENT_NAME"}); "_" . $config_values{"MCA_COMPONENT_NAME"};
# PARAM_AM_NAME: calculate # PARAM_AM_NAME: calculate
@ -331,18 +331,16 @@ sub make_template {
# Transform the template # Transform the template
print "--> Filling in the template...\n"; # If there's a PARAM_VERSION_FILE, then ensure that configure is
foreach my $key (sort keys(%config_values)) { # set to write it out
$search = "@" . $key . "@";
$template =~ s/$search/$config_values{$key}/g;
}
foreach my $key (sort keys(%config_param_names)) {
next if ($key eq "PC" || $key eq "PCXX");
$search = "@" . $config_param_names{$key} . "@"; $search = "\@WRITE_VERSION_HEADER_TEMPLATE\@";
$template =~ if ($config_params{PARAM_VERSION_FILE} ne "") {
s/$search/$config_params{$config_param_names{$key}}/g; $replace = "AC_CONFIG_FILES([\@MCA_TYPE\@-\@MCA_COMPONENT_NAME\@-version.h.template])";
} else {
$replace = "";
} }
$template =~ s/$search/$replace/g;
# If we want C or C++, substitute in the right setup macros # If we want C or C++, substitute in the right setup macros
@ -364,6 +362,24 @@ sub make_template {
$config_params{PARAM_CONFIG_AUX_DIR} : "../../../../config"; $config_params{PARAM_CONFIG_AUX_DIR} : "../../../../config";
$template =~ s/$search/$replace/g; $template =~ s/$search/$replace/g;
# Do all the parameters. This is done last so that any of the
# above can use paramter values in their values, and expect to
# have their respective values substituted in (i.e., a [semi]
# recursive substitution).
print "--> Filling in the template...\n";
foreach my $key (sort keys(%config_values)) {
$search = "@" . $key . "@";
$template =~ s/$search/$config_values{$key}/g;
}
foreach my $key (sort keys(%config_param_names)) {
next if ($key eq "PC" || $key eq "PCXX");
$search = "@" . $config_param_names{$key} . "@";
$template =~
s/$search/$config_params{$config_param_names{$key}}/g;
}
# Write it out # Write it out
print "--> Writing output file: $dest\n"; print "--> Writing output file: $dest\n";

Просмотреть файл

@ -20,7 +20,7 @@
* Public string showing the coll ompi_basic component version number * Public string showing the coll ompi_basic component version number
*/ */
const char *mca_coll_basic_component_version_string = const char *mca_coll_basic_component_version_string =
"Open MPI basic collective MCA component version " MCA_coll_basic_FULL_VERSION; "Open MPI basic collective MCA component version " MCA_coll_basic_VERSION;
/* /*
* Global variable * Global variable

Просмотреть файл

@ -1,19 +0,0 @@
/*
* This file is automatically created by autogen.sh; it should not
* be edited by hand!!
*
* List of version number for this component
*/
#ifndef MCA_COLL_DEMO_VERSION_H
#define MCA_COLL_DEMO_VERSION_H
#define MCA_COLL_DEMO_MAJOR_VERSION @MCA_COLL_DEMO_MAJOR_VERSION@
#define MCA_COLL_DEMO_MINOR_VERSION @MCA_COLL_DEMO_MINOR_VERSION@
#define MCA_COLL_DEMO_RELEASE_VERSION @MCA_COLL_DEMO_RELEASE_VERSION@
#define MCA_COLL_DEMO_ALPHA_VERSION @MCA_COLL_DEMO_ALPHA_VERSION@
#define MCA_COLL_DEMO_BETA_VERSION @MCA_COLL_DEMO_BETA_VERSION@
#define MCA_COLL_DEMO_SVN_VERSION "@MCA_COLL_DEMO_SVN_VERSION@"
#define MCA_COLL_DEMO_FULL_VERSION "@MCA_COLL_DEMO_VERSION@"
#endif /* MCA_COLL_DEMO_VERSION_H */

Просмотреть файл

@ -20,7 +20,7 @@
* Public string showing the coll ompi_demo component version number * Public string showing the coll ompi_demo component version number
*/ */
const char *mca_coll_demo_component_version_string = const char *mca_coll_demo_component_version_string =
"OMPI/MPI demo collective MCA component version " MCA_COLL_DEMO_FULL_VERSION; "OMPI/MPI demo collective MCA component version " MCA_coll_demo_VERSION;
/* /*
* Global variable * Global variable
@ -53,9 +53,9 @@ const mca_coll_base_component_1_0_0_t mca_coll_demo_component = {
/* Component name and version */ /* Component name and version */
"demo", "demo",
MCA_COLL_DEMO_MAJOR_VERSION, MCA_coll_demo_MAJOR_VERSION,
MCA_COLL_DEMO_MINOR_VERSION, MCA_coll_demo_MINOR_VERSION,
MCA_COLL_DEMO_RELEASE_VERSION, MCA_coll_demo_RELEASE_VERSION,
/* Component open and close functions */ /* Component open and close functions */

Просмотреть файл

@ -3,33 +3,4 @@
# script so that this can be a standalone component. # script so that this can be a standalone component.
# #
# Hackaround until bug 1015 fixed AC_DEFUN([MCA_CONFIGURE_STUB],[])
AC_DEFUN([MCA_CONFIGURE_STUB],[
dnl Generate the version header template
AC_CONFIG_FILES([coll-demo-version.h.template])
dnl After config.status has run, compare the version header template to
dnl the version header. If the version header does not exist, create it
dnl from the template. If it does already exist, diff it and see if
dnl they're different. If they're different, copy the template over the
dnl old version. If they're the same, leave the original alone so that
dnl we don't distrub any dependencies.
AC_CONFIG_COMMANDS([COLL-DEMO],
[if test -f "coll-demo-version.h"; then
diff "coll-demo-version.h" "coll-demo-version.h.template" > /dev/null 2>&1
if test "$?" != "0"; then
cp "coll-demo-version.h.template" "coll-demo-version.h"
echo "config.status: regenerating coll-demo-version.h"
else
echo "config.state: coll-demo-version.h unchanged"
fi
else
cp "coll-demo-version.h.template" "coll-demo-version.h"
echo "config.status: creating coll-demo-version.h"
fi
rm coll-demo-version.h.template])
])

Просмотреть файл

@ -6,6 +6,7 @@
#include "mpi.h" #include "mpi.h"
#include "mca/io/io.h" #include "mca/io/io.h"
#include "io_romio.h" #include "io_romio.h"
#include "io-romio-version.h"
/* /*
@ -27,6 +28,13 @@ static int delete_select(char *filename, struct ompi_info_t *info,
struct mca_io_base_delete_t *private_data); struct mca_io_base_delete_t *private_data);
/*
* Public string showing the coll ompi_demo component version number
*/
const char *mca_io_romio_component_version_string =
"OMPI/MPI ROMIO io MCA component version " MCA_io_romio_VERSION;
mca_io_base_component_1_0_0_t mca_io_romio_component = { mca_io_base_component_1_0_0_t mca_io_romio_component = {
/* First, the mca_base_component_t struct containing meta information /* First, the mca_base_component_t struct containing meta information
about the component itself */ about the component itself */
@ -35,10 +43,10 @@ mca_io_base_component_1_0_0_t mca_io_romio_component = {
/* Indicate that we are a io v1.0.0 component (which also implies a /* Indicate that we are a io v1.0.0 component (which also implies a
specific MCA version) */ specific MCA version) */
MCA_IO_BASE_VERSION_1_0_0, MCA_IO_BASE_VERSION_1_0_0,
"romio", /* MCA component name */ "romio",
1, /* MCA component major version */ MCA_io_romio_MAJOR_VERSION,
0, /* MCA component minor version */ MCA_io_romio_MINOR_VERSION,
0, /* MCA component release version */ MCA_io_romio_RELEASE_VERSION,
NULL, NULL,
NULL NULL
}, },

Просмотреть файл

@ -17,7 +17,7 @@
*/ */
const char *mca_topo_unity_component_version_string = const char *mca_topo_unity_component_version_string =
"Open MPI unity topology MCA component version" MCA_topo_unity_FULL_VERSION; "Open MPI unity topology MCA component version" MCA_topo_unity_VERSION;
/* /*
* ******************************************************************* * *******************************************************************