Subversion Repositories openrisc
Compare Revisions
- This comparison shows the changes necessary to convert path
/openrisc
- from Rev 743 to Rev 744
- ↔ Reverse comparison
Rev 743 → Rev 744
#!/bin/sh |
|
|
# "sh update_web_docs_libstdcxx.sh" |
# Checks out a copy of the libstdc++-v3 "inner" documentation and puts |
# it in the onlinedocs area. For an initial description of "inner" |
# docs, see the thread starting with |
# http://gcc.gnu.org/ml/libstdc++/2000-11/msg00475.html |
# |
# Id: update_v3_web_docs.sh,v 1.4 2000/12/25 05:02:14 pedwards Exp |
##################################################################### |
|
SVNROOT=${SVNROOT:-"file:///svn/gcc"} |
GETTHIS='libstdc++-v3/doc/html' |
WWWDIR=/www/gcc/htdocs/onlinedocs/libstdc++ |
#WWWDIR=/tmp/fake-onlinedocs-testing |
|
|
## No more changes should be needed. Ha, right, whatever. |
##################################################################### |
|
|
PATH=/usr/local/bin:$PATH |
export SVNROOT |
|
test -d $WWWDIR || /bin/mkdir $WWWDIR |
test -d $WWWDIR || { echo something is very wrong ; exit 1; } |
|
WORKDIR=/tmp/v3-doc-update.$$ |
/bin/rm -rf $WORKDIR |
/bin/mkdir $WORKDIR |
cd $WORKDIR |
|
|
# checkout all the HTML files, get down into an interesting directory |
svn -q export $SVNROOT/trunk/$GETTHIS doc |
cd doc |
rm -f Makefile |
|
# copy the tree to the onlinedocs area, preserve directory structure |
#find . -depth -print | cpio -pdv $WWWDIR |
find . -depth -print | cpio -pd $WWWDIR > /dev/null 2>&1 |
|
cd / |
/bin/rm -rf $WORKDIR |
|
.
+ Adjust links to the new location of index.html.
+
+2003-07-08 Gerald Pfeifer
+
+ * gcc_release: Move handling of complex modes directly after
+ switch handling.
+ (TAG): Include the branch name as part of snapshot CVS tags.
+
+2003-07-04 Gerald Pfeifer
+
+ * gcc_release: Execute gcc.gnu.org-only operations which are
+ related to diff generation only if diffs have been requested.
+ (build_sources): Improve tracing and an error message related
+ to tagging.
+
+2003-07-01 Gerald Pfeifer
+
+ * gcc_release (BRANCH): Rename to...
+ (CVSBRANCH): ...new macro, and use BRANCH for the variant users
+ will see.
+ (FTP_BRANCH): For snapshots, include ${BRANCH} in the last part
+ of the directory name.
+ Use .snapshot_date-${BRANCH} instead of .snapshot_date.
+
+2003-06-28 Gerald Pfeifer
+
+ * gcc_release: Command "all" now creates .gz files only for
+ releases and pre-releases.
+
+2003-06-27 Gerald Pfeifer
+
+ * gcc_release (build_sources): Do not include gnats.html any longer.
+ Make an error message more descriptive.
+
+2003-06-25 Gerald Pfeifer
+
+ * gcc_release: Factor the updating of links and READMEs on the
+ FTP server and sending mail for snapshots into a...
+ (announce_snapshot): ...new function.
+ Add informative output for both.
+
+2003-06-18 Gerald Pfeifer
+
+ * gcc_release: Do not update gcc_latest_snapshot tag any longer.
+
+2003-06-18 Gerald Pfeifer
+
+ * snapshot-index.html: Use F77 instead of G77 front end.
+ Remove link to CodeSourcery snapshots which was not up-to-date.
+ Do not refer to gcc-bugs@gcc.gnu.org any longer.
+
+ * snapshot-README: Use F77 front end instead of G77 language.
+
+2003-06-17 Gerald Pfeifer
+
+ * gcc_release (build_tarfile): Build .bz2 files instead of .gz files.
+ (build_bz2): Rename to build_gzip and create .gz files from .bz2
+ files instead of the other way around.
+ (build_gzip): New function.
+ (build_diffs): Build .bz2 files instead of .gz files.
+ (build_diff): Use .bz2 files instead of .gz files.
+ Make an error message independent of the compression format.
+ (MODE_BZIP2): Rename to MODE_GZIP. Related changes to the
+ invocation of this script.
+ (MODE_GZIP): New variable.
+ (OLD_TARS): Use .bz2 archive of the previous snapshot.
+
+2003-06-14 Gerald Pfeifer
+
+ * snapshot-README: Use GCC instead of gcc, C++ front end instead of
+ g++ language, and note that Java includes a run time.
+ * snapshot.index.html: Ditto.
+
+2003-06-10 Gerald Pfeifer
+
+ * gcc_release (build_diff): Properly use ${TAR} instead of
+ hard-coded tar.
+
+2003-05-28 Gerald Pfeifer
+
+ * snapshot-index.html: Refer to .bz2 files instead of .gz files.
+ Simplify the note on not using unannounced snapshots.
+
+2003-05-28 Gerald Pfeifer
+
+ * snapshot-README: Refer to .bz2 files instead of .gz files.
+ Add a note on where to find the diff files.
+ Simplify the note on not using unannounced snapshots.
+ Remove documentation of the gcc_latest_snapshot tag.
+
+2003-05-27 Gerald Pfeifer
+
+ * gcc_release (build_diffs): Add diagnostics in case we cannot
+ generate a specific diff file.
+
+2003-05-24 Gerald Pfeifer
+
+ * gcc_release (build_sources): Only update ChangeLog files which
+ do not yet contain the entry we are going to add.
+ Fix typo in added ChangeLog entries.
+
+2003-05-20 Gerald Pfeifer
+
+ * gcc_release (upload_files): Put diff files into a "diffs"
+ subdirectory
+
+2003-05-18 Nathanael Nerode
+
+ * gcc_release: GNU CC -> GCC.
+
+2003-05-12 Gerald Pfeifer
+
+ * gcc_release (usage): Print more detailed description of all
+ command-line options.
+
+2003-05-09 Gerald Pfeifer
+
+ * update_version (ADD_BRANCHES): Add, set to MAIN and
+ tree-ssa-20020619-branch.
+ (BRANCHES): Always consider branches given by $ADD_BRANCHES.
+
+2003-05-04 Gerald Pfeifer
+
+ * update_version (textstring_FILES): Only version.c needs to be
+ updated, now that we do not consider older branches any more.
+
+2003-05-02 Gerald Pfeifer
+
+ * update_version (IGNORE_BRANCHES): Add.
+ (BRANCHES): Do not consider branches matching $IGNORE_BRANCHES.
+
+2003-05-02 Gerald Pfeifer
+
+ * update_version: Add a trace of which branch we are currently
+ working on.
+
+2002-12-16 Mark Mitchell
+
+ * gcc_release: Make snapshots from the GCC 3.3 branch.
+ * snapshot-README: Update.
+
+2002-09-23 Zack Weinberg
+
+ * update_version: Do not check in files which are unchanged.
+ * gcc_release: Only update the version in gcc/version.c.
+
+2002-09-17 Joseph S. Myers
+
+ * update_web_docs (MANUALS): Add fastjar.
+
+2002-09-08 Joseph S. Myers
+
+ * gcc_release: Make snapshots come from the mainline.
+ * snapshot-README: Update.
+
+2002-08-28 Joseph S. Myers
+
+ * update_web_docs: Remove support for generating g77_news.html and
+ g77_bugs.html.
+ * update_web_docs_old: Likewise. Remove support for generating
+ thanks.html.
+
+2002-07-28 Andreas Jaeger
+
+ * gcc_release: Update comment.
+
+ * snapshot-README: Snapshots are taken from GCC 3.2 branch.
+
+2002-07-28 Mark Mitchell
+
+ * gcc_release: Use the 3.2 branch for snapshots.
+
+2002-05-31 Florian Weimer
+
+ * update_web_docs (MANUALS): Include various flavours of the GNAT
+ User Guide.
+
+2002-05-27 Joseph S. Myers
+
+ * update_version (textstring_FILES): Change gcc/ada/gnatvsn.ads to
+ gcc/gcc/ada/gnatvsn.ads.
+
+2002-05-26 Joseph S. Myers
+
+ * gcc_release: Add gcc/ada/gnatvsn.ads to list of files in which
+ release status is updated.
+ * update_version (textstring_FILES): Add gcc/ada/gnatvsn.ads.
+
+2002-05-21 Joseph S. Myers
+
+ * gcc_release: Do upload files when local.
+
+ * snapshot-README, snapshot-index.html: Remove chill.
+
+2002-05-08 Mark Mitchell
+
+ * gcc_release: Correct upload handling.
+
+2002-04-22 Mark Mitchell
+
+ * gcc_release (build_diffs): Remove reference to Chill.
+
+2002-04-21 Joseph S. Myers
+
+ * update_web_docs (MANUALS): Remove chill. Add gnat_rm.
+
+2002-04-19 Kelley R. Cook (kelly.r.cook@gm.com)
+
+ * gcc_release: Set TZ to UTC0.
+
+2002-04-15 Mark Mitchell
+
+ * gcc_release (build_tarfiles): Do not build Chill tarfiles.
+ (CHILL_DIRS): Remove.
+
+2002-03-10 Joseph S. Myers
+
+ * gcc_release: Build diffs for ada and chill. Make "bzip2" a new
+ major mode.
+
+2002-03-06 Phil Edwards
+
+ * update_version: Don't indent the version string.
+
+2002-03-05 Joseph S. Myers
+
+ * snapshot-README: Note that snapshots come from the 3.1 branch.
+ Update list of files.
+
+2002-03-03 Joseph S. Myers
+
+ * gcc_release: Make snapshots come from the 3.1 branch.
+
+2002-02-25 Mark Mitchell
+
+ * update_version: Automatically update version files on all
+ branches.
+ * crontab: Only invoke update_version once.
+
+2002-02-23 Joseph S. Myers
+
+ * gcc_release: Revert change to -p interface. Allow for local and
+ remote cases in creating directories. Give an error if -p
+ argument names a directory.
+
+2002-02-21 Mark Mitchell
+
+ * gcc_release: Correct handling of diff-generation. Add
+ "diffs" major mode.
+
+2002-02-08 Joseph S. Myers
+
+ * gcc_release: Substitute dates in snapshot-README and
+ snapshot-index.html files rather than directly using the old files
+ on the FTP site. Set QMAILHOST.
+
+2002-02-08 Gerald Pfeifer
+
+ * snapshot-index.html: Improve markup.
+
+2002-01-29 Joseph S. Myers
+
+ * snapshot-README, snapshot-index.html: Use expressions such as
+ @DATE@ rather than hardcoded dates.
+
+ * snapshot-README, snapshot-index.html: New files.
+
+2002-01-06 Gerald Pfeifer
+
+ * update_web_docs (contrib_file): Remove.
+ Also removing special handling of thanks.html.
+
+2001-12-17 Joseph S. Myers
+
+ * update_web_docs: Use makeinfo --html instead of texi2html.
+ Remove support for pre-3.1 GCC versions. Build online docs for
+ gccint manual.
+
+2001-12-17 Joseph S. Myers
+
+ * update_web_docs_old: Copy from update_web_docs. Add comment
+ that this is for GCC 3.0.x and earlier versions.
+
+2001-11-19 Joseph S. Myers
+
+ * gcc_release: Add /usr/local/bin to path when local.
+
+2001-11-06 Joseph S. Myers
+
+ * update_web_docs: Set SOURCEDIR so that install manual can be
+ found when running install.texi2html.
+
+ * gcc_release: Don't require a username if running locally.
+
+2001-11-05 Joseph S. Myers
+
+ * update_web_docs: Eliminate warnings about keeping files from web
+ page preprocessing.
+
+ * update_web_docs: Allow for the same file name in different
+ directories.
+
+2001-10-29 Joseph S. Myers
+
+ * update_web_docs: Generate libiberty and gnat-style manuals.
+
+2001-10-24 Joseph S. Myers
+
+ * gcc_release: Build snapshots from mainline. Generate Ada and
+ Chill tarballs. Correct error check when building diffs. Check
+ for errors when building bzip2 files.
+ * crontab: Use /sourceware/snapshot-tmp for building snapshots.
+
+2001-10-08 Joseph S. Myers
+
+ * crontab: Build weekly snapshots.
+
+ * gcc_release: Copy from 3.0 branch. Add support for building the
+ weekly snapshots on gcc.gnu.org.
+
+2001-08-28 Joseph S. Myers
+
+ * update_web_docs: Also check out texinfo.tex from
+ gcc/doc/include.
+
+2001-08-06 Gerald Pfeifer
+
+ * update_web_docs (PREPROCESS): Rename to WWWPREPROCESS.
+ Preprocess the entire web site, not just the install docs.
+
+2001-06-25 Phil Edwards
+
+ * update_version: Add command-line argument capability, also
+ bump version for libstdc++-v3, and exit with the return code from
+ the cvs commit.
+ * crontab: Call update_version with arguments instead of
+ calling update_branch_version.
+ * update_branch_version: Remove.
+
+2001-06-08 Gerald Pfeifer
+
+ * update_web_docs: Only update the install documentation for the
+ CVS HEAD.
+
+2001-06-07 Joseph S. Myers
+
+ * update_web_docs, doc_exclude: Check out files that may be in the
+ Attic. Check out texinfo.tex. Don't generate anything from
+ c-tree.texi. Generate PostScript output from manuals.
+
+2001-06-04 Gerald Pfeifer
+
+ * update_web_docs (WWWBASE_PREFORMATTED, PREPROCESS): New
+ variables.
+ Fix a comment and add another one.
+ Generate the installation documentation in HTML format from
+ gcc/doc/install.texi.
+
+2001-05-03 Joseph S. Myers
+
+ * update_web_docs: Don't generate HTML from gxxint.texi. Don't
+ run texi2html on manuals that aren't present.
+
+2001-03-18 Phil Edwards
+
+ * update_web_docs_libstdcxx: New script.
+ * crontab: Call said script.
+
+2001-03-18 Joseph S. Myers
+
+ * update_version, update_branch_version: Check out with gcc
+ directory instead of using egcs link.
+
+2001-03-17 Joseph S. Myers
+
+ * update_web_docs: Don't strip leading -r from argument following
+ -r, or leading -d from argument following -d. Bug pointed out by
+ Matt Kraai.
+
+ * update_web_docs: Handle -r and -d options to generate docs for a
+ release or branch in a subdirectory. Determine names of G77 news
+ and bugs files and contributors file after updated docs have been
+ installed, not before. Don't remove files from a subdirectory.
+ Don't generate manuals for gcov (included in the GCC manual) or
+ iostream (obsolete). Do generate manuals for cppinternals, gcj
+ and porting. Update regular expressions for detecting whether
+ files have really changed when regenerated.
+
+2001-03-15 Joseph S. Myers
+
+ * update_web_docs: Use /usr/local/bin/texi2html rather than
+ gccadmin's local copy.
+
+2001-03-10 Joseph S. Myers
+
+ * crontab, doc_exclude, update_branch_version, update_version,
+ update_web_docs: New files (as currently used by gccadmin).
+ * README: New file.
Index: trunk/gnu-dev/or1k-gcc/maintainer-scripts/crontab
===================================================================
--- trunk/gnu-dev/or1k-gcc/maintainer-scripts/crontab (nonexistent)
+++ trunk/gnu-dev/or1k-gcc/maintainer-scripts/crontab (revision 744)
@@ -0,0 +1,8 @@
+16 0 * * * sh /home/gccadmin/scripts/update_version_svn
+50 0 * * * sh /home/gccadmin/scripts/update_web_docs_svn
+55 0 * * * sh /home/gccadmin/scripts/update_web_docs_libstdcxx_svn
+32 22 * * 0 sh /home/gccadmin/scripts/gcc_release -s 4.3:branches/gcc-4_3-branch -l -d /sourceware/snapshot-tmp/gcc all
+32 22 * * 2 sh /home/gccadmin/scripts/gcc_release -s 4.4:branches/gcc-4_4-branch -l -d /sourceware/snapshot-tmp/gcc all
+32 22 * * 4 sh /home/gccadmin/scripts/gcc_release -s 4.5:branches/gcc-4_5-branch -l -d /sourceware/snapshot-tmp/gcc all
+32 22 * * 5 sh /home/gccadmin/scripts/gcc_release -s 4.6:branches/gcc-4_6-branch -l -d /sourceware/snapshot-tmp/gcc all
+32 22 * * 6 sh /home/gccadmin/scripts/gcc_release -s 4.7:trunk -l -d /sourceware/snapshot-tmp/gcc all
Index: trunk/gnu-dev/or1k-gcc/maintainer-scripts/gcc_release
===================================================================
--- trunk/gnu-dev/or1k-gcc/maintainer-scripts/gcc_release (nonexistent)
+++ trunk/gnu-dev/or1k-gcc/maintainer-scripts/gcc_release (revision 744)
@@ -0,0 +1,693 @@
+#! /bin/sh
+
+########################################################################
+#
+# File: gcc_release
+# Author: Jeffrey Law, Bernd Schmidt, Mark Mitchell
+# Date: 2001-05-25
+#
+# Contents:
+# Script to create a GCC release.
+#
+# Copyright (c) 2001, 2002, 2006, 2009, 2010, 2011 Free Software Foundation.
+#
+# This file is part of GCC.
+#
+# GCC is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3, or (at your option)
+# any later version.
+#
+# GCC is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with GCC; see the file COPYING3. If not see
+# .
+#
+########################################################################
+
+########################################################################
+# Notes
+########################################################################
+
+# Here is an example usage of this script, to create a GCC 3.0.2
+# prerelease:
+#
+# gcc_release -r 3.0.2
+#
+# This script will automatically use the head of the release branch
+# to generate the release.
+
+########################################################################
+# Functions
+########################################################################
+
+# Issue the error message given by $1 and exit with a non-zero
+# exit code.
+
+error() {
+ echo "gcc_release: error: $1"
+ exit 1
+}
+
+# Issue the informational message given by $1.
+
+inform() {
+ echo "gcc_release: $1"
+}
+
+# Issue a usage message explaining how to use this script.
+
+usage() {
+cat < /dev/null ; then
+ cat - ${x} > ${x}.new < DEV-PHASE && \
+ ${SVN} -q ci -m 'Mark as release' DEV-PHASE) || \
+ error "Could not update DEV-PHASE"
+
+ # Make sure we tag the sources for a final release.
+ TAG="tags/gcc_`echo ${RELEASE} | tr . _`_release"
+
+ rm -rf ${SOURCE_DIRECTORY}
+ fi
+
+ # Tag the sources.
+ if [ -n "${TAG}" ]; then
+ inform "Tagging sources as ${TAG}"
+ # We don't want to overwrite an existing tag. So, if the tag
+ # already exists, issue an error message; the release manager can
+ # manually remove the tag if appropriate.
+ echo "${SVN} ls ${SVNROOT}/${TAG}/ChangeLog"
+ if ${SVN} ls "${SVNROOT}/${TAG}/ChangeLog"; then
+ error "Tag ${TAG} already exists"
+ fi
+ ${SVN} -m "Tagging source as ${TAG}" cp "${SVNROOT}/${SVNBRANCH}" "${SVNROOT}/${TAG}" || \
+ error "Could not tag sources"
+ SVNBRANCH=${TAG}
+ fi
+ SVNREV=`${SVN} info "${SVNROOT}/${SVNBRANCH}"|awk '/Revision:/ {print $2}'`
+
+ # Export the current sources.
+ inform "Retrieving sources (svn export -r ${SVNREV} ${SVNROOT}/${SVNBRANCH})"
+
+ ${SVN} -q export -r${SVNREV} "${SVNROOT}/${SVNBRANCH}" "`basename ${SOURCE_DIRECTORY}`" ||\
+ error "Could not retrieve sources"
+
+ # Run gcc_update on them to set up the timestamps nicely, and (re)write
+ # the LAST_UPDATED file containing the SVN tag/revision used.
+ changedir "gcc-${RELEASE}"
+ contrib/gcc_update --touch
+ echo "Obtained from SVN: ${SVNBRANCH} revision ${SVNREV}" > LAST_UPDATED
+
+ # For a prerelease or real release, we need to generate additional
+ # files not present in SVN.
+ changedir "${SOURCE_DIRECTORY}"
+ if [ $SNAPSHOT -ne 1 ]; then
+ # Generate the documentation.
+ inform "Building install docs"
+ SOURCEDIR=${SOURCE_DIRECTORY}/gcc/doc
+ DESTDIR=${SOURCE_DIRECTORY}/INSTALL
+ export SOURCEDIR
+ export DESTDIR
+ ${SOURCE_DIRECTORY}/gcc/doc/install.texi2html
+
+ # Regenerate the NEWS file.
+ contrib/gennews > NEWS || \
+ error "Could not regenerate NEWS files"
+
+ # Now, we must build the compiler in order to create any generated
+ # files that are supposed to go in the source directory. This is
+ # also a good sanity check to make sure that the release builds
+ # on at least one platform.
+ inform "Building compiler"
+ OBJECT_DIRECTORY=../objdir
+ contrib/gcc_build -d ${SOURCE_DIRECTORY} -o ${OBJECT_DIRECTORY} \
+ -c "--enable-generated-files-in-srcdir --disable-multilib" build || \
+ error "Could not rebuild GCC"
+ fi
+
+ # Move message catalogs to source directory.
+ mv ../objdir/gcc/po/*.gmo gcc/po/
+ [ -f libcpp/po/cpplib.pot ] && mv ../objdir/libcpp/po/*.gmo libcpp/po/
+
+ # Create a "MD5SUMS" file to use for checking the validity of the release.
+ echo \
+"# This file contains the MD5 checksums of the files in the
+# gcc-"${RELEASE}".tar.bz2 tarball.
+#
+# Besides verifying that all files in the tarball were correctly expanded,
+# it also can be used to determine if any files have changed since the
+# tarball was expanded or to verify that a patchfile was correctly applied.
+#
+# Suggested usage:
+# md5sum -c MD5SUMS | grep -v \"OK$\"
+" > MD5SUMS
+
+ find . -type f |
+ sed -e 's:^\./::' -e '/MD5SUMS/d' |
+ sort |
+ xargs md5sum >>MD5SUMS
+}
+
+# Build a single tarfile. The first argument is the name of the tarfile
+# to build, without any suffixes. They will be added automatically. The
+# rest of the arguments are files or directories to include, and possibly
+# other arguments to tar.
+
+build_tarfile() {
+ # Get the name of the destination tar file.
+ TARFILE="$1.tar.bz2"
+ shift
+
+ # Build the tar file itself.
+ (${TAR} cf - "$@" | ${BZIP2} > ${TARFILE}) || \
+ error "Could not build tarfile"
+ FILE_LIST="${FILE_LIST} ${TARFILE}"
+}
+
+# Build the various tar files for the release.
+
+build_tarfiles() {
+ inform "Building tarfiles"
+
+ changedir "${WORKING_DIRECTORY}"
+
+ # The GNU Coding Standards specify that all files should
+ # world readable.
+ chmod -R a+r ${SOURCE_DIRECTORY}
+ # And that all directories have mode 755.
+ find ${SOURCE_DIRECTORY} -type d -exec chmod 755 {} \;
+
+ # Build one huge tarfile for the entire distribution.
+ build_tarfile gcc-${RELEASE} `basename ${SOURCE_DIRECTORY}`
+}
+
+# Build .gz files.
+build_gzip() {
+ for f in ${FILE_LIST}; do
+ target=${f%.bz2}.gz
+ (${BZIP2} -d -c $f | ${GZIP} > ${target}) || error "Could not create ${target}"
+ done
+}
+
+# Build diffs against an old release.
+build_diffs() {
+ old_dir=${1%/*}
+ old_file=${1##*/}
+ old_vers=${old_file%.tar.bz2}
+ old_vers=${old_vers#gcc-}
+ inform "Building diffs against version $old_vers"
+ for f in gcc; do
+ old_tar=${old_dir}/${f}-${old_vers}.tar.bz2
+ new_tar=${WORKING_DIRECTORY}/${f}-${RELEASE}.tar.bz2
+ if [ ! -e $old_tar ]; then
+ inform "$old_tar not found; not generating diff file"
+ elif [ ! -e $new_tar ]; then
+ inform "$new_tar not found; not generating diff file"
+ else
+ build_diff $old_tar gcc-${old_vers} $new_tar gcc-${RELEASE} \
+ ${f}-${old_vers}-${RELEASE}.diff.bz2
+ fi
+ done
+}
+
+# Build an individual diff.
+build_diff() {
+ changedir "${WORKING_DIRECTORY}"
+ tmpdir=gccdiff.$$
+ mkdir $tmpdir || error "Could not create directory $tmpdir"
+ changedir $tmpdir
+ (${BZIP2} -d -c $1 | ${TAR} xf - ) || error "Could not unpack $1 for diffs"
+ (${BZIP2} -d -c $3 | ${TAR} xf - ) || error "Could not unpack $3 for diffs"
+ ${DIFF} $2 $4 > ../${5%.bz2}
+ if [ $? -eq 2 ]; then
+ error "Trouble making diffs from $1 to $3"
+ fi
+ ${BZIP2} ../${5%.bz2} || error "Could not generate ../$5"
+ changedir ..
+ rm -rf $tmpdir
+ FILE_LIST="${FILE_LIST} $5"
+}
+
+# Upload the files to the FTP server.
+upload_files() {
+ inform "Uploading files"
+
+ changedir "${WORKING_DIRECTORY}"
+
+ # Make sure the directory exists on the server.
+ if [ $LOCAL -eq 0 ]; then
+ ${SSH} -l ${GCC_USERNAME} ${GCC_HOSTNAME} \
+ mkdir -p "${FTP_PATH}/diffs"
+ UPLOAD_PATH="${GCC_USERNAME}@${GCC_HOSTNAME}:${FTP_PATH}"
+ else
+ mkdir -p "${FTP_PATH}/diffs" \
+ || error "Could not create \`${FTP_PATH}'"
+ UPLOAD_PATH=${FTP_PATH}
+ fi
+
+ # Then copy files to their respective (sub)directories.
+ for x in gcc*.gz gcc*.bz2; do
+ if [ -e ${x} ]; then
+ # Make sure the file will be readable on the server.
+ chmod a+r ${x}
+ # Copy it.
+ case ${x} in
+ *.diff.*)
+ SUBDIR="diffs/";
+ ;;
+ *)
+ SUBDIR="";
+ esac
+ ${SCP} ${x} ${UPLOAD_PATH}/${SUBDIR} \
+ || error "Could not upload ${x}"
+ fi
+ done
+}
+
+# Print description if snapshot exists.
+snapshot_print() {
+ if [ -e ${RELEASE}/$1 ]; then
+ hash=`openssl md5 ${RELEASE}/$1 | sed -e 's#(.*)##' -e 's# *= *#=#'`
+ hash2=`openssl sha1 ${RELEASE}/$1 | sed -e 's#(.*)##' -e 's# *= *#=#'`
+
+ printf " %-37s%s\n\n %s\n %s\n\n" "$1" "$2" "$hash" "$hash2" \
+ >> ${SNAPSHOT_README}
+
+ echo " $1 " >> ${SNAPSHOT_INDEX}
+ echo " $2 " >> ${SNAPSHOT_INDEX}
+ fi
+}
+
+# Announce a snapshot, both on the web and via mail.
+announce_snapshot() {
+ inform "Updating links and READMEs on the FTP server"
+
+ TEXT_DATE=`date --date=$DATE +%B\ %d,\ %Y`
+ SNAPSHOT_README=${RELEASE}/README
+ SNAPSHOT_INDEX=${RELEASE}/index.html
+
+ changedir "${SNAPSHOTS_DIR}"
+ echo \
+"Snapshot gcc-"${RELEASE}" is now available on
+ ftp://gcc.gnu.org/pub/gcc/snapshots/"${RELEASE}"/
+and on various mirrors, see http://gcc.gnu.org/mirrors.html for details.
+
+This snapshot has been generated from the GCC "${BRANCH}" SVN branch
+with the following options: "svn://gcc.gnu.org/svn/gcc/${SVNBRANCH} revision ${SVNREV}"
+
+You'll find:
+" > ${SNAPSHOT_README}
+
+ echo \
+"
+
+
+GCC "${RELEASE}" Snapshot
+
+
+
+GCC "${RELEASE}" Snapshot
+
+The GCC Project makes
+periodic snapshots of the GCC source tree available to the public
+for testing purposes.
+
+If you are planning to download and use one of our snapshots, then
+we highly recommend you join the GCC developers list. Details for
+how to sign up can be found on the GCC project home page.
+
+This snapshot has been generated from the GCC "${BRANCH}" SVN branch
+with the following options: "svn://gcc.gnu.org/svn/gcc/${SVNBRANCH} revision ${SVNREV}"
+
+" > ${SNAPSHOT_INDEX}
+
+ snapshot_print gcc-${RELEASE}.tar.bz2 "Complete GCC"
+
+ echo \
+"Diffs from "${BRANCH}"-"${LAST_DATE}" are available in the diffs/ subdirectory.
+
+When a particular snapshot is ready for public consumption the LATEST-"${BRANCH}"
+link is updated and a message is sent to the gcc list. Please do not use
+a snapshot before it has been announced that way." >> ${SNAPSHOT_README}
+
+ echo \
+"
+Diffs from "${BRANCH}"-"${LAST_DATE}" are available in the
+diffs/ subdirectory.
+
+When a particular snapshot is ready for public consumption the LATEST-"${BRANCH}"
+link is updated and a message is sent to the gcc list. Please do not use
+a snapshot before it has been announced that way.
+
+
+
+
+gcc@gcc.gnu.org
+
+Last modified "${TEXT_DATE}"
+
+
+
+" >> ${SNAPSHOT_INDEX}
+
+ rm -f LATEST-${BRANCH}
+ ln -s ${RELEASE} LATEST-${BRANCH}
+
+ inform "Sending mail"
+
+ export QMAILHOST=gcc.gnu.org
+ mail -s "gcc-${RELEASE} is now available" gcc@gcc.gnu.org < ${SNAPSHOT_README}
+}
+
+########################################################################
+# Initialization
+########################################################################
+
+LC_ALL=C
+export LC_ALL
+
+# Today's date.
+DATE=`date "+%Y%m%d"`
+LONG_DATE=`date "+%Y-%m-%d"`
+
+SVN=${SVN:-svn}
+# The CVS server containing the GCC repository.
+SVN_SERVER="gcc.gnu.org"
+# The path to the repository on that server.
+SVN_REPOSITORY="/svn/gcc"
+# The username to use when connecting to the server.
+SVN_USERNAME="${USER}"
+
+# The machine to which files will be uploaded.
+GCC_HOSTNAME="gcc.gnu.org"
+# The name of the account on the machine to which files are uploaded.
+GCC_USERNAME="gccadmin"
+# The directory in which the files will be placed (do not use ~user syntax).
+FTP_PATH=/var/ftp/pub/gcc
+# The directory in which snapshots will be placed.
+SNAPSHOTS_DIR=${FTP_PATH}/snapshots
+
+# The major number for the release. For release `3.0.2' this would be
+# `3'
+RELEASE_MAJOR=""
+# The minor number for the release. For release `3.0.2' this would be
+# `0'.
+RELEASE_MINOR=""
+# The revision number for the release. For release `3.0.2' this would
+# be `2'.
+RELEASE_REVISION=""
+# The complete name of the release.
+RELEASE=""
+
+# The name of the branch from which the release should be made, in a
+# user-friendly form.
+BRANCH=""
+
+# The name of the branch from which the release should be made, as used
+# for our version control system.
+SVNBRANCH=""
+
+# The tag to apply to the sources used for the release.
+TAG=""
+
+# The old tarballs from which to generate diffs.
+OLD_TARS=""
+
+# The directory that will be used to construct the release. The
+# release itself will be placed in a subdirectory of this directory.
+DESTINATION=${HOME}
+# The subdirectory.
+WORKING_DIRECTORY=""
+# The directory that will contain the GCC sources.
+SOURCE_DIRECTORY=""
+
+# Non-zero if this is the final release, rather than a prerelease.
+FINAL=0
+
+# Non-zero if we are building a snapshot, and don't build gcc or
+# include generated files.
+SNAPSHOT=0
+
+# Non-zero if we are running locally on gcc.gnu.org, and use local CVS
+# and copy directly to the FTP directory.
+LOCAL=0
+
+# Major operation modes.
+MODE_GZIP=0
+MODE_DIFFS=0
+MODE_SOURCES=0
+MODE_TARFILES=0
+MODE_UPLOAD=0
+
+# List of archive files generated; used to create .gz files from .bz2.
+FILE_LIST=""
+
+# Programs we use.
+
+BZIP2="${BZIP2:-bzip2}"
+CVS="${CVS:-cvs -f -Q -z9}"
+DIFF="${DIFF:-diff -Nrcpad}"
+ENV="${ENV:-env}"
+GZIP="${GZIP:-gzip --best}"
+SCP="${SCP:-scp -p}"
+SSH="${SSH:-ssh}"
+TAR="${TAR:-tar}"
+
+########################################################################
+# Command Line Processing
+########################################################################
+
+# Parse the options.
+while getopts "d:fr:u:t:p:s:l" ARG; do
+ case $ARG in
+ d) DESTINATION="${OPTARG}";;
+ r) RELEASE="${OPTARG}";;
+ t) TAG="${OPTARG}";;
+ u) SVN_USERNAME="${OPTARG}";;
+ f) FINAL=1;;
+ s) SNAPSHOT=1
+ BRANCH=${OPTARG%:*}
+ SVNBRANCH=${OPTARG#*:}
+ ;;
+ l) LOCAL=1
+ SCP=cp
+ PATH=~:/usr/local/bin:$PATH;;
+ p) OLD_TARS="${OLD_TARS} ${OPTARG}"
+ if [ ! -f ${OPTARG} ]; then
+ error "-p argument must name a tarball"
+ fi;;
+ \?) usage;;
+ esac
+done
+shift `expr ${OPTIND} - 1`
+
+# Handle the major modes.
+while [ $# -ne 0 ]; do
+ case $1 in
+ diffs) MODE_DIFFS=1;;
+ gzip) MODE_GZIP=1;;
+ sources) MODE_SOURCES=1;;
+ tarfiles) MODE_TARFILES=1;;
+ upload) MODE_UPLOAD=1;;
+ all) MODE_SOURCES=1; MODE_TARFILES=1; MODE_DIFFS=1; MODE_UPLOAD=1;
+ if [ $SNAPSHOT -ne 1 ]; then
+ # Only for releases and pre-releases.
+ MODE_GZIP=1;
+ fi
+ ;;
+ *) error "Unknown mode $1";;
+ esac
+ shift
+done
+
+# Perform consistency checking.
+if [ ${LOCAL} -eq 0 ] && [ -z ${SVN_USERNAME} ]; then
+ error "No username specified"
+fi
+
+if [ ! -d ${DESTINATION} ]; then
+ error "\`${DESTINATION}' is not a directory"
+fi
+
+if [ $SNAPSHOT -eq 0 ]; then
+ if [ -z ${RELEASE} ]; then
+ error "No release number specified"
+ fi
+
+ # Compute the major and minor release numbers.
+ RELEASE_MAJOR=`echo $RELEASE | awk --assign FS=. '{ print $1; }'`
+ RELEASE_MINOR=`echo $RELEASE | awk --assign FS=. '{ print $2; }'`
+ RELEASE_REVISION=`echo $RELEASE | awk --assign FS=. '{ print $3; }'`
+
+ if [ -z "${RELEASE_MAJOR}" ] || [ -z "${RELEASE_MINOR}" ]; then
+ error "Release number \`${RELEASE}' is invalid"
+ fi
+
+ # Compute the full name of the release.
+ if [ -z "${RELEASE_REVISION}" ]; then
+ RELEASE="${RELEASE_MAJOR}.${RELEASE_MINOR}"
+ else
+ RELEASE="${RELEASE_MAJOR}.${RELEASE_MINOR}.${RELEASE_REVISION}"
+ fi
+
+ # Compute the name of the branch, which is based solely on the major
+ # and minor release numbers.
+ SVNBRANCH="branches/gcc-${RELEASE_MAJOR}_${RELEASE_MINOR}-branch"
+
+ # If this is not a final release, set various parameters accordingly.
+ if [ ${FINAL} -ne 1 ]; then
+ RELEASE="${RELEASE}-RC-${DATE}"
+ FTP_PATH="${SNAPSHOTS_DIR}/${RELEASE}"
+ else
+ FTP_PATH="${FTP_PATH}/releases/gcc-${RELEASE}/"
+ fi
+else
+ RELEASE=${BRANCH}-${DATE}
+ FTP_PATH="${FTP_PATH}/snapshots/${RELEASE}"
+
+ # If diffs are requested when building locally on gcc.gnu.org, we (usually)
+ # know what the last snapshot date was and take the corresponding tarballs,
+ # unless the user specified tarballs explicitly.
+ if [ $MODE_DIFFS -ne 0 ] && [ $LOCAL -ne 0 ] && [ -z "${OLD_TARS}" ]; then
+ LAST_DATE=`cat ~/.snapshot_date-${BRANCH}`
+ OLD_TARS=${SNAPSHOTS_DIR}/${BRANCH}-${LAST_DATE}/gcc-${BRANCH}-${LAST_DATE}.tar.bz2
+ fi
+fi
+
+# Compute the name of the WORKING_DIRECTORY and the SOURCE_DIRECTORY.
+WORKING_DIRECTORY="${DESTINATION}/gcc-${RELEASE}"
+SOURCE_DIRECTORY="${WORKING_DIRECTORY}/gcc-${RELEASE}"
+
+# Set up SVNROOT.
+if [ $LOCAL -eq 0 ]; then
+ SVNROOT="svn+ssh://${SVN_USERNAME}@${SVN_SERVER}${SVN_REPOSITORY}"
+else
+ SVNROOT="file:///svn/gcc"
+fi
+export SVNROOT
+
+########################################################################
+# Main Program
+########################################################################
+
+# Set the timezone to UTC
+TZ="UTC0"
+export TZ
+
+# Build the source directory.
+
+if [ $MODE_SOURCES -ne 0 ]; then
+ build_sources
+fi
+
+# Build the tar files.
+
+if [ $MODE_TARFILES -ne 0 ]; then
+ build_tarfiles
+fi
+
+# Build diffs
+
+if [ $MODE_DIFFS -ne 0 ]; then
+ # Possibly build diffs.
+ if [ -n "$OLD_TARS" ]; then
+ for old_tar in $OLD_TARS; do
+ build_diffs $old_tar
+ done
+ fi
+fi
+
+# Build gzip files
+if [ $MODE_GZIP -ne 0 ]; then
+ build_gzip
+fi
+
+# Upload them to the FTP server.
+if [ $MODE_UPLOAD -ne 0 ]; then
+ upload_files
+
+ # For snapshots, make some further updates.
+ if [ $SNAPSHOT -ne 0 ] && [ $LOCAL -ne 0 ]; then
+ announce_snapshot
+
+ # Update snapshot date file.
+ changedir ~
+ echo $DATE > .snapshot_date-${BRANCH}
+
+ # Remove working directory
+ rm -rf ${WORKING_DIRECTORY}
+ fi
+fi
GCC "${RELEASE}" Snapshot
+ +The GCC Project makes +periodic snapshots of the GCC source tree available to the public +for testing purposes.
+ +If you are planning to download and use one of our snapshots, then +we highly recommend you join the GCC developers list. Details for +how to sign up can be found on the GCC project home page.
+ +This snapshot has been generated from the GCC "${BRANCH}" SVN branch
+with the following options: "svn://gcc.gnu.org/svn/gcc/${SVNBRANCH} revision ${SVNREV}"
Diffs from "${BRANCH}"-"${LAST_DATE}" are available in the +diffs/ subdirectory.
+ +When a particular snapshot is ready for public consumption the LATEST-"${BRANCH}" +link is updated and a message is sent to the gcc list. Please do not use +a snapshot before it has been announced that way.
+ ++ + +gcc@gcc.gnu.org +
+Last modified "${TEXT_DATE}" + + + +" >> ${SNAPSHOT_INDEX} + + rm -f LATEST-${BRANCH} + ln -s ${RELEASE} LATEST-${BRANCH} + + inform "Sending mail" + + export QMAILHOST=gcc.gnu.org + mail -s "gcc-${RELEASE} is now available" gcc@gcc.gnu.org < ${SNAPSHOT_README} +} + +######################################################################## +# Initialization +######################################################################## + +LC_ALL=C +export LC_ALL + +# Today's date. +DATE=`date "+%Y%m%d"` +LONG_DATE=`date "+%Y-%m-%d"` + +SVN=${SVN:-svn} +# The CVS server containing the GCC repository. +SVN_SERVER="gcc.gnu.org" +# The path to the repository on that server. +SVN_REPOSITORY="/svn/gcc" +# The username to use when connecting to the server. +SVN_USERNAME="${USER}" + +# The machine to which files will be uploaded. +GCC_HOSTNAME="gcc.gnu.org" +# The name of the account on the machine to which files are uploaded. +GCC_USERNAME="gccadmin" +# The directory in which the files will be placed (do not use ~user syntax). +FTP_PATH=/var/ftp/pub/gcc +# The directory in which snapshots will be placed. +SNAPSHOTS_DIR=${FTP_PATH}/snapshots + +# The major number for the release. For release `3.0.2' this would be +# `3' +RELEASE_MAJOR="" +# The minor number for the release. For release `3.0.2' this would be +# `0'. +RELEASE_MINOR="" +# The revision number for the release. For release `3.0.2' this would +# be `2'. +RELEASE_REVISION="" +# The complete name of the release. +RELEASE="" + +# The name of the branch from which the release should be made, in a +# user-friendly form. +BRANCH="" + +# The name of the branch from which the release should be made, as used +# for our version control system. +SVNBRANCH="" + +# The tag to apply to the sources used for the release. +TAG="" + +# The old tarballs from which to generate diffs. +OLD_TARS="" + +# The directory that will be used to construct the release. The +# release itself will be placed in a subdirectory of this directory. +DESTINATION=${HOME} +# The subdirectory. +WORKING_DIRECTORY="" +# The directory that will contain the GCC sources. +SOURCE_DIRECTORY="" + +# Non-zero if this is the final release, rather than a prerelease. +FINAL=0 + +# Non-zero if we are building a snapshot, and don't build gcc or +# include generated files. +SNAPSHOT=0 + +# Non-zero if we are running locally on gcc.gnu.org, and use local CVS +# and copy directly to the FTP directory. +LOCAL=0 + +# Major operation modes. +MODE_GZIP=0 +MODE_DIFFS=0 +MODE_SOURCES=0 +MODE_TARFILES=0 +MODE_UPLOAD=0 + +# List of archive files generated; used to create .gz files from .bz2. +FILE_LIST="" + +# Programs we use. + +BZIP2="${BZIP2:-bzip2}" +CVS="${CVS:-cvs -f -Q -z9}" +DIFF="${DIFF:-diff -Nrcpad}" +ENV="${ENV:-env}" +GZIP="${GZIP:-gzip --best}" +SCP="${SCP:-scp -p}" +SSH="${SSH:-ssh}" +TAR="${TAR:-tar}" + +######################################################################## +# Command Line Processing +######################################################################## + +# Parse the options. +while getopts "d:fr:u:t:p:s:l" ARG; do + case $ARG in + d) DESTINATION="${OPTARG}";; + r) RELEASE="${OPTARG}";; + t) TAG="${OPTARG}";; + u) SVN_USERNAME="${OPTARG}";; + f) FINAL=1;; + s) SNAPSHOT=1 + BRANCH=${OPTARG%:*} + SVNBRANCH=${OPTARG#*:} + ;; + l) LOCAL=1 + SCP=cp + PATH=~:/usr/local/bin:$PATH;; + p) OLD_TARS="${OLD_TARS} ${OPTARG}" + if [ ! -f ${OPTARG} ]; then + error "-p argument must name a tarball" + fi;; + \?) usage;; + esac +done +shift `expr ${OPTIND} - 1` + +# Handle the major modes. +while [ $# -ne 0 ]; do + case $1 in + diffs) MODE_DIFFS=1;; + gzip) MODE_GZIP=1;; + sources) MODE_SOURCES=1;; + tarfiles) MODE_TARFILES=1;; + upload) MODE_UPLOAD=1;; + all) MODE_SOURCES=1; MODE_TARFILES=1; MODE_DIFFS=1; MODE_UPLOAD=1; + if [ $SNAPSHOT -ne 1 ]; then + # Only for releases and pre-releases. + MODE_GZIP=1; + fi + ;; + *) error "Unknown mode $1";; + esac + shift +done + +# Perform consistency checking. +if [ ${LOCAL} -eq 0 ] && [ -z ${SVN_USERNAME} ]; then + error "No username specified" +fi + +if [ ! -d ${DESTINATION} ]; then + error "\`${DESTINATION}' is not a directory" +fi + +if [ $SNAPSHOT -eq 0 ]; then + if [ -z ${RELEASE} ]; then + error "No release number specified" + fi + + # Compute the major and minor release numbers. + RELEASE_MAJOR=`echo $RELEASE | awk --assign FS=. '{ print $1; }'` + RELEASE_MINOR=`echo $RELEASE | awk --assign FS=. '{ print $2; }'` + RELEASE_REVISION=`echo $RELEASE | awk --assign FS=. '{ print $3; }'` + + if [ -z "${RELEASE_MAJOR}" ] || [ -z "${RELEASE_MINOR}" ]; then + error "Release number \`${RELEASE}' is invalid" + fi + + # Compute the full name of the release. + if [ -z "${RELEASE_REVISION}" ]; then + RELEASE="${RELEASE_MAJOR}.${RELEASE_MINOR}" + else + RELEASE="${RELEASE_MAJOR}.${RELEASE_MINOR}.${RELEASE_REVISION}" + fi + + # Compute the name of the branch, which is based solely on the major + # and minor release numbers. + SVNBRANCH="branches/gcc-${RELEASE_MAJOR}_${RELEASE_MINOR}-branch" + + # If this is not a final release, set various parameters accordingly. + if [ ${FINAL} -ne 1 ]; then + RELEASE="${RELEASE}-RC-${DATE}" + FTP_PATH="${SNAPSHOTS_DIR}/${RELEASE}" + else + FTP_PATH="${FTP_PATH}/releases/gcc-${RELEASE}/" + fi +else + RELEASE=${BRANCH}-${DATE} + FTP_PATH="${FTP_PATH}/snapshots/${RELEASE}" + + # If diffs are requested when building locally on gcc.gnu.org, we (usually) + # know what the last snapshot date was and take the corresponding tarballs, + # unless the user specified tarballs explicitly. + if [ $MODE_DIFFS -ne 0 ] && [ $LOCAL -ne 0 ] && [ -z "${OLD_TARS}" ]; then + LAST_DATE=`cat ~/.snapshot_date-${BRANCH}` + OLD_TARS=${SNAPSHOTS_DIR}/${BRANCH}-${LAST_DATE}/gcc-${BRANCH}-${LAST_DATE}.tar.bz2 + fi +fi + +# Compute the name of the WORKING_DIRECTORY and the SOURCE_DIRECTORY. +WORKING_DIRECTORY="${DESTINATION}/gcc-${RELEASE}" +SOURCE_DIRECTORY="${WORKING_DIRECTORY}/gcc-${RELEASE}" + +# Set up SVNROOT. +if [ $LOCAL -eq 0 ]; then + SVNROOT="svn+ssh://${SVN_USERNAME}@${SVN_SERVER}${SVN_REPOSITORY}" +else + SVNROOT="file:///svn/gcc" +fi +export SVNROOT + +######################################################################## +# Main Program +######################################################################## + +# Set the timezone to UTC +TZ="UTC0" +export TZ + +# Build the source directory. + +if [ $MODE_SOURCES -ne 0 ]; then + build_sources +fi + +# Build the tar files. + +if [ $MODE_TARFILES -ne 0 ]; then + build_tarfiles +fi + +# Build diffs + +if [ $MODE_DIFFS -ne 0 ]; then + # Possibly build diffs. + if [ -n "$OLD_TARS" ]; then + for old_tar in $OLD_TARS; do + build_diffs $old_tar + done + fi +fi + +# Build gzip files +if [ $MODE_GZIP -ne 0 ]; then + build_gzip +fi + +# Upload them to the FTP server. +if [ $MODE_UPLOAD -ne 0 ]; then + upload_files + + # For snapshots, make some further updates. + if [ $SNAPSHOT -ne 0 ] && [ $LOCAL -ne 0 ]; then + announce_snapshot + + # Update snapshot date file. + changedir ~ + echo $DATE > .snapshot_date-${BRANCH} + + # Remove working directory + rm -rf ${WORKING_DIRECTORY} + fi +fi