egcs_update (touch_files, [...]): New functions.
authorGerald Pfeifer <pfeifer@dbai.tuwien.ac.at>
Mon, 5 Jul 1999 10:22:15 +0000 (12:22 +0200)
committerGerald Pfeifer <gerald@gcc.gnu.org>
Mon, 5 Jul 1999 10:22:15 +0000 (10:22 +0000)
        * egcs_update (touch_files, apply_patch): New functions.
        Use them.  New command-line option --patch.  Split test of local
        tree into two parts.  Add comments.

Co-Authored-By: Jerry Quinn <jquinn@nortelnetworks.com>
From-SVN: r27946

contrib/ChangeLog
contrib/egcs_update

index 1ebc18d7845283655f8381c5bbeb0aa86501fac8..935ba290b8f50b4a2aeac3be78b5f757f3f4318f 100644 (file)
@@ -1,3 +1,10 @@
+1999-07-05  Gerald Pfeifer  <pfeifer@dbai.tuwien.ac.at>
+            Jerry Quinn <jquinn@nortelnetworks.com>
+
+       * egcs_update (touch_files, apply_patch): New functions.
+       Use them.  New command-line option --patch.  Split test of local
+       tree into two parts.  Add comments.
+
 1999-07-03  Alexandre Oliva  <oliva@dcc.unicamp.br>
 
        * test_summary: If Target is `unix{*}', append the Target variants 
index 6882b234b6096ad7b2b5d48ff5a076a64d7f3c5e..169b2aafb30a3a16e5b0119c5a471435e1b753a9 100755 (executable)
@@ -9,14 +9,18 @@
 # 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.
+# 
 # Examples:
 #
 # contrib/egcs_update -r egcs_latest_snapshot
 # contrib/egcs_update -A
 # contrib/egcs_update --nostdflags -P -r egcs_1_1_branch gcc/testsuite
+# contrib/egcs_update --patch some-patch
 #
 #
-# (C) 1998 Free Software Foundation
+# (C) 1998-1999 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
 # its license can be downloaded from http://www.gnu.org/copyleft/gpl.html
 
 
+# Default options used when updating via CVS.
 UPDATE_OPTIONS=-P
 # Add -d to create any directories that exist in the repository but not
 #        locally.
 # Add -A to reset any sticky tags, dates, or `-k' options.
 
 
+# This function touches generated files such that the ``end'' user does
+# not have to rebuild them.
+#
+# Please also update the FAQ accordingly if you change the list of
+# files below.  Note that generated files should be touched only
+# after the corresponding *.y files.
+touch_files()
+{
+    touch `find . -name configure -print`
+    touch `find texinfo -name Makefile.in -print`
+    touch `find texinfo -name \*.pot -print`
+    touch `find texinfo -name \*.gmo -print`
+    for f in gcc/c-parse.y \
+            gcc/c-parse.h \
+            gcc/c-parse.c \
+            gcc/cstamp-h.in \
+            gcc/c-gperf.h \
+            gcc/cexp.c \
+            gcc/cp/parse.c \
+            gcc/cp/parse.h \
+            gcc/objc/objc-parse.y \
+            gcc/objc/objc-parse.c \
+            gcc/java/parse.h \
+            gcc/java/parse.c \
+            gcc/java/parse-scan.c \
+            libf2c/libU77/stamp-h.in \
+            contrib/fixinc/fixincl.x \
+            contrib/fixinc/inclhack.sh \
+            contrib/fixinc/fixincl.sh \
+            gcc/fixinc/fixincl.x \
+            gcc/fixinc/inclhack.sh \
+            gcc/fixinc/fixincl.sh
+    do
+       if [ -f $f ]; then
+           touch $f
+       fi
+    done
+}
+
+
+# This functions applies a patch to an existing tree.
+apply_patch()
+{
+    if [ -f $1 ]; then
+       echo "Applying patch file $1"
+       case "$1" in
+       *gz)
+           gzip -d -c $1 | patch -p1 ;;
+       *)
+           cat $1 | patch -p1 ;;
+       esac
+    fi
+    echo "Updating file timestamps"
+    touch_files
+}
+
+
+# This is where the actual processing starts.
 echo "Current directory is `pwd`."
 
-# First of all, check whether this indeed looks like a local CVS of egcs.
-if [ ! -d CVS ] || [ ! -f gcc/version.c ]; then
-       echo "This does not seem to be an egcs CVS tree!"
-       exit
+# Check whether this indeed looks like a local tree.
+if [ ! -f gcc/version.c ]; then
+    echo "This does not seem to be an egcs tree!"
+    exit
 fi
 
-# Check command-line options
+# First of all, check whether we are going to process a patch.
+if [ x"${1}"x = x"--patch"x ]; then
+    apply_patch ${2}
+    exit 0
+fi
+
+# Check whether this indeed looks like a local CVS tree.
+if [ ! -d CVS ]; then
+    echo "This does not seem to be an egcs CVS tree!"
+    exit
+fi
 
+# Check command-line options
 if [ x"${1}"x = x"--nostdflags"x ]; then
     shift
 else
@@ -63,7 +137,6 @@ if [ $? -ne 0 ]; then
     exit 1
 fi
 
-
 echo "Pass 2: Updating full tree"
 cvs -q update ${1+"$@"}
 if [ $? -ne 0 ]; then 
@@ -72,35 +145,4 @@ if [ $? -ne 0 ]; then
 fi
 
 echo "Pass 3: Fixing local tree"
-# Please also update the FAQ accordingly if you change the list of
-# files below. Note that generated files should be touched only
-# after the corresponding *.y files.
-touch `find . -name configure -print`
-touch `find texinfo -name Makefile.in -print`
-touch `find texinfo -name \*.pot -print`
-touch `find texinfo -name \*.gmo -print`
-for f in gcc/c-parse.y \
-        gcc/c-parse.h \
-        gcc/c-parse.c \
-        gcc/cstamp-h.in \
-        gcc/c-gperf.h \
-        gcc/cexp.c \
-        gcc/cp/parse.c \
-        gcc/cp/parse.h \
-        gcc/objc/objc-parse.y \
-        gcc/objc/objc-parse.c \
-        gcc/java/parse.h \
-        gcc/java/parse.c \
-        gcc/java/parse-scan.c \
-        libf2c/libU77/stamp-h.in \
-        contrib/fixinc/fixincl.x \
-        contrib/fixinc/inclhack.sh \
-        contrib/fixinc/fixincl.sh \
-        gcc/fixinc/fixincl.x \
-        gcc/fixinc/inclhack.sh \
-        gcc/fixinc/fixincl.sh
-do
-       if [ -f $f ]; then
-               touch $f
-       fi
-done
+touch_files