#! /bin/sh
#
-# Update a local CVS tree from the GCC repository, with an emphasis
+# Update a local Subversion tree from the GCC repository, with an emphasis
# on treating generated files correctly, so that autoconf, gperf et
# al are not required for the ``end'' user.
#
-# By default all command-line options are passed to `cvs update` in
+# (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation
+# Originally by Gerald Pfeifer <pfeifer@dbai.tuwien.ac.at>, August 1998.
+#
+# This script is Free Software, and it can be copied, distributed and
+# modified as defined in the GNU General Public License. A copy of
+# its license can be downloaded from http://www.gnu.org/copyleft/gpl.html
+#
+#
+# By default all command-line options are passed to `svn update` in
# addition to $UPDATE_OPTIONS (defined below). If the first parameter
# reads --nostdflags, $UPDATE_OPTIONS as well as this parameter itself
# are omitted.
# If the first parameter reads --patch, the second parameter is considered
# a patch file.
#
-# If the first parameter is --touch, no cvs operation will be performed,
+# If the first parameter is --touch, no svn operation will be performed,
# only generated files that appear to be out of date in the local tree
# will be touched.
#
#
# Examples:
#
-# contrib/gcc_update -r gcc_latest_snapshot
-# contrib/gcc_update -A
-# contrib/gcc_update --nostdflags -P -r gcc-2_95-branch gcc/testsuite
+# contrib/gcc_update -r 8712
# contrib/gcc_update --patch some-patch
# contrib/gcc_update --touch
# contrib/gcc_update --list
-#
-#
-# (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation
-# Originally by Gerald Pfeifer <pfeifer@dbai.tuwien.ac.at>, August 1998.
-#
-# This script is Free Software, and it can be copied, distributed and
-# modified as defined in the GNU General Public License. A copy of
-# its license can be downloaded from http://www.gnu.org/copyleft/gpl.html
-# CVS command
-GCC_CVS=${GCC_CVS-${CVS-cvs}}
-# Default options used when updating via CVS.
-UPDATE_OPTIONS=-Pd
-# Use -P to prune empty directories.
-# Use -d to create any directories that exist in the repository but not
-# locally.
-# Use -A to reset any sticky tags, dates, or `-k' options.
+# SVN command
+GCC_SVN=${GCC_SVN-${SVN-svn}}
+# Default options used when updating via SVN (none).
+UPDATE_OPTIONS=""
######## Anything below shouldn't be changed by regular users.
# This function prints its arguments to standard output unless
# "silent" is set.
-silent=
+unset silent
chat () {
if [ -z "$silent" ]; then
echo "$@"
# testsuite
# Without this, _Pragma3.c can have a false negative.
gcc/testsuite/gcc.dg/cpp/_Pragma3.c: gcc/testsuite/gcc.dg/cpp/mi1c.h
+# Similarly, without this, you will see:
+# direct2s.c:35: warning: current file is older than direct2.c
+gcc/testsuite/gcc.dg/cpp/direct2s.c: gcc/testsuite/gcc.dg/cpp/direct2.c
# And libraries, at last
libbanshee/configure: libbanshee/configure.ac
libmudflap/configure: libmudflap/configure.ac
libgfortran/aclocal.m4: libgfortran/configure.ac libgfortran/acinclude.m4
libgfortran/Makefile.in: libgfortran/Makefile.am libgfortran/configure.ac libgfortran/aclocal.m4
libgfortran/configure: libgfortran/configure.ac libgfortran/aclocal.m4
-libjava/aclocal.m4: libjava/configure.ac libjava/acinclude.m4
+libjava/aclocal.m4: libjava/configure.ac
libjava/Makefile.in: libjava/Makefile.am libjava/configure.ac libjava/aclocal.m4
libjava/configure: libjava/configure.ac libjava/aclocal.m4
libjava/libltdl/aclocal.m4: libjava/libltdl/configure.ac libjava/libltdl/acinclude.m4
libcpp/aclocal.m4: libcpp/configure.ac
libcpp/Makefile.in: libcpp/configure.ac libcpp/aclocal.m4
libcpp/configure: libcpp/configure.ac libcpp/aclocal.m4
+libgomp/aclocal.m4: libgomp/configure.ac libgomp/acinclude.m4
+libgomp/Makefile.in: libgomp/Makefile.am libgomp/aclocal.m4
+libgomp/testsuite/Makefile.in: libgomp/Makefile.am libgomp/aclocal.m4
+libgomp/configure: libgomp/configure.ac libgomp/aclocal.m4
+libgomp/config.h.in: libgomp/configure.ac libgomp/aclocal.m4
# Top level
Makefile.in: Makefile.tpl Makefile.def
-configure: configure.in config/acx.m4
+configure: configure.ac config/acx.m4
EOF
}
# This functions applies a patch to an existing tree.
apply_patch () {
- if [ -f $1 ]; then
+ if [ -f "$1" ]; then
echo "Applying patch file $1"
- case "$1" in
+ case $1 in
*gz)
- gzip -d -c $1 | patch -p1 ;;
+ gzip -d -c "$1" | patch -p1 ;;
*bz2)
- bzip2 -d -c $1 | patch -p1 ;;
+ bzip2 -d -c "$1" | patch -p1 ;;
*)
- cat $1 | patch -p1 ;;
+ patch -p1 < "$1";;
esac
fi
touch_files_reexec
esac
-# Check whether this indeed looks like a local CVS tree.
-if [ ! -d CVS ]; then
- echo "This does not seem to be a GCC CVS tree!"
+# Check whether this indeed looks like a local SVN tree.
+if [ ! -d .svn ]; then
+ echo "This does not seem to be a GCC SVN tree!"
exit
fi
set -- $UPDATE_OPTIONS ${1+"$@"}
fi
-chat "Updating CVS tree"
+chat "Updating SVN tree"
-$GCC_CVS -q ${silent+-Q} update ${1+"$@"}
+$GCC_SVN ${silent+-q} --non-interactive update ${1+"$@"}
if [ $? -ne 0 ]; then
(touch_files_reexec)
- echo "CVS update of full tree failed." >&2
+ echo "SVN update of full tree failed." >&2
exit 1
fi
+rm -f LAST_UPDATED gcc/REVISION
+
+revision=`svn info | awk '/Revision:/ { print $2 }'`
+branch=`svn info | sed -ne "/URL:/ {
+s,.*/trunk,trunk,
+s,.*/branches/,,
+s,.*/tags/,,
+p
+}"`
{
date
- TZ=UTC date
+ echo "`TZ=UTC date` (revision $revision)"
} > LAST_UPDATED
+
+echo "[$branch revision $revision]" > gcc/REVISION
+
touch_files_reexec