1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131
|
#!/bin/sh
#
# Update the current version date in all files in the tree containing
# it. Consider all release branches except those matching the regular
# expression in $IGNORE_BRANCHES, and also consider those branches listed
# in $ADD_BRANCHES.
SVNROOT=${SVNROOT:-"file:///svn/gcc"}
IGNORE_BRANCHES='gcc-(2_95|3_0|3_1|3_2|3_3)-branch'
ADD_BRANCHES='HEAD autovect-branch dfp-branch'
# Run this from /tmp.
export SVNROOT
/bin/rm -rf /tmp/$$
/bin/mkdir /tmp/$$
cd /tmp/$$
# The path to cvs.
SVN=${SVN:-/usr/bin/svn}
# Compute the branches which we should update.
BRANCHES=`$SVN ls $SVNROOT/branches \
| sed -e 's/\///' \
| egrep 'gcc-[0-9]+_[0-9]+-branch$' \
| egrep -v $IGNORE_BRANCHES`
# Always update the mainline.
BRANCHES="${BRANCHES} ${ADD_BRANCHES}"
# ARGS is passed to 'cvs co'
CURR_DATE=`/bin/date +"%Y%m%d"`
# version is contained within a char*
textstring_FILES="gcc/version.c"
# version is contained within a #define
cppdefine_FILES="libstdc++-v3/include/bits/c++config"
# version is all there is
datestamp_FILES="gcc/DATESTAMP"
FILES="$textstring_FILES $cppdefine_FILES $datestamp_FILES"
DIRS="$textstring_DIRS $cppdefine_DIRS $datestamp_DIRS"
# Assume all will go well.
RESULT=0
for BRANCH in $BRANCHES; do
echo "Working on \"$BRANCH\"."
# Check out the files on the branch. HEAD is a special case; if
# you check out files with -r HEAD, CVS will not let you check
# in changes.
if test "$BRANCH" = HEAD; then
for i in $FILES; do
${SVN} -q co -N ${SVNROOT}/trunk/`dirname $i` `basename $i`
done
else
for i in $FILES; do
${SVN} -q co -N ${SVNROOT}/branches/${BRANCH}/`dirname $i` `basename $i`
done
fi
# There are no files to commit yet.
COMMIT_FILES=""
for file in $textstring_FILES; do
dirname=`basename $file`
file=`basename $file`
file="$dirname/$file"
if test -f $file; then
/bin/sed <$file >$file.new -e \
"s/\(.*\"[^ ]*\) [0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]/\1 ${CURR_DATE}/"
if /usr/bin/cmp -s $file $file.new; then
rm -f $file.new
else
mv -f $file.new $file
COMMIT_FILES="$COMMIT_FILES $file"
fi
fi
done
for file in $cppdefine_FILES; do
dirname=`basename $file`
file=`basename $file`
file="$dirname/$file"
if test -f $file; then
/bin/sed <$file >$file.new -e \
"s/\(#.*\) [0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]/\1 ${CURR_DATE}/"
if /usr/bin/cmp -s $file $file.new; then
rm -f $file.new
else
mv -f $file.new $file
COMMIT_FILES="$COMMIT_FILES $file"
fi
fi
done
for file in $datestamp_FILES; do
dirname=`basename $file`
file=`basename $file`
file="$dirname/$file"
if test -f $file; then
echo ${CURR_DATE} > $file.new
if /usr/bin/cmp -s $file $file.new; then
rm -f $file.new
else
mv -f $file.new $file
COMMIT_FILES="$COMMIT_FILES $file"
fi
fi
done
if test -n "$COMMIT_FILES"; then
for i in $COMMIT_FILES; do
echo "Attempting to commit $i"
if ! ${SVN} commit -m "Daily bump." $i; then
# If we could not commit the files, indicate failure.
RESULT=1
fi
done
fi
# Remove the files.
for i in $FILES; do
rm -rf /tmp/$$/`basename $i`
done
done
/bin/rm -rf /tmp/$$
exit $RESULT
|