Modify make_dist_tarball to conditionally allow it when ''higher''
than expected versions of tools are found. make_dist_tarball will ''not'' accept lower or higher versions by default (since the goal is exact reproducability, after all), but you can specify the --highok command line switch to allow it. I'm also removing make_tarball in this commit and will replace it with a sym link to make_dist_tarball in the next commit. The script will default to allowing higher versions of the tools when invoked with an argv[0] of "make tarball" (i.e., --highok is not necessary, but is harmless). This commit was SVN r21530.
Этот коммит содержится в:
родитель
863e57700e
Коммит
6c3ff1c438
115
contrib/dist/make_dist_tarball
поставляемый
115
contrib/dist/make_dist_tarball
поставляемый
@ -10,7 +10,7 @@
|
|||||||
# University of Stuttgart. All rights reserved.
|
# University of Stuttgart. All rights reserved.
|
||||||
# Copyright (c) 2004-2005 The Regents of the University of California.
|
# Copyright (c) 2004-2005 The Regents of the University of California.
|
||||||
# All rights reserved.
|
# All rights reserved.
|
||||||
# Copyright (c) 2008 Cisco Systems, Inc. All rights reserved.
|
# Copyright (c) 2008-2009 Cisco Systems, Inc. All rights reserved.
|
||||||
# $COPYRIGHT$
|
# $COPYRIGHT$
|
||||||
#
|
#
|
||||||
# Additional copyrights may follow
|
# Additional copyrights may follow
|
||||||
@ -27,6 +27,32 @@ AM_TARGET_VERSION=1.10.1
|
|||||||
AC_TARGET_VERSION=2.63
|
AC_TARGET_VERSION=2.63
|
||||||
LT_TARGET_VERSION=2.2.6
|
LT_TARGET_VERSION=2.2.6
|
||||||
|
|
||||||
|
#
|
||||||
|
# Check command line flags
|
||||||
|
#
|
||||||
|
|
||||||
|
# Default to requiring *exact* versions if we're making distribution
|
||||||
|
# tarballs; but higher-than-expected versions are ok for
|
||||||
|
# non-distribution tarballs.
|
||||||
|
dist_target=distcheck
|
||||||
|
if test "`basename $0`" = "make_tarball"; then
|
||||||
|
dist_target=dist
|
||||||
|
highok=1
|
||||||
|
else
|
||||||
|
highok=0
|
||||||
|
fi
|
||||||
|
|
||||||
|
greekonly=0
|
||||||
|
while test "$1" != ""; do
|
||||||
|
case $1 in
|
||||||
|
-greekonly) greekonly=1 ;;
|
||||||
|
--greekonly) greekonly=1 ;;
|
||||||
|
-highok) highok=1 ;;
|
||||||
|
--highok) highok=1 ;;
|
||||||
|
esac
|
||||||
|
shift
|
||||||
|
done
|
||||||
|
|
||||||
#
|
#
|
||||||
# First things first -- check that the auto versions that we have are
|
# First things first -- check that the auto versions that we have are
|
||||||
# the ones that we want.
|
# the ones that we want.
|
||||||
@ -37,10 +63,46 @@ check_gnu_version() {
|
|||||||
target="$2"
|
target="$2"
|
||||||
|
|
||||||
ver="`$prog --version | head -n 1 | sed -e's/([^)]*)//g' -e's/[^0-9 .][^ ]* / /g' -e's/ //g'`"
|
ver="`$prog --version | head -n 1 | sed -e's/([^)]*)//g' -e's/[^0-9 .][^ ]* / /g' -e's/ //g'`"
|
||||||
|
|
||||||
|
ver_major=`echo $ver | cut -d. -f1`
|
||||||
|
ver_minor=`echo $ver | cut -d. -f2`
|
||||||
|
ver_release=`echo $ver | cut -d. -f3`
|
||||||
|
if test "$ver_release" = ""; then
|
||||||
|
ver_release=0
|
||||||
|
fi
|
||||||
|
|
||||||
|
target_major=`echo $target | cut -d. -f1`
|
||||||
|
target_minor=`echo $target | cut -d. -f2`
|
||||||
|
target_release=`echo $target | cut -d. -f3`
|
||||||
|
if test "$target_release" = ""; then
|
||||||
|
target_release=0
|
||||||
|
fi
|
||||||
|
|
||||||
|
result=same
|
||||||
if test "$ver" != "$target"; then
|
if test "$ver" != "$target"; then
|
||||||
|
if test "$ver_major" -lt "$target_major"; then
|
||||||
|
result=low
|
||||||
|
elif test "$ver_major" = "$target_major" -a "$ver_minor" -lt "$target_minor"; then
|
||||||
|
result=low
|
||||||
|
elif test "$ver_major" = "$target_major" -a "$ver_minor" = "$target_minor" -a "$ver_release" -lt "$target_release"; then
|
||||||
|
result=low
|
||||||
|
elif test "$ver_major" -gt "$target_major"; then
|
||||||
|
result=high
|
||||||
|
elif test "$ver_major" = "$target_major" -a "$ver_minor" -gt "$target_minor"; then
|
||||||
|
result=high
|
||||||
|
elif test "$ver_major" = "$target_major" -a "$ver_minor" = "$target_minor" -a "$ver_release" -gt "$target_release"; then
|
||||||
|
result=high
|
||||||
|
else
|
||||||
|
result=unknown
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
if test "$result" = "low"; then
|
||||||
cat <<EOF
|
cat <<EOF
|
||||||
ERROR: Program "$prog" does not have the correct/expected version:
|
----------------------------------------------------------------------
|
||||||
|
ERROR: Program "$prog" does not have a high enough version:
|
||||||
Found: $ver
|
Found: $ver
|
||||||
|
Expected: $target
|
||||||
|
|
||||||
Expected versions:
|
Expected versions:
|
||||||
m4: $M4_TARGET_VERSION
|
m4: $M4_TARGET_VERSION
|
||||||
@ -50,9 +112,50 @@ Libtool: $LT_TARGET_VERSION
|
|||||||
|
|
||||||
Either change this script to match the found version, or install
|
Either change this script to match the found version, or install
|
||||||
the correct version of the tools.
|
the correct version of the tools.
|
||||||
|
----------------------------------------------------------------------
|
||||||
EOF
|
EOF
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
if test "$result" = "high"; then
|
||||||
|
if test "$highok" = "0"; then
|
||||||
|
cat <<EOF
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
ERROR: Program "$prog" has a higher version than expected:
|
||||||
|
Found: $ver
|
||||||
|
Expected: $target
|
||||||
|
|
||||||
|
Expected versions:
|
||||||
|
m4: $M4_TARGET_VERSION
|
||||||
|
Automake: $AM_TARGET_VERSION
|
||||||
|
Autoconf: $AC_TARGET_VERSION
|
||||||
|
Libtool: $LT_TARGET_VERSION
|
||||||
|
|
||||||
|
Either change this script to match the found version, or install
|
||||||
|
the correct version of the tools.
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
EOF
|
||||||
|
exit 1
|
||||||
|
else
|
||||||
|
cat <<EOF
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
WARNING: Program "$prog" has a higher version than expected:
|
||||||
|
Found: $ver
|
||||||
|
Expected: $target
|
||||||
|
|
||||||
|
Expected versions:
|
||||||
|
m4: $M4_TARGET_VERSION
|
||||||
|
Automake: $AM_TARGET_VERSION
|
||||||
|
Autoconf: $AC_TARGET_VERSION
|
||||||
|
Libtool: $LT_TARGET_VERSION
|
||||||
|
|
||||||
|
This is *usually* ok, but this script is going to sleep for 5 seconds
|
||||||
|
to give you the chance to quit before doing anything.
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
EOF
|
||||||
|
sleep 5
|
||||||
|
fi
|
||||||
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
#
|
#
|
||||||
@ -85,13 +188,13 @@ make_tarball() {
|
|||||||
#
|
#
|
||||||
# make tarball
|
# make tarball
|
||||||
#
|
#
|
||||||
echo "*** Running make distcheck..."
|
echo "*** Running make $dist_target..."
|
||||||
save_LD=$LD_LIBRARY_PATH
|
save_LD=$LD_LIBRARY_PATH
|
||||||
LD_LIBRARY_PATH=
|
LD_LIBRARY_PATH=
|
||||||
rm -f success
|
rm -f success
|
||||||
(make distcheck 2>&1 && touch success) | tee dist.out
|
(make $dist_target 2>&1 && touch success) | tee dist.out
|
||||||
if test ! -f success; then
|
if test ! -f success; then
|
||||||
echo "Make dist failed. Aborting"
|
echo "Make $dist_target failed. Aborting"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
rm -f success
|
rm -f success
|
||||||
@ -190,7 +293,7 @@ make_tarball
|
|||||||
|
|
||||||
# Now if ! --greekonly, make the non-greek tarball
|
# Now if ! --greekonly, make the non-greek tarball
|
||||||
|
|
||||||
if test "$1" != "-greekonly" -a "$1" != "--greekonly"; then
|
if test "$greekonly" = "0"; then
|
||||||
echo "*** REMOVING ALL GREEK FROM VERSION NUMBERS!!"
|
echo "*** REMOVING ALL GREEK FROM VERSION NUMBERS!!"
|
||||||
for file in $version_files; do
|
for file in $version_files; do
|
||||||
echo " - $file"
|
echo " - $file"
|
||||||
|
204
contrib/dist/make_tarball
поставляемый
204
contrib/dist/make_tarball
поставляемый
@ -1,204 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
#
|
|
||||||
# Copyright (c) 2004-2006 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 (c) 2008 Cisco Systems, Inc. All rights reserved.
|
|
||||||
# $COPYRIGHT$
|
|
||||||
#
|
|
||||||
# Additional copyrights may follow
|
|
||||||
#
|
|
||||||
# $HEADER$
|
|
||||||
#
|
|
||||||
|
|
||||||
#
|
|
||||||
# Version of auto tools that we want
|
|
||||||
#
|
|
||||||
|
|
||||||
M4_TARGET_VERSION=1.4.11
|
|
||||||
AM_TARGET_VERSION=1.10.1
|
|
||||||
AC_TARGET_VERSION=2.63
|
|
||||||
LT_TARGET_VERSION=2.2.6
|
|
||||||
|
|
||||||
#
|
|
||||||
# First things first -- check that the auto versions that we have are
|
|
||||||
# the ones that we want.
|
|
||||||
#
|
|
||||||
|
|
||||||
check_gnu_version() {
|
|
||||||
prog="$1"
|
|
||||||
target="$2"
|
|
||||||
|
|
||||||
ver="`$prog --version | head -n 1 | sed -e's/([^)]*)//g' -e's/[^0-9 .][^ ]* / /g' -e's/ //g'`"
|
|
||||||
if test "$ver" != "$target"; then
|
|
||||||
cat <<EOF
|
|
||||||
ERROR: Program "$prog" does not have the correct/expected version:
|
|
||||||
Found: $ver
|
|
||||||
|
|
||||||
Expected versions:
|
|
||||||
m4: $M4_TARGET_VERSION
|
|
||||||
Automake: $AM_TARGET_VERSION
|
|
||||||
Autoconf: $AC_TARGET_VERSION
|
|
||||||
Libtool: $LT_TARGET_VERSION
|
|
||||||
|
|
||||||
Either change this script to match the found version, or install
|
|
||||||
the correct version of the tools.
|
|
||||||
EOF
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
#
|
|
||||||
# Subroutine to actually make a tarball
|
|
||||||
#
|
|
||||||
|
|
||||||
make_tarball() {
|
|
||||||
#
|
|
||||||
# Autogen
|
|
||||||
#
|
|
||||||
echo "*** Running autogen.sh..."
|
|
||||||
rm -f success
|
|
||||||
(./autogen.sh 2>&1 && touch success) | tee auto.out
|
|
||||||
if test ! -f success; then
|
|
||||||
echo "Autogen failed. Aborting"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
#
|
|
||||||
# Configure
|
|
||||||
#
|
|
||||||
echo "*** Running configure..."
|
|
||||||
rm -f success
|
|
||||||
(./configure --enable-dist 2>&1 && touch success) | tee config.out
|
|
||||||
if test ! -f success; then
|
|
||||||
echo "Configure failed. Aborting"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
#
|
|
||||||
# make tarball
|
|
||||||
#
|
|
||||||
echo "*** Running make distcheck..."
|
|
||||||
save_LD=$LD_LIBRARY_PATH
|
|
||||||
LD_LIBRARY_PATH=
|
|
||||||
rm -f success
|
|
||||||
(make dist 2>&1 && touch success) | tee dist.out
|
|
||||||
if test ! -f success; then
|
|
||||||
echo "Make dist failed. Aborting"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
rm -f success
|
|
||||||
LD_LIBRARY_PATH=$save_LD
|
|
||||||
|
|
||||||
#
|
|
||||||
# move
|
|
||||||
#
|
|
||||||
echo "*** Moving tarballs..."
|
|
||||||
mv openmpi-* ..
|
|
||||||
|
|
||||||
echo "*** All done"
|
|
||||||
}
|
|
||||||
|
|
||||||
#########################################################################
|
|
||||||
# main
|
|
||||||
#########################################################################
|
|
||||||
|
|
||||||
echo "*** Checking GNU tools versions..."
|
|
||||||
check_gnu_version m4 $M4_TARGET_VERSION
|
|
||||||
check_gnu_version automake $AM_TARGET_VERSION
|
|
||||||
check_gnu_version autoconf $AC_TARGET_VERSION
|
|
||||||
check_gnu_version libtool $LT_TARGET_VERSION
|
|
||||||
|
|
||||||
#
|
|
||||||
# Verify that we're in a top Open MPI dir
|
|
||||||
#
|
|
||||||
echo "*** Checking to ensure in top-level Open MPI directory..."
|
|
||||||
if test -f VERSION -a -f configure.ac -a -f config/opal_setup_cc.m4; then
|
|
||||||
happy=1
|
|
||||||
else
|
|
||||||
echo "Do not appear to be in an Open MPI top directory. Abort!"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
#
|
|
||||||
# Do svn up and all that
|
|
||||||
#
|
|
||||||
echo "*** Removing old VERSION file..."
|
|
||||||
rm -f VERSION
|
|
||||||
|
|
||||||
if test -d .svn; then
|
|
||||||
echo "*** Running svn up..."
|
|
||||||
svn up
|
|
||||||
if test ! "$?" = "0"; then
|
|
||||||
echo "SVN update failed. Aborting"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
elif test -d .hg; then
|
|
||||||
echo "*** Running hg up..."
|
|
||||||
hg revert VERSION
|
|
||||||
hg up
|
|
||||||
if test ! "$?" = "0"; then
|
|
||||||
echo "HG update failed. Aborting"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
#
|
|
||||||
# Ditch "svn/hg" from all version numbers
|
|
||||||
#
|
|
||||||
echo "*** Removing svn version numbers..."
|
|
||||||
svn_r="r`svnversion .`"
|
|
||||||
version_files=VERSION
|
|
||||||
release_date=`date '+%b %d, %Y'`
|
|
||||||
for file in $version_files; do
|
|
||||||
echo " - $file"
|
|
||||||
sed -e 's/^want_svn=.*/want_svn=0/' \
|
|
||||||
-e 's/^svn_r=.*/'svn_r=$svn_r/ \
|
|
||||||
-e "s/^date=.*/date=\"$release_date\"/" \
|
|
||||||
$file > $file.new
|
|
||||||
cp -f $file.new $file
|
|
||||||
rm $file.new
|
|
||||||
done
|
|
||||||
|
|
||||||
#
|
|
||||||
# Make 2 tarballs:
|
|
||||||
#
|
|
||||||
# - one with the greek
|
|
||||||
# - one without the greek
|
|
||||||
#
|
|
||||||
# unless the user specifically said --greekonly, then only make the
|
|
||||||
# greek tarball. Making both tarballs at once allows us to guarantee
|
|
||||||
# to have two tarballs -- one greek and one not -- that have exactly
|
|
||||||
# the same SVN r number (as opposed to, for example, running this
|
|
||||||
# script to make a greek tarball, then running it again to make a
|
|
||||||
# non-greek tarball -- there is a race condition that someone could
|
|
||||||
# commit in the meantime and change the SVN r number in the 2nd
|
|
||||||
# tarball)
|
|
||||||
#
|
|
||||||
|
|
||||||
# First, make greek tarball
|
|
||||||
|
|
||||||
echo "*** Making greek tarball"
|
|
||||||
make_tarball
|
|
||||||
|
|
||||||
# Now if ! --greekonly, make the non-greek tarball
|
|
||||||
|
|
||||||
if test "$1" != "-greekonly" -a "$1" != "--greekonly"; then
|
|
||||||
echo "*** REMOVING ALL GREEK FROM VERSION NUMBERS!!"
|
|
||||||
for file in $version_files; do
|
|
||||||
echo " - $file"
|
|
||||||
sed -e 's/^greek=.*/greek=/' $file > $file.new
|
|
||||||
cp -f $file.new $file
|
|
||||||
rm $file.new
|
|
||||||
done
|
|
||||||
echo "Making non-greek tarball"
|
|
||||||
make_tarball
|
|
||||||
fi
|
|
||||||
|
|
Загрузка…
x
Ссылка в новой задаче
Block a user