| #! /bin/sh |
| # |
| # Update a local CVS tree from the egcs repository, with an emphasis |
| # on treating generated files correctly, so that autoconf, bison et |
| # al are not required for the ``end'' user. |
| # |
| # By default all command-line options are passed to `cvs update` in |
| # addition to $UPDATE_OPTIONS (defined below). If the first parameter |
| # reads --nostdflags, $UPDATE_OPTIONS as well as this parameter itself |
| # are omitted. |
| # |
| # Examples: |
| # |
| # contrib/egcs_update -r egcs_latest_snapshot |
| # contrib/egcs_update -A |
| # contrib/egcs_update --nostdflags -P -r egcs_1_1_branch gcc/testsuite |
| # |
| # |
| # (C) 1998 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 |
| |
| |
| 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. |
| |
| |
| 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 |
| fi |
| |
| # Check command-line options |
| |
| if [ x"${1}"x = x"--nostdflags"x ]; then |
| shift |
| else |
| set -- $UPDATE_OPTIONS ${1+"$@"} |
| fi |
| |
| |
| echo "Pass 1: Updating autoconf and bison generated files" |
| # Do a CVS update on those files that exist in CVS directories. libg++ |
| # makes sense to drop into the tree, but it isn't CVS-controlled. |
| X=`for i in \`find . -name configure.in -o -name '*.y'\` |
| do |
| D=\`dirname $i\`/CVS |
| if [ -f $i -a -d $D ]; then |
| echo $i |
| fi |
| done` |
| cvs -q update $X |
| if [ $? -ne 0 ]; then |
| echo "CVS update of generated files failed." >&2 |
| exit 1 |
| fi |
| |
| |
| echo "Pass 2: Updating full tree" |
| cvs -q update ${1+"$@"} |
| if [ $? -ne 0 ]; then |
| echo "CVS update of full tree failed." >&2 |
| exit 1 |
| 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 |