summaryrefslogtreecommitdiff
path: root/maintainer-scripts
diff options
context:
space:
mode:
authorLorry Tar Creator <lorry-tar-importer@lorry>2018-01-25 08:49:33 +0000
committerLorry Tar Creator <lorry-tar-importer@lorry>2018-01-25 08:49:33 +0000
commit8bbc33baa40010c8f5ca1af9b8bfffd67ae654ad (patch)
treec5e2748190eff9453ae08b9117c4c546c48cc539 /maintainer-scripts
parent03ac50856c9fc8c96b7a17239ee40a10397750a7 (diff)
downloadgcc-tarball-8bbc33baa40010c8f5ca1af9b8bfffd67ae654ad.tar.gz
Diffstat (limited to 'maintainer-scripts')
-rw-r--r--maintainer-scripts/ChangeLog1170
-rw-r--r--maintainer-scripts/README6
-rwxr-xr-xmaintainer-scripts/branch_changer.py225
-rw-r--r--maintainer-scripts/crontab6
-rwxr-xr-xmaintainer-scripts/gcc_release731
-rwxr-xr-xmaintainer-scripts/generate_libstdcxx_web_docs59
-rwxr-xr-xmaintainer-scripts/maintainer-addresses37
-rwxr-xr-xmaintainer-scripts/update_version_svn85
-rwxr-xr-xmaintainer-scripts/update_web_docs_libstdcxx_svn51
-rwxr-xr-xmaintainer-scripts/update_web_docs_svn276
10 files changed, 2646 insertions, 0 deletions
diff --git a/maintainer-scripts/ChangeLog b/maintainer-scripts/ChangeLog
new file mode 100644
index 0000000000..656bdfa253
--- /dev/null
+++ b/maintainer-scripts/ChangeLog
@@ -0,0 +1,1170 @@
+2018-01-25 Release Manager
+
+ * GCC 7.3.0 released.
+
+2017-08-14 Release Manager
+
+ * GCC 7.2.0 released.
+
+2017-05-23 Matthias Klose <doko@ubuntu.com>
+
+ * gcc_release (XZ): Default to xz --best.
+
+2017-05-18 Matthias Klose <doko@ubuntu.com>
+
+ * gcc_release (build_gzip): Build xz tarball instead of bz2 tarball.
+ (build_diffs): Handle building diffs from either bz2 or xz tarballs,
+ compress diffs using xz instead of bz2.
+ (build_diff): Likewise.
+ (upload_files): Check for *.xz files instead of *.bz2 files.
+ (announce_snapshot): Announce xz tarball instead of bz2 tarball.
+ (XZ): New definition.
+ (<toplevel>): Look for both bz2 and xz compressed old tarballs.
+
+2017-05-02 Release Manager
+
+ * GCC 7.1.0 released.
+
+2017-03-03 Gerald Pfeifer <gerald@pfeifer.com>
+
+ * gcc_release (snapshot_print): Replace md5 checksum by sha256.
+
+2017-02-28 Gerald Pfeifer <gerald@pfeifer.com>
+
+ * update_web_docs_svn: Remove a reference to GCC 3.1. Describe
+ settings to tweak if running on a host different from gcc.gnu.org.
+ (WWWBASE): Allow override via the environment. Also check for
+ existance.
+
+2017-02-08 Gerald Pfeifer <gerald@pfeifer.com>
+
+ * update_web_docs_svn (MANUALS): Add libitm.
+
+2016-09-04 Gerald Pfeifer <gerald@pfeifer.com>
+
+ PR documentation/50642
+ * update_web_docs_svn (CSS): Introduce.
+ Have generated files refer to it.
+
+2016-08-17 Martin Liska <mliska@suse.cz>
+
+ * branch_changer.py: Describe the script. Add sample usage
+ of the script.
+
+2016-08-03 Martin Liska <mliska@suse.cz>
+
+ * branch_changer.py: New file.
+
+2016-07-26 Richard Biener <rguenther@suse.de>
+
+ * update_version_svn: Ignore the GCC 4.9 branch.
+
+2016-07-26 Richard Biener <rguenther@suse.de>
+
+ * crontab: Remove entry for the GCC 4.9 branch.
+
+2016-06-13 Jonathan Wakely <jwakely@redhat.com>
+
+ * generate_libstdcxx_web_docs: Use realpath to get absolute path.
+ Add comment about LaTeX errors.
+
+2016-04-15 Jakub Jelinek <jakub@redhat.com>
+
+ * crontab: Enable snapshots from gcc-6-branch.
+
+2015-06-23 Richard Biener <rguenther@suse.de>
+
+ * update_version_svn: Add gcc-4_8-branch to IGNORE_BRANCHES.
+
+2015-06-14 Richard Biener <rguenther@suse.de>
+
+ * crontab: Disable snapshots from the 4.8 branch.
+
+2015-04-13 Jakub Jelinek <jakub@redhat.com>
+
+ * update_version_svn: Update DATESTAMP also on
+ branches/gcc-[0-9]+-branch.
+
+ * gcc_release: Fix up thinko in the last commit, improve error
+ message. Commit all ChangeLog, DEV-PHASE and BASE-VER changes
+ together, rather than doing dozens of separate commits.
+
+2015-04-12 Jakub Jelinek <jakub@redhat.com>
+
+ * gcc_release: For RELEASE_MAJOR 5+ only use the major
+ number in branch name. When doing final release of 5+,
+ if BASE-VER doesn't match release, but is *.*.1 for the
+ one smaller minor version, bump BASE-VER.
+
+ * crontab: Enable snapshots from gcc-5-branch.
+
+2015-04-07 Gerald Pfeifer <gerald@pfeifer.com>
+
+ * update_web_docs_libstdcxx_svn (FILTER): Introduce.
+ Use to filter output of the copying process.
+
+2015-02-25 Arnaud Charlet <charlet@adacore.com>
+
+ * update_web_docs_svn: Preserve gcc/ada/*.png. Update comments.
+
+2015-02-25 Arnaud Charlet <charlet@adacore.com>
+
+ * update_web_docs_svn: Add -I gcc/gcc/ada/doc/gnat_ugn for gnat_ugn
+
+2015-02-06 David Malcolm <dmalcolm@redhat.com>
+
+ PR jit/64257
+ * update_web_docs_svn: When copying up files for the built jit
+ documentation, also copy up .txt files.
+
+2015-02-04 David Malcolm <dmalcolm@redhat.com>
+
+ PR jit/64257
+ * update_web_docs_svn: Update build of jit docs to use EPEL6
+ variant install of sphinx 1.0.8, rather than 0.6.6.
+
+2015-01-26 David Malcolm <dmalcolm@redhat.com>
+
+ PR jit/64257
+ * update_web_docs_svn: Don't delete gcc/jit/docs or
+ gcc/jit/jit-common.h, gcc/jit/notes.txt. Special case the
+ building of the JIT docs (using sphinx-build). Special case
+ copying them up.
+
+2014-08-14 Richard Biener <rguenther@suse.de>
+
+ * crontab: Change trunk snapshots from 4.10 to 5.
+
+2014-08-01 Arnaud Charlet <charlet@adacore.com>
+
+ * update_web_docs_svn: Simplify build of gnat_ugn.
+
+2014-06-12 Richard Biener <rguenther@suse.de>
+
+ * crontab: Remove 4.7 snapshot entry.
+ * update_version_svn: Update IGNORE_BRANCHES.
+
+2014-05-30 Jonathan Wakely <jwakely@redhat.com>
+
+ * generate_libstdcxx_web_docs: New script.
+
+2014-04-11 Jakub Jelinek <jakub@redhat.com>
+
+ * crontab: Enable snapshots from gcc-4_9-branch.
+
+2014-02-01 Dmitry Gorbachev <d.g.gorbachev@gmail.com>
+
+ PR other/56653
+ * gcc_release: Avoid printing empty line to generated MD5SUMS files.
+ Bump copyright year.
+
+2013-12-02 Gerald Pfeifer <gerald@pfeifer.com>
+
+ * update_web_docs_svn: Work around makeinfo generated file names
+ and references with "_002d" instead of "-".
+
+2013-04-12 Jakub Jelinek <jakub@redhat.com>
+
+ * crontab: Disable snapshots from gcc-4_6-branch.
+ * update_version_svn: Ignore gcc-4_6-branch.
+
+2013-04-07 Gerald Pfeifer <gerald@pfeifer.com>
+
+ * update_web_docs_libstdcxx_svn: No longer ignore all output from
+ the actual copy process.
+ Check the exit code of the actual copy process; diagnose problems.
+
+2013-03-16 Jakub Jelinek <jakub@redhat.com>
+
+ * crontab: Enable snapshots from gcc-4_8-branch.
+
+2012-07-02 Richard Guenther <rguenther@suse.de>
+
+ * crontab: Disable snapshots from gcc-4_5-branch.
+ * update_version_svn: Ingore gcc-4_5-branch.
+
+2012-03-23 Richard Guenther <rguenther@suse.de>
+
+ * crontab: Enable snapshots from gcc-4_7-branch.
+
+2012-03-13 Jakub Jelinek <jakub@redhat.com>
+
+ * crontab: Remove 4.4 branch from the list of snapshots to make.
+ * update_version_svn (IGNORE_BRANCHES): Add gcc-4_4-branch.
+
+2012-03-05 Richard Guenther <rguenther@suse.de>
+
+ * crontab: Remove 4.3 branch from the list of snapshots to make.
+
+2012-03-02 Richard Guenther <rguenther@suse.de>
+
+ * crontab: Fix day-of-week.
+
+2012-03-02 Richard Guenther <rguenther@suse.de>
+
+ * crontab: Update for 4.7 branching.
+
+2011-11-21 Gerald Pfeifer <gerald@pfeifer.com>
+
+ * update_web_docs_svn: Make $DOCSDIR group writable after
+ creating it.
+
+2011-06-27 Richard Guenther <rguenther@suse.de>
+
+ * update_version_svn (IGNORE_BRANCHES): Add gcc-4_3-branch.
+
+2011-05-22 Joseph Myers <joseph@codesourcery.com>
+
+ * gcc_release (adjust_dirs, maybe_build_tarfile): Remove.
+ (build_tarfiles): Don't build separate files for languages and
+ core.
+ (build_diffs): Only build one set of diffs.
+ (announce_snapshot): Only announce one tar file.
+ (ADA_DIRS, CPLUSPLUS_DIRS, FORTRAN95_DIRS, GO_DIRS, JAVA_DIRS,
+ OBJECTIVEC_DIRS, TESTSUITE_DIRS): Remove. Don't adjust names
+ relative to WORKING_DIRECTORY.
+
+2011-04-21 Jakub Jelinek <jakub@redhat.com>
+
+ * gcc_release (maybe_build_tarfile): Don't build a tarfile if
+ the first directory doesn't exist.
+
+2011-03-14 Jakub Jelinek <jakub@redhat.com>
+
+ * crontab: Enable 4.7 snapshots, switch 4.6 snapshots to
+ 4.6 branch.
+
+2011-02-07 Joseph Myers <joseph@codesourcery.com>
+
+ * update_web_docs_svn: Generate libquadmath-vers.texi.
+
+2011-01-31 Gerald Pfeifer <gerald@pfeifer.com>
+
+ * update_version_svn (FILES): Merge with datestamp_FILES.
+ (SVNROOT2): Introduce and use.
+
+2011-01-30 Gerald Pfeifer <gerald@pfeifer.com>
+
+ * update_version_svn (SVN): Remove obsolete comment.
+ (CURR_DATE): Fix description.
+ Fix description of checkout procedure.
+
+2010-12-18 Tobias Burnus <burnus@net-b.de>
+
+ * update_web_docs_svn (MANUALS): Add libquadmath.
+
+2010-12-08 Ian Lance Taylor <iant@google.com>
+
+ * gcc_release: Add support for releasing Go as a separate
+ tarball.
+
+2010-12-08 Ian Lance Taylor <iant@google.com>
+
+ * update_web_docs_svn (MANUALS): Add gccgo.
+
+2010-12-08 Ian Lance Taylor <iant@google.com>
+
+ * README: Change "CVS" to "Subversion".
+
+2010-08-23 Gerald Pfeifer <gerald@pfeifer.com>
+
+ * gcc_release (snapshot_print): Also include an sha1 hash for
+ every tarball. Slightly tweak indentation.
+
+2010-08-15 Gerald Pfeifer <gerald@pfeifer.com>
+
+ * gcc_release (CVSROOT): Remove all occurrences.
+
+2010-08-14 Gerald Pfeifer <gerald@pfeifer.com>
+
+ * gcc_release (snapshot_print): Include md5 hash for every tarball
+ in the README file and notification mail.
+
+2010-08-01 Gerald Pfeifer <gerald@pfeifer.com>
+
+ * update_web_docs_libstdcxx_svn: Do not compress generated .html
+ files any more.
+
+2010-06-24 Joseph Myers <joseph@codesourcery.com>
+
+ * update_web_docs_svn: Also pass -I option pointing to ada/ source
+ directory for Ada manual.
+
+2010-04-16 Joseph Myers <joseph@codesourcery.com>
+
+ * crontab: Enable 4.6 snapshots.
+
+2010-04-07 Joseph Myers <joseph@codesourcery.com>
+
+ * crontab: Switch 4.5 snapshots to 4.5 branch.
+
+2010-03-31 Joseph Myers <joseph@codesourcery.com>
+
+ * gcc_release (build_tarfiles): Make directories mode 755, not
+ 777.
+
+2009-10-10 Gerald Pfeifer <gerald@pfeifer.com>
+
+ * update_web_docs_svn: Update BUGURL to http://gcc.gnu.org/bugs/.
+
+2009-10-03 Diego Novillo <dnovillo@google.com>
+
+ * gcc_release (JAVA_DIRS): Remove zlib.
+
+2009-04-23 Gerald Pfeifer <gerald@pfeifer.com>
+
+ * update_web_docs_svn: Redirect output of texi2dvi to /dev/null.
+
+2009-04-09 Jakub Jelinek <jakub@redhat.com>
+
+ * gcc_release: Change copyright header to refer to version
+ 3 of the GNU General Public License and to point readers at the
+ COPYING3 file and the FSF's license web page.
+ * maintainer-addresses: Likewise.
+
+2009-04-08 Gerald Pfeifer <gerald@pfeifer.com>
+
+ * update_web_docs_svn: Run this script under plain /bin/sh
+ as opposed to /bin/sh -x.
+
+2009-03-30 Joseph Myers <joseph@codesourcery.com>
+
+ * update_version_svn (IGNORE_BRANCHES): Add 4.2 branch.
+
+2009-03-28 Gerald Pfeifer <gerald@pfeifer.com>
+
+ * crontab: Stop 4.2 snapshots.
+ Spread out 4.3, 4.4, and 4.5 snapshots more evenly.
+
+2009-03-27 Mark Mitchell <mark@codesourcery.com>
+
+ * crontab: Add 4.4 branch snapshots.
+
+2009-02-21 Gerald Pfeifer <gerald@pfeifer.com>
+
+ * update_version_svn (ADD_BRANCHES): Remove autovect-branch
+ and document format.
+
+2009-01-17 Richard Guenther <rguenther@suse.de>
+
+ * gcc_release (JAVA_DIRS): Remove fastjar.
+
+2008-10-04 Gerald Pfeifer <gerald@pfeifer.com>
+
+ * gcc_release: Fix a couple of comments.
+
+2008-07-04 Joseph Myers <joseph@codesourcery.com>
+
+ * crontab: Remove 4.1 snapshots job.
+ * update_version: Remove.
+ * gcc_release: Remove support for g77 and release status in
+ version.c.
+ * update_version_svn: Ignore 4.1 branch. Remove support for
+ updating files other than DATESTAMP.
+ * update_web_docs_svn: Remove support for g77 manual.
+
+2008-02-18 Jakub Jelinek <jakub@redhat.com>
+
+ * crontab: Add 4.3 branch. Set trunk to 4.4.
+
+2008-01-28 Joseph Myers <joseph@codesourcery.com>
+
+ * gcc_release (build_sources): Pass --disable-multilib to
+ gcc_build.
+ (SVN): Don't use full path.
+
+2008-01-21 Jonathan Wakely <jwakely.gcc@gmail.com>
+
+ * update_web_docs_libstdcxx_svn: "docs" dir moved to "doc".
+
+2007-10-01 Gerald Pfeifer <gerald@pfeifer.com>
+
+ * gcc_release: Do not include copies of faq.html in releases,
+ and remove all the explicit support code to pull in web pages.
+
+2007-08-21 Paul Brook <paul@codesourcery.com>
+ Nathan Sidwell <nathan@codesourcery.com>
+ Mark Mitchell <mark@codesourcery.com>
+ Joseph Myers <joseph@codesourcery.com>
+
+ * gcc_release: Do not include copies of bugs.html in releases.
+ * update_web_docs_svn: Set VERSION_PACKAGE and BUGURL in
+ gcc-vers.texi.
+
+2007-07-06 Joseph Myers <joseph@codesourcery.com>
+
+ * update_web_docs_svn: Use -o with makeinfo, texi2dvi and texi2pdf
+ commands.
+
+2007-06-28 Mike Stump <mrs@apple.com>
+
+ * gcc_release: Update for Objective-C++.
+
+2007-05-28 Mark Mitchell <mark@codesourcery.com>
+
+ * gcc_release: Adjust placement of release candidates.
+
+2007-04-01 Gerald Pfeifer <gerald@pfeifer.com>
+
+ * update_web_docs_svn (MANUALS): Move towards the top of the
+ script. Reformat for easier editing/diffing.
+
+2006-03-31 Tobias Burnus <burnus@net-b.de>
+
+ * update_web_docs_svn: Build also gfc-internals.
+
+2007-02-25 Gerald Pfeifer <gerald@pfeifer.com>
+
+ * update_version_svn (IGNORE_BRANCHES): Add 4_0-branch.
+
+2007-01-29 Gerald Pfeifer <gerald@pfeifer.com>
+
+ * crontab: No longer build snapshots for 4.0.x.
+
+2007-01-21 Tobias Burnus <burnus@net-b.de>
+
+ * update_web_docs_svn: Build also libgomp documentation.
+
+2007-01-05 Gerald Pfeifer <gerald@pfeifer.com>
+
+ * crontab: Spread snapshots more evenly throughout the week, and
+ in "ascending" order. Build all at the same time of the day.
+
+2006-10-20 Mark Mitchell <mark@codesourcery.com>
+
+ * crontab: Add 4.2 branch. Set trunk to 4.3.
+
+2006-09-17 Gerald Pfeifer <gerald@pfeifer.com>
+
+ * gcc_release (LC_ALL): Default to C.
+
+2006-03-11 Gabriel Dos Reis <gdr@integrable-solutions.net>
+
+ * crontab: Don't build snapshot for 3.4.x anymore.
+ * update_version_svn (IGNORE_BRANCHES): Add 3_4-branch.
+
+2006-01-12 Ben Elliston <bje@au.ibm.com>
+
+ * update_version_svn (ADD_BRANCHES): Remove dfp-branch.
+
+2005-12-16 Joseph S. Myers <joseph@codesourcery.com>
+
+ * update_web_docs_svn: Remove unnecessary files from source tree.
+ Use set -e.
+ * doc_exclude, update_web_docs, update_web_docs_libstdcxx: Remove.
+
+2005-12-16 Mark Mitchell <mark@codesourcery.com>
+
+ * update_web_docs_svn: Set @srcdir in gcc-vers.texi.
+
+2005-11-18 Mark Mitchell <mark@codesourcery.com>
+
+ * crontab: Add 4.1 branch entry.
+
+2005-11-06 Joseph S. Myers <joseph@codesourcery.com>
+
+ * gcc_release: Further update for SVN. Don't set EXPORTTAG or
+ EXPORTDATE; always determine SVNREV the same way. Correct message
+ about what sources are being retrived. Include branch information
+ in LAST_UPDATED.
+ * crontab: Don't include initial / in branch name.
+
+2005-11-05 Daniel Berlin <dberlin@dberlin.org>
+
+ * gcc_release: Always determine revision number from date or tag,
+ and use that, instead of fragile date based export.
+ Put back setting of non-local CVSROOT.
+
+2005-11-05 Daniel Berlin <dberlin@dberlin.org>
+
+ * gcc_release: Make tags go in /tags.
+ Don't tag for snapshots.
+ Determine revision number of export and put into snapshot
+ announcement.
+
+2005-11-03 Daniel Berlin <dberlin@dberlin.org>
+
+ * gcc_release: Update for SVN
+ * crontab: Update for new gcc_release
+
+2005-10-26 Daniel Berlin <dberlin@dberlin.org>
+
+ * update_web_docs_svn: Use -q to quiet svn.
+
+2005-10-26 Daniel Berlin <dberlin@dberlin.org>
+
+ * crontab: Update to reflect reality
+
+2005-10-01 Mark Mitchell <mark@codesourcery.com>
+
+ * gcc_release (build_sources): If trying to apply a tag that
+ already exists, issue an error message and exit.
+
+2005-09-30 Joseph S. Myers <joseph@codesourcery.com>
+
+ PR other/23693
+ * update_web_docs: Add PDF support. Correct check of DEV-PHASE.
+
+2005-09-30 Joseph S. Myers <joseph@codesourcery.com>
+
+ * update_web_docs_old: Remove.
+
+2005-08-14 Kelley Cook <kcook@gcc.gnu.org>
+
+ * gcc_release: Update with FSF address.
+
+2005-07-26 Janis Johnson <janis187@us.ibm.com>
+
+ * update_version (ADD_BRANCHES): Add dfp-branch.
+
+2005-05-21 Gerald Pfeifer <gerald@pfeifer.com>
+
+ * crontab: Spread snapshot building more evenly throughout the
+ week.
+
+2005-05-19 Joseph S. Myers <joseph@codesourcery.com>
+
+ * crontab: Don't build 3.3 branch snapshots.
+ * update_version (IGNORE_BRANCHES): Add gcc-3_3-branch.
+
+2005-03-15 Zack Weinberg <zack@codesourcery.com>
+
+ * README: Update.
+ * gcc_release: Update gcc/DEV-PHASE if that file exists, instead
+ of gcc/version.c.
+ * update_version: Handle updating gcc/DATESTAMP.
+ * update_web_docs: Generate gcc-vers.texi first.
+
+2005-03-10 Ranjit Mathew <rmathew@hotmail.com>
+
+ * gcc_release (ADA_DIRS): Add "gnattools".
+
+2005-02-25 Mark Mitchell <mark@codesourcery.com>
+
+ * crontab: Adjust for 4.0 branch.
+
+2004-12-30 Sebastian Pop <pop@cri.ensmp.fr>
+
+ * update_version (ADD_BRANCHES): Replace lno-branch with
+ autovect-branch.
+
+2004-09-11 Gerald Pfeifer <gerald@pfeifer.com>
+
+ * crontab: Rename GCC 3.5 snapshots to GCC 4.0 snapshots.
+
+2004-08-14 Kelley Cook <kcook@gcc.gnu.org>
+
+ * gcc_release (build_sources): Add comment header to generated
+ MD5SUMS.
+
+2004-08-06 Kelley Cook <kcook@gcc.gnu.org>
+
+ * gcc_release (snapshot_print): Accept arguments. Don't use echo -e.
+ (announce_snapshot): Update for above. Don't use echo -e.
+
+2004-08-03 Kelley Cook <kcook@gcc.gnu.org>
+
+ * maintainer-scripts (snapshot_print): New function.
+ (announce_snapshot): Generate announcment on the fly.
+ Use a directory link for LATEST.
+ * snapshot-README: Delete.
+ * snapshot-index.html: Delete.
+
+2004-06-09 Paolo Bonzini <bonzini@gnu.org>
+
+ * gcc_release (build_sources): Move the libcpp gmo files
+ to the source directory.
+
+2004-06-03 Joseph S. Myers <jsm@polyomino.org.uk>
+
+ * gcc_release (maybe_build_tarfile): New function.
+ (build_tarfiles): Use maybe_build_tarfile.
+
+2004-05-21 Paolo Carlini <pcarlini@suse.de>
+
+ * gcc_release (build_sources): Generate the NEWS file in toplevel.
+
+2004-05-17 Kelley Cook <kcook@gcc.gnu.org>
+
+ * gcc_release (build_sources): Change CRCs from brik to md5sum.
+
+2004-05-16 Gerald Pfeifer <gerald@pfeifer.com>
+
+ * crontab: Add GCC 3.5 snapshots, currenty run on Sundays.
+
+2004-05-13 Joseph S. Myers <jsm@polyomino.org.uk>
+
+ * update_web_docs: Also remove old .gz files from subdirectories
+ on the 15th of the month.
+
+2004-05-13 Joseph S. Myers <jsm@polyomino.org.uk>
+
+ * update_web_docs (MANUALS): Add gfortran.
+
+2004-05-13 Arnaud Charlet <charlet@act-europe.fr>
+
+ * update_web_docs: Fix generation of Ada docs.
+
+2004-05-13 Joseph S. Myers <jsm@polyomino.org.uk>
+
+ * update_version (ADD_BRANCHES): Remove tree-ssa-20020619-branch.
+
+ * gcc_release (DIFF): Remove -3 option.
+
+2003-07-26 Paul Brook <paul@nowt.org>
+
+ * gcc_release: Add gcc-fortran.
+ * snapshot-README: Ditto.
+ * snapshot-index.html: Ditto.
+
+2004-05-02 Gerald Pfeifer <gerald@pfeifer.com>
+
+ * crontab: Move GCC 3.4 snapshots from Wednesday afternoon to
+ Friday night, where gcc.gnu.org has less load.
+
+2004-05-02 Gerald Pfeifer <gerald@pfeifer.com>
+
+ * crontab: Adjust temporary directory used for snapshot generation.
+ Move GCC 3.3 snapshots to Wednesday 22:32, where gcc.gnu.org has
+ less load.
+
+2004-04-19 Mark Mitchell <mark@codesourcery.com>
+
+ * gcc_release (build_sources): Do not use "-F" to tag sources.
+
+2004-04-07 Mark Mitchell <mark@codesourcery.com>
+
+ * gcc_release (build_sources): Do not use "-r" and "-D" at the
+ same time with "cvs export".
+
+2004-03-27 Gerald Pfeifer <gerald@pfeifer.com>
+
+ * gcc_release: Fix sanity check for argument of -p command-line
+ options. In snapshot mode, only generate diffs against the previous
+ snapshot if the user did not specify any old tarball explictly.
+
+2004-03-25 Gerald Pfeifer <gerald@pfeifer.com>
+
+ * gcc_release (FTP_PATH): Use /var/ftp instead of ~ftp, and
+ only set at a single place.
+
+2004-03-14 Gerald Pfeifer <gerald@pfeifer.com>
+
+ * gcc_release (SNAPSHOTS_DIR): New variable. Use it.
+ (announce_snapshot): Use it.
+
+2004-03-14 Gerald Pfeifer <gerald@pfeifer.com>
+
+ * gcc_release (announce_snapshot): Use changedir instead of
+ plain cd.
+
+2004-02-10 Arnaud Charlet <charlet@act-europe.fr>
+
+ * gcc_release: Add libada as part of ADA_DIRS.
+
+2004-01-21 Gerald Pfeifer <gerald@pfeifer.com>
+
+ * crontab: Make 3.4 snapshots from the new 3.4 release branch.
+
+2004-01-20 Kelley Cook <kcook@gcc.gnu.org>
+
+ * gcc_release (build_sources): Delete call to make f77.rebuilt.
+
+2004-01-17 Gerald Pfeifer <gerald@pfeifer.com>
+
+ * snapshot-README: Mention how the snapshot was generated.
+ * snapshot-index.html: Ditto. Further sync with snapshot-README.
+
+2004-01-03 Joseph S. Myers <jsm@polyomino.org.uk>
+
+ * update_web_docs: Create tarballs of documentation sources and
+ HTML docs.
+
+2004-01-02 Gerald Pfeifer <gp@suse.de>
+
+ * update_version: Add some documentation.
+
+2004-01-02 Pop Sébastian <pop@gauvain.u-strasbg.fr>
+
+ * update_version (ADD_BRANCHES): Add lno-branch.
+
+2003-11-02 Gerald Pfeifer <gerald@pfeifer.com>
+
+ * maintainer-addresses: New script.
+
+2003-10-24 Kelley Cook <kcook@gcc.gnu.org>
+
+ * gcc_release (build_sources): Use --enable-generated-files-in-srcdir.
+
+2003-09-22 Gerald Pfeifer <gerald@pfeifer.com>
+
+ * gcc_release (announce_snapshot): Restructure processing
+ of snapshot-README and snapshot-index.html and add a new
+ substitution for @EXPORT@.
+
+2003-08-24 Gerald Pfeifer <gerald@pfeifer.com>
+
+ * gcc_release (build_sources): Create/update the LAST_UPDATED file
+ in the source directory with information how sources were obtained.
+
+2003-08-16 Gerald Pfeifer <gerald@pfeifer.com>
+
+ * gcc_release (build_sources): Use two new variables EXPORTTAG and
+ EXPORTDATE to make the extraction of sources more transparent and
+ also allow snapshots (off mainline) without a tag.
+
+2003-08-08 Mark Mitchell <mark@codesourcery.com>
+
+ * gcc_release: Correct logic for updating version.c. Put
+ prereleases into a subdirectory.
+
+2003-07-29 Gerald Pfeifer <pfeifer@dbai.tuwien.ac.at>
+
+ * crontab: Update invocation of gcc_release according to the
+ previous changes there. Add automatic 3.4 snapshots from mainline.
+
+2003-07-23 Gerald Pfeifer <pfeifer@dbai.tuwien.ac.at>
+
+ * gcc_release (usage): Document that -s now takes symbolic name
+ and branch of the snapshot as parameters.
+ Implement this as part of command-line processing.
+ (BRANCH): Remove default initialization for snapshots.
+ (CVSBRANCH): Ditto.
+ Do not lay down a CVS tag if generating a snapshot from mainline.
+
+2003-07-19 Gerald Pfeifer <pfeifer@dbai.tuwien.ac.at>
+
+ * gcc_release (announce_snapshot): Use ${RELEASE} instead
+ of ${BRANCH}-${DATE} to refer to the snapshot directory.
+ Put README file into the snapshot directory.
+
+ (RELEASE): Define as ${BRANCH}-${DATE} for snapshots.
+ (FTP_PATH): Use ${RELEASE} in case of snapshots.
+ (TAG): Ditto.
+ (OLD_TARS): Adjust to new directory scheme for snapshots.
+
+2003-07-14 Gerald Pfeifer <pfeifer@dbai.tuwien.ac.at>
+
+ * gcc_release (announce_snapshot): Add substitution of @RELEASE@
+ for README and index.html.
+ * snapshot-README: Use it.
+ * snapshot-index.html: Ditto.
+
+2003-07-09 Gerald Pfeifer <pfeifer@dbai.tuwien.ac.at>
+
+ * gcc_release (announce_snapshot): Add substitution of @BRANCH@
+ for README and index.html. Remove substitution of @LONG_DATE@.
+ Put index.html into the respective snapshot directory.
+ Adjust subject of the notification mail to the new naming scheme
+ for CVS tags.
+ Adjust name of the LATEST-IS-... files to the new naming scheme
+ for snapshot directories.
+ (FTP_PATH): Ditto.
+ (LAST_DIR): Ditto.
+ (LAST_LONG_DATE): Remove.
+
+ * snapshot-README: Adjust to the new naming schemes for directories
+ and snapshots per se.
+ Dynamically fill in the respective branch instead of hardcoding it.
+
+ * snapshot-index.html: Replace individual links to diffs with a
+ general link to the diff/ subdirectory.
+ Mention the concrete snapshot in <title> and <h1>.
+ Adjust links to the new location of index.html.
+
+2003-07-08 Gerald Pfeifer <pfeifer@dbai.tuwien.ac.at>
+
+ * 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 <pfeifer@dbai.tuwien.ac.at>
+
+ * 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 <pfeifer@dbai.tuwien.ac.at>
+
+ * 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 <pfeifer@dbai.tuwien.ac.at>
+
+ * gcc_release: Command "all" now creates .gz files only for
+ releases and pre-releases.
+
+2003-06-27 Gerald Pfeifer <pfeifer@dbai.tuwien.ac.at>
+
+ * gcc_release (build_sources): Do not include gnats.html any longer.
+ Make an error message more descriptive.
+
+2003-06-25 Gerald Pfeifer <pfeifer@dbai.tuwien.ac.at>
+
+ * 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 <pfeifer@dbai.tuwien.ac.at>
+
+ * gcc_release: Do not update gcc_latest_snapshot tag any longer.
+
+2003-06-18 Gerald Pfeifer <pfeifer@dbai.tuwien.ac.at>
+
+ * 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 <pfeifer@dbai.tuwien.ac.at>
+
+ * 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 <pfeifer@dbai.tuwien.ac.at>
+
+ * 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 <pfeifer@dbai.tuwien.ac.at>
+
+ * gcc_release (build_diff): Properly use ${TAR} instead of
+ hard-coded tar.
+
+2003-05-28 Gerald Pfeifer <pfeifer@dbai.tuwien.ac.at>
+
+ * snapshot-index.html: Refer to .bz2 files instead of .gz files.
+ Simplify the note on not using unannounced snapshots.
+
+2003-05-28 Gerald Pfeifer <pfeifer@dbai.tuwien.ac.at>
+
+ * 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 <pfeifer@dbai.tuwien.ac.at>
+
+ * gcc_release (build_diffs): Add diagnostics in case we cannot
+ generate a specific diff file.
+
+2003-05-24 Gerald Pfeifer <pfeifer@dbai.tuwien.ac.at>
+
+ * 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 <pfeifer@dbai.tuwien.ac.at>
+
+ * gcc_release (upload_files): Put diff files into a "diffs"
+ subdirectory
+
+2003-05-18 Nathanael Nerode <neroden@gcc.gnu.org>
+
+ * gcc_release: GNU CC -> GCC.
+
+2003-05-12 Gerald Pfeifer <pfeifer@dbai.tuwien.ac.at>
+
+ * gcc_release (usage): Print more detailed description of all
+ command-line options.
+
+2003-05-09 Gerald Pfeifer <pfeifer@dbai.tuwien.ac.at>
+
+ * 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 <pfeifer@dbai.tuwien.ac.at>
+
+ * 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 <pfeifer@dbai.tuwien.ac.at>
+
+ * update_version (IGNORE_BRANCHES): Add.
+ (BRANCHES): Do not consider branches matching $IGNORE_BRANCHES.
+
+2003-05-02 Gerald Pfeifer <pfeifer@dbai.tuwien.ac.at>
+
+ * update_version: Add a trace of which branch we are currently
+ working on.
+
+2002-12-16 Mark Mitchell <mark@codesourcery.com>
+
+ * gcc_release: Make snapshots from the GCC 3.3 branch.
+ * snapshot-README: Update.
+
+2002-09-23 Zack Weinberg <zack@codesourcery.com>
+
+ * 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 <jsm@polyomino.org.uk>
+
+ * update_web_docs (MANUALS): Add fastjar.
+
+2002-09-08 Joseph S. Myers <jsm@polyomino.org.uk>
+
+ * gcc_release: Make snapshots come from the mainline.
+ * snapshot-README: Update.
+
+2002-08-28 Joseph S. Myers <jsm@polyomino.org.uk>
+
+ * 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 <aj@suse.de>
+
+ * gcc_release: Update comment.
+
+ * snapshot-README: Snapshots are taken from GCC 3.2 branch.
+
+2002-07-28 Mark Mitchell <mark@codesourcery.com>
+
+ * gcc_release: Use the 3.2 branch for snapshots.
+
+2002-05-31 Florian Weimer <fw@deneb.enyo.de>
+
+ * update_web_docs (MANUALS): Include various flavours of the GNAT
+ User Guide.
+
+2002-05-27 Joseph S. Myers <jsm28@cam.ac.uk>
+
+ * update_version (textstring_FILES): Change gcc/ada/gnatvsn.ads to
+ gcc/gcc/ada/gnatvsn.ads.
+
+2002-05-26 Joseph S. Myers <jsm28@cam.ac.uk>
+
+ * 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 <jsm28@cam.ac.uk>
+
+ * gcc_release: Do upload files when local.
+
+ * snapshot-README, snapshot-index.html: Remove chill.
+
+2002-05-08 Mark Mitchell <mark@codesourcery.com>
+
+ * gcc_release: Correct upload handling.
+
+2002-04-22 Mark Mitchell <mark@codesourcery.com>
+
+ * gcc_release (build_diffs): Remove reference to Chill.
+
+2002-04-21 Joseph S. Myers <jsm28@cam.ac.uk>
+
+ * 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 <mark@codesourcery.com>
+
+ * gcc_release (build_tarfiles): Do not build Chill tarfiles.
+ (CHILL_DIRS): Remove.
+
+2002-03-10 Joseph S. Myers <jsm28@cam.ac.uk>
+
+ * gcc_release: Build diffs for ada and chill. Make "bzip2" a new
+ major mode.
+
+2002-03-06 Phil Edwards <pme@gcc.gnu.org>
+
+ * update_version: Don't indent the version string.
+
+2002-03-05 Joseph S. Myers <jsm28@cam.ac.uk>
+
+ * snapshot-README: Note that snapshots come from the 3.1 branch.
+ Update list of files.
+
+2002-03-03 Joseph S. Myers <jsm28@cam.ac.uk>
+
+ * gcc_release: Make snapshots come from the 3.1 branch.
+
+2002-02-25 Mark Mitchell <mark@codesourcery.com>
+
+ * update_version: Automatically update version files on all
+ branches.
+ * crontab: Only invoke update_version once.
+
+2002-02-23 Joseph S. Myers <jsm28@cam.ac.uk>
+
+ * 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 <mark@codesourcery.com>
+
+ * gcc_release: Correct handling of diff-generation. Add
+ "diffs" major mode.
+
+2002-02-08 Joseph S. Myers <jsm28@cam.ac.uk>
+
+ * 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 <pfeifer@dbai.tuwien.ac.at>
+
+ * snapshot-index.html: Improve markup.
+
+2002-01-29 Joseph S. Myers <jsm28@cam.ac.uk>
+
+ * 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 <pfeifer@dbai.tuwien.ac.at>
+
+ * update_web_docs (contrib_file): Remove.
+ Also removing special handling of thanks.html.
+
+2001-12-17 Joseph S. Myers <jsm28@cam.ac.uk>
+
+ * 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 <jsm28@cam.ac.uk>
+
+ * 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 <jsm28@cam.ac.uk>
+
+ * gcc_release: Add /usr/local/bin to path when local.
+
+2001-11-06 Joseph S. Myers <jsm28@cam.ac.uk>
+
+ * 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 <jsm28@cam.ac.uk>
+
+ * 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 <jsm28@cam.ac.uk>
+
+ * update_web_docs: Generate libiberty and gnat-style manuals.
+
+2001-10-24 Joseph S. Myers <jsm28@cam.ac.uk>
+
+ * 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 <jsm28@cam.ac.uk>
+
+ * 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 <jsm28@cam.ac.uk>
+
+ * update_web_docs: Also check out texinfo.tex from
+ gcc/doc/include.
+
+2001-08-06 Gerald Pfeifer <pfeifer@dbai.tuwien.ac.at>
+
+ * update_web_docs (PREPROCESS): Rename to WWWPREPROCESS.
+ Preprocess the entire web site, not just the install docs.
+
+2001-06-25 Phil Edwards <pme@sources.redhat.com>
+
+ * 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 <pfeifer@dbai.tuwien.ac.at>
+
+ * update_web_docs: Only update the install documentation for the
+ CVS HEAD.
+
+2001-06-07 Joseph S. Myers <jsm28@cam.ac.uk>
+
+ * 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 <pfeifer@dbai.tuwien.ac.at>
+
+ * 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 <jsm28@cam.ac.uk>
+
+ * 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 <pme@sources.redhat.com>
+
+ * update_web_docs_libstdcxx: New script.
+ * crontab: Call said script.
+
+2001-03-18 Joseph S. Myers <jsm28@cam.ac.uk>
+
+ * update_version, update_branch_version: Check out with gcc
+ directory instead of using egcs link.
+
+2001-03-17 Joseph S. Myers <jsm28@cam.ac.uk>
+
+ * 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 <jsm28@cam.ac.uk>
+
+ * update_web_docs: Use /usr/local/bin/texi2html rather than
+ gccadmin's local copy.
+
+2001-03-10 Joseph S. Myers <jsm28@cam.ac.uk>
+
+ * crontab, doc_exclude, update_branch_version, update_version,
+ update_web_docs: New files (as currently used by gccadmin).
+ * README: New file.
diff --git a/maintainer-scripts/README b/maintainer-scripts/README
new file mode 100644
index 0000000000..9f5b71f30a
--- /dev/null
+++ b/maintainer-scripts/README
@@ -0,0 +1,6 @@
+This directory contains various files used by the gccadmin account on
+gcc.gnu.org, mainly for automated tasks such as the daily update of
+the date in gcc/DATESTAMP. There isn't presently any scheme for files
+checked in here to be automatically checked out and used by gccadmin,
+so the files in Subversion and those used by gccadmin must be kept in
+sync manually.
diff --git a/maintainer-scripts/branch_changer.py b/maintainer-scripts/branch_changer.py
new file mode 100755
index 0000000000..b0580296c1
--- /dev/null
+++ b/maintainer-scripts/branch_changer.py
@@ -0,0 +1,225 @@
+#!/usr/bin/env python3
+
+# This script is used by maintainers to modify Bugzilla entries in batch
+# mode.
+# Currently it can remove and add a release from/to PRs that are prefixed
+# with '[x Regression]'. Apart from that, it can also change target
+# milestones and optionally enhance the list of known-to-fail versions.
+#
+# The script utilizes the Bugzilla API, as documented here:
+# http://bugzilla.readthedocs.io/en/latest/api/index.html
+#
+# It requires the simplejson, requests, semantic_version packages.
+# In case of openSUSE:
+# zypper in python3-simplejson python3-requests
+# pip3 install semantic_version
+#
+# Sample usages of the script:
+#
+# $ ./maintainer-scripts/branch_changer.py api_key --new-target-milestone=6.2:6.3 --comment '6.2 has been released....' --add-known-to-fail=6.2 --limit 3
+#
+# The invocation will set target milestone to 6.3 for all issues that
+# have mistone equal to 6.2. Apart from that, a comment is added to these
+# issues and 6.2 version is added to known-to-fail versions.
+# At maximum 3 issues will be modified and the script will run
+# in dry mode (no issues are modified), unless you append --doit option.
+#
+# $ ./maintainer-scripts/branch_changer.py api_key --new-target-milestone=5.5:6.3 --comment 'GCC 5 branch is being closed' --remove 5 --limit 3
+#
+# Very similar to previous invocation, but instead of adding to known-to-fail,
+# '5' release is removed from all issues that have the regression prefix.
+#
+# $ ./maintainer-scripts/branch_changer.py api_key --add=7:8
+#
+# Aforementioned invocation adds '8' release to the regression prefix of all
+# issues that contain '7' in its regression prefix.
+#
+
+import requests
+import json
+import argparse
+import re
+
+from semantic_version import Version
+
+base_url = 'https://gcc.gnu.org/bugzilla/rest.cgi/'
+statuses = ['UNCONFIRMED', 'ASSIGNED', 'SUSPENDED', 'NEW', 'WAITING', 'REOPENED']
+search_summary = ' Regression]'
+regex = '(.*\[)([0-9\./]*)( [rR]egression])(.*)'
+
+class Bug:
+ def __init__(self, data):
+ self.data = data
+ self.versions = None
+ self.fail_versions = []
+ self.is_regression = False
+
+ self.parse_summary()
+ self.parse_known_to_fail()
+
+ def parse_summary(self):
+ m = re.match(regex, self.data['summary'])
+ if m != None:
+ self.versions = m.group(2).split('/')
+ self.is_regression = True
+ self.regex_match = m
+
+ def parse_known_to_fail(self):
+ v = self.data['cf_known_to_fail'].strip()
+ if v != '':
+ self.fail_versions = [x for x in re.split(' |,', v) if x != '']
+
+ def name(self):
+ return 'PR%d (%s)' % (self.data['id'], self.data['summary'])
+
+ def remove_release(self, release):
+ # Do not remove last value of [x Regression]
+ if len(self.versions) == 1:
+ return
+ self.versions = list(filter(lambda x: x != release, self.versions))
+
+ def add_release(self, releases):
+ parts = releases.split(':')
+ assert len(parts) == 2
+ for i, v in enumerate(self.versions):
+ if v == parts[0]:
+ self.versions.insert(i + 1, parts[1])
+ break
+
+ def add_known_to_fail(self, release):
+ if release in self.fail_versions:
+ return False
+ else:
+ self.fail_versions.append(release)
+ return True
+
+ def update_summary(self, api_key, doit):
+ summary = self.data['summary']
+ new_summary = self.serialize_summary()
+ if new_summary != summary:
+ print(self.name())
+ print(' changing summary: "%s" to "%s"' % (summary, new_summary))
+ self.modify_bug(api_key, {'summary': new_summary}, doit)
+
+ return True
+
+ return False
+
+ def change_milestone(self, api_key, old_milestone, new_milestone, comment, new_fail_version, doit):
+ old_major = Bug.get_major_version(old_milestone)
+ new_major = Bug.get_major_version(new_milestone)
+
+ print(self.name())
+ args = {}
+ if old_major == new_major:
+ args['target_milestone'] = new_milestone
+ print(' changing target milestone: "%s" to "%s" (same branch)' % (old_milestone, new_milestone))
+ elif self.is_regression and new_major in self.versions:
+ args['target_milestone'] = new_milestone
+ print(' changing target milestone: "%s" to "%s" (regresses with the new milestone)' % (old_milestone, new_milestone))
+ else:
+ print(' not changing target milestone: not a regression or does not regress with the new milestone')
+
+ if 'target_milestone' in args and comment != None:
+ print(' adding comment: "%s"' % comment)
+ args['comment'] = {'comment': comment }
+
+ if new_fail_version != None:
+ if self.add_known_to_fail(new_fail_version):
+ s = self.serialize_known_to_fail()
+ print(' changing known_to_fail: "%s" to "%s"' % (self.data['cf_known_to_fail'], s))
+ args['cf_known_to_fail'] = s
+
+ if len(args.keys()) != 0:
+ self.modify_bug(api_key, args, doit)
+ return True
+ else:
+ return False
+
+ def serialize_summary(self):
+ assert self.versions != None
+ assert self.is_regression == True
+
+ new_version = '/'.join(self.versions)
+ new_summary = self.regex_match.group(1) + new_version + self.regex_match.group(3) + self.regex_match.group(4)
+ return new_summary
+
+ def serialize_known_to_fail(self):
+ assert type(self.fail_versions) is list
+ return ', '.join(sorted(self.fail_versions, key = lambda x: Version(x, partial = True)))
+
+ def modify_bug(self, api_key, params, doit):
+ u = base_url + 'bug/' + str(self.data['id'])
+
+ data = {
+ 'ids': [self.data['id']],
+ 'api_key': api_key }
+
+ data.update(params)
+
+ if doit:
+ r = requests.put(u, data = json.dumps(data), headers = {"content-type": "text/javascript"})
+ print(r)
+
+ @staticmethod
+ def get_major_version(release):
+ parts = release.split('.')
+ assert len(parts) == 2 or len(parts) == 3
+ return '.'.join(parts[:-1])
+
+ @staticmethod
+ def get_bugs(api_key, query):
+ u = base_url + 'bug'
+ r = requests.get(u, params = query)
+ return [Bug(x) for x in r.json()['bugs']]
+
+def search(api_key, remove, add, limit, doit):
+ bugs = Bug.get_bugs(api_key, {'api_key': api_key, 'summary': search_summary, 'bug_status': statuses})
+ bugs = list(filter(lambda x: x.is_regression, bugs))
+
+ modified = 0
+ for bug in bugs:
+ if remove != None:
+ bug.remove_release(remove)
+ if add != None:
+ bug.add_release(add)
+
+ if bug.update_summary(api_key, doit):
+ modified += 1
+ if modified == limit:
+ break
+
+ print('\nModified PRs: %d' % modified)
+
+def replace_milestone(api_key, limit, old_milestone, new_milestone, comment, add_known_to_fail, doit):
+ bugs = Bug.get_bugs(api_key, {'api_key': api_key, 'bug_status': statuses, 'target_milestone': old_milestone})
+
+ modified = 0
+ for bug in bugs:
+ if bug.change_milestone(api_key, old_milestone, new_milestone, comment, add_known_to_fail, doit):
+ modified += 1
+ if modified == limit:
+ break
+
+ print('\nModified PRs: %d' % modified)
+
+parser = argparse.ArgumentParser(description='')
+parser.add_argument('api_key', help = 'API key')
+parser.add_argument('--remove', nargs = '?', help = 'Remove a release from summary')
+parser.add_argument('--add', nargs = '?', help = 'Add a new release to summary, e.g. 6:7 will add 7 where 6 is included')
+parser.add_argument('--limit', nargs = '?', help = 'Limit number of bugs affected by the script')
+parser.add_argument('--doit', action = 'store_true', help = 'Really modify BUGs in the bugzilla')
+parser.add_argument('--new-target-milestone', help = 'Set a new target milestone, e.g. 4.9.3:4.9.4 will set milestone to 4.9.4 for all PRs having milestone set to 4.9.3')
+parser.add_argument('--add-known-to-fail', help = 'Set a new known to fail for all PRs affected by --new-target-milestone')
+parser.add_argument('--comment', help = 'Comment a PR for which we set a new target milestore')
+
+args = parser.parse_args()
+# Python3 does not have sys.maxint
+args.limit = int(args.limit) if args.limit != None else 10**10
+
+if args.remove != None or args.add != None:
+ search(args.api_key, args.remove, args.add, args.limit, args.doit)
+if args.new_target_milestone != None:
+ t = args.new_target_milestone.split(':')
+ assert len(t) == 2
+ replace_milestone(args.api_key, args.limit, t[0], t[1], args.comment, args.add_known_to_fail, args.doit)
diff --git a/maintainer-scripts/crontab b/maintainer-scripts/crontab
new file mode 100644
index 0000000000..7e28240ac9
--- /dev/null
+++ b/maintainer-scripts/crontab
@@ -0,0 +1,6 @@
+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 * * 2 sh /home/gccadmin/scripts/gcc_release -s 5:branches/gcc-5-branch -l -d /sourceware/snapshot-tmp/gcc all
+32 22 * * 4 sh /home/gccadmin/scripts/gcc_release -s 6:branches/gcc-6-branch -l -d /sourceware/snapshot-tmp/gcc all
+32 22 * * 7 sh /home/gccadmin/scripts/gcc_release -s 7:trunk -l -d /sourceware/snapshot-tmp/gcc all
diff --git a/maintainer-scripts/gcc_release b/maintainer-scripts/gcc_release
new file mode 100755
index 0000000000..c8a398f84e
--- /dev/null
+++ b/maintainer-scripts/gcc_release
@@ -0,0 +1,731 @@
+#! /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-2015 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
+# <http://www.gnu.org/licenses/>.
+#
+########################################################################
+
+########################################################################
+# 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 <<EOF
+gcc_release -r release [-f] [further options]
+gcc_release -s name:svnbranch [further options]
+
+Options:
+
+ -r release Version of the form X.Y or X.Y.Z.
+ -s name:svnbranch Create a snapshot, not a real release.
+
+ -d destination Local working directory where we will build the release
+ (default=${HOME}).
+ -f Create a final release (and update ChangeLogs,...).
+ -l Indicate that we are running on gcc.gnu.org.
+ -p previous-tarball Location of a previous tarball (to generate diff files).
+ -t tag Tag to mark the release in SVN.
+ -u username Username for upload operations.
+EOF
+ exit 1
+}
+
+# Change to the directory given by $1.
+
+changedir() {
+ cd $1 || \
+ error "Could not change directory to $1"
+}
+
+# Build the source tree that will be the basis for the release
+# in ${WORKING_DIRECTORY}/gcc-${RELEASE}.
+
+build_sources() {
+ # If the WORKING_DIRECTORY already exists, do not risk destroying it.
+ if [ -r ${WORKING_DIRECTORY} ]; then
+ error "\`${WORKING_DIRECTORY}' already exists"
+ fi
+ # Create the WORKING_DIRECTORY.
+ mkdir "${WORKING_DIRECTORY}" \
+ || error "Could not create \`${WORKING_DIRECTORY}'"
+ changedir "${WORKING_DIRECTORY}"
+
+ # If this is a final release, make sure that the ChangeLogs
+ # and version strings are updated.
+ if [ ${FINAL} -ne 0 ]; then
+ inform "Updating ChangeLogs and version files"
+
+ ${SVN} -q co "${SVNROOT}/${SVNBRANCH}" "`basename ${SOURCE_DIRECTORY}`" ||\
+ error "Could not check out release sources"
+ svnciargs=""
+ for x in `changedir ${SOURCE_DIRECTORY} && \
+ find . -name ChangeLog`; do
+ # Update this ChangeLog file only if it does not yet contain the
+ # entry we are going to add. (This is a safety net for repeated
+ # runs of this script for the same release.)
+ if ! grep "GCC ${RELEASE} released." ${SOURCE_DIRECTORY}/${x} > /dev/null ; then
+ cat - ${SOURCE_DIRECTORY}/${x} > ${SOURCE_DIRECTORY}/${x}.new <<EOF
+${LONG_DATE} Release Manager
+
+ * GCC ${RELEASE} released.
+
+EOF
+ mv ${SOURCE_DIRECTORY}/${x}.new ${SOURCE_DIRECTORY}/${x} \
+ || error "Could not update ${x}"
+ svnciargs="${svnciargs} ${x}"
+ fi
+ done
+
+ # Update gcc/DEV-PHASE.
+
+ if [ `cat ${SOURCE_DIRECTORY}/gcc/BASE-VER` != ${RELEASE} ]; then
+ [ ${RELEASE_MAJOR} -lt 5 ] && \
+ error "Release number ${RELEASE} does not match BASE-VER"
+ if [ `cat ${SOURCE_DIRECTORY}/gcc/BASE-VER` \
+ = ${RELEASE_MAJOR}.`expr ${RELEASE_MINOR} - 1`.1 \
+ -a x${RELEASE_REVISION} = x0 ]; then
+ (changedir ${SOURCE_DIRECTORY}/gcc && \
+ echo ${RELEASE} > BASE-VER) || \
+ error "Could not update BASE-VER"
+ svnciargs="${svnciargs} gcc/BASE-VER"
+ else
+ error "Release number ${RELEASE} does not immediately follow BASE-VER"
+ fi
+ fi
+ (changedir ${SOURCE_DIRECTORY}/gcc && \
+ : > DEV-PHASE) || \
+ error "Could not update DEV-PHASE"
+ svnciargs="${svnciargs} gcc/DEV-PHASE"
+
+ (changedir ${SOURCE_DIRECTORY} && \
+ ${SVN} -q ci -m 'Update ChangeLog and version files for release' ${svnciargs}) || \
+ error "Could not commit ChangeLog and version file updates"
+
+ # 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.xz 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.xz"
+ shift
+
+ # Build the tar file itself.
+ (${TAR} cf - "$@" | ${XZ} > ${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%.xz}.gz
+ (${XZ} -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##*/}
+ case "$old_file" in
+ *.tar.xz) old_vers=${old_file%.tar.xz};;
+ *) old_vers=${old_file%.tar.bz2};;
+ esac
+ old_vers=${old_vers#gcc-}
+ inform "Building diffs against version $old_vers"
+ for f in gcc; do
+ if [ -e ${old_dir}/${f}-${old_vers}.tar.xz ]; then
+ old_tar=${old_dir}/${f}-${old_vers}.tar.xz
+ else
+ old_tar=${old_dir}/${f}-${old_vers}.tar.bz2
+ fi
+ new_tar=${WORKING_DIRECTORY}/${f}-${RELEASE}.tar.xz
+ 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.xz
+ fi
+ done
+}
+
+# Build an individual diff.
+build_diff() {
+ changedir "${WORKING_DIRECTORY}"
+ tmpdir=gccdiff.$$
+ mkdir $tmpdir || error "Could not create directory $tmpdir"
+ changedir $tmpdir
+ case "$1" in
+ *.tar.bz2)
+ (${BZIP2} -d -c $1 | ${TAR} xf - ) || error "Could not unpack $1 for diffs"
+ ;;
+ *.tar.xz)
+ (${XZ} -d -c $1 | ${TAR} xf - ) || error "Could not unpack $1 for diffs"
+ ;;
+ esac
+ (${XZ} -d -c $3 | ${TAR} xf - ) || error "Could not unpack $3 for diffs"
+ ${DIFF} $2 $4 > ../${5%.xz}
+ if [ $? -eq 2 ]; then
+ error "Trouble making diffs from $1 to $3"
+ fi
+ ${XZ} ../${5%.xz} || 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*.xz; 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 sha256 ${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 " <tr><td><a href=\"$1\">$1</a></td>" >> ${SNAPSHOT_INDEX}
+ echo " <td>$2</td></tr>" >> ${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 \
+"<html>
+
+<head>
+<title>GCC "${RELEASE}" Snapshot</title>
+</head>
+
+<body>
+<h1>GCC "${RELEASE}" Snapshot</h1>
+
+<p>The <a href =\"http://gcc.gnu.org/\">GCC Project</a> makes
+periodic snapshots of the GCC source tree available to the public
+for testing purposes.</p>
+
+<p>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.</p>
+
+<p>This snapshot has been generated from the GCC "${BRANCH}" SVN branch
+with the following options: <code>"svn://gcc.gnu.org/svn/gcc/${SVNBRANCH} revision ${SVNREV}"</code></p>
+
+<table>" > ${SNAPSHOT_INDEX}
+
+ snapshot_print gcc-${RELEASE}.tar.xz "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 \
+"</table>
+<p>Diffs from "${BRANCH}"-"${LAST_DATE}" are available in the
+<a href=\"diffs/\">diffs/ subdirectory</a>.</p>
+
+<p>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.</p>
+
+<hr />
+
+<address>
+<a href=\"mailto:gcc@gcc.gnu.org\">gcc@gcc.gnu.org</a>
+<br />
+Last modified "${TEXT_DATE}"
+</address>
+</body>
+
+</html>" >> ${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 .xz.
+FILE_LIST=""
+
+# Programs we use.
+
+BZIP2="${BZIP2:-bzip2}"
+XZ="${XZ:-xz --best}"
+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.
+ if [ ${RELEASE_MAJOR} -ge 5 ]; then
+ SVNBRANCH="branches/gcc-${RELEASE_MAJOR}-branch"
+ else
+ SVNBRANCH="branches/gcc-${RELEASE_MAJOR}_${RELEASE_MINOR}-branch"
+ fi
+
+ # 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
+ if [ ! -e $OLD_TARS ]; then
+ OLD_TARS=${SNAPSHOTS_DIR}/${BRANCH}-${LAST_DATE}/gcc-${BRANCH}-${LAST_DATE}.tar.xz
+ fi
+ 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
diff --git a/maintainer-scripts/generate_libstdcxx_web_docs b/maintainer-scripts/generate_libstdcxx_web_docs
new file mode 100755
index 0000000000..00ebcbf7f6
--- /dev/null
+++ b/maintainer-scripts/generate_libstdcxx_web_docs
@@ -0,0 +1,59 @@
+#!/bin/bash
+# Generate the libstdc++ onlinedocs for a GCC release
+# i.e. http://gcc.gnu.org/onlinedocs/gcc-x.y.z/libstdc++*
+
+SRCDIR=${1}
+DOCSDIR=$(realpath ${2})
+
+if ! [ $# -eq 2 -a -x "${SRCDIR}/configure" -a -d "${DOCSDIR}" ]
+then
+ echo "Usage: $0 <gcc src dir> <doc output dir>" >&2
+ exit 1
+fi
+
+set -e
+
+# Check we have some of the required tools
+for i in doxygen dot dblatex pdflatex makeindex
+do
+ echo -n "Checking for $i... "
+ which $i
+done
+
+start=$PWD
+WORKDIR=`mktemp -d $PWD/build.XXXXXX`
+DESTDIR=`mktemp -d $PWD/dest.XXXXXX`
+cd $WORKDIR
+disabled_libs=
+for dir in ${SRCDIR}/lib*
+do
+ dir="${dir##*/}"
+ [ $dir == 'libstdc++-v3' ] || disabled_libs="$disabled_libs --disable-$dir"
+done
+set -x
+${SRCDIR}/configure --enable-languages=c,c++ --disable-gcc $disabled_libs --docdir=/docs
+eval `grep '^target=' config.log`
+make configure-target
+# If the following step fails with an error like
+# ! LaTeX Error: File `xtab.sty' not found.
+# then you need to install the relevant TeX package e.g. texlive-xtab
+make -C $target/libstdc++-v3 doc-install-html doc-install-xml doc-install-pdf DESTDIR=$DESTDIR
+cd $DESTDIR/docs
+mkdir libstdc++
+for which in api manual
+do
+ if [ -f libstdc++-$which-single.xml ] # Only needed for GCC 4.7.x
+ then
+ mv libstdc++-$which-single.xml libstdc++-$which.xml
+ fi
+ gzip --best libstdc++-$which.xml
+ gzip --best libstdc++-$which.pdf
+ mv libstdc++-$which{.html,-html}
+ tar czf libstdc++-$which-html.tar.gz libstdc++-$which-html
+ mv libstdc++-$which-html libstdc++/$which
+done
+mv *.gz libstdc++ $DOCSDIR/
+cd $start
+rm -r $WORKDIR
+rm -r $DESTDIR
+
diff --git a/maintainer-scripts/maintainer-addresses b/maintainer-scripts/maintainer-addresses
new file mode 100755
index 0000000000..944b0c119e
--- /dev/null
+++ b/maintainer-scripts/maintainer-addresses
@@ -0,0 +1,37 @@
+#! /usr/bin/perl -w -T
+#
+# Extract all maintainers' addresses from the GCC MAINTAINERS file, only
+# skipping those addresses specified in $OMIT.
+#
+# Copyright (c) 2003, 2009 Free Software Foundation.
+#
+# Written by Gerald Pfeifer <gerald@pfeifer.com>, June 2003/October 2003
+#
+# 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
+# <http://www.gnu.org/licenses/>.
+
+my $OMIT='rms@gnu.org|config-patches@gnu.org';
+
+( @ARGV == 1 && -e $ARGV[0] ) || die "usage: $0 MAINTAINERS";
+
+while( <> ) {
+ chomp;
+
+ if( /([\w\d.+-]+@[\w\d.-]+)/ ) {
+ my $addr=$1;
+ printf $addr."\n" if( not $addr =~ /$OMIT/ );
+ }
+}
diff --git a/maintainer-scripts/update_version_svn b/maintainer-scripts/update_version_svn
new file mode 100755
index 0000000000..7fa2ecb3f6
--- /dev/null
+++ b/maintainer-scripts/update_version_svn
@@ -0,0 +1,85 @@
+#!/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 the space separated list in $ADD_BRANCHES.
+
+SVNROOT=${SVNROOT:-"file:///svn/gcc"}
+IGNORE_BRANCHES='gcc-(2_95|3_0|3_1|3_2|3_3|3_4|4_0|4_1|4_2|4_3|4_4|4_5|4_6|4_7|4_8|4_9)-branch'
+ADD_BRANCHES='HEAD'
+
+# Run this from /tmp.
+export SVNROOT
+/bin/rm -rf /tmp/$$
+/bin/mkdir /tmp/$$
+cd /tmp/$$
+
+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}"
+
+# This is put into the datestamp files.
+CURR_DATE=`/bin/date +"%Y%m%d"`
+
+datestamp_FILES="gcc/DATESTAMP"
+
+
+# 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 in a different namespace.
+ if test "$BRANCH" = HEAD; then
+ SVNROOT2=${SVNROOT}/trunk
+ else
+ SVNROOT2=${SVNROOT}/branches/${BRANCH}
+ fi
+
+ for i in $datestamp_FILES; do
+ ${SVN} -q co -N ${SVNROOT2}/`dirname $i` `basename $i`
+ done
+
+ # There are no files to commit yet.
+ COMMIT_FILES=""
+
+ 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 $datestamp_FILES; do
+ rm -rf /tmp/$$/`basename $i`
+ done
+done
+
+/bin/rm -rf /tmp/$$
+exit $RESULT
diff --git a/maintainer-scripts/update_web_docs_libstdcxx_svn b/maintainer-scripts/update_web_docs_libstdcxx_svn
new file mode 100755
index 0000000000..efceaf9a2c
--- /dev/null
+++ b/maintainer-scripts/update_web_docs_libstdcxx_svn
@@ -0,0 +1,51 @@
+#!/bin/bash
+
+
+# "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.
+#####################################################################
+
+FILTER="newer or same age version exists|0 blocks"
+
+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 -pd $WWWDIR 2>&1 | egrep -v "$FILTER"
+
+err=${PIPESTATUS[1]}
+if [ $err -gt 0 ]; then
+ printf "\nCopying failed with error code %d.\n" $err
+fi
+
+cd /
+/bin/rm -rf $WORKDIR
+
diff --git a/maintainer-scripts/update_web_docs_svn b/maintainer-scripts/update_web_docs_svn
new file mode 100755
index 0000000000..4f262fd01e
--- /dev/null
+++ b/maintainer-scripts/update_web_docs_svn
@@ -0,0 +1,276 @@
+#!/bin/sh
+
+# Generate HTML documentation from GCC Texinfo docs.
+#
+# If you want to run this on a machine different from gcc.gnu.org, you
+# may need to adjust SVNROOT and WWWBASE below (or override them via the
+# environment).
+
+set -e
+
+# Run this from /tmp.
+SVNROOT=${SVNROOT:-"file:///svn/gcc"}
+export SVNROOT
+
+PATH=/usr/local/bin:$PATH
+
+MANUALS="cpp
+ cppinternals
+ fastjar
+ gcc
+ gccgo
+ gccint
+ gcj
+ gfortran
+ gfc-internals
+ gnat_ugn
+ gnat-style
+ gnat_rm
+ libgomp
+ libitm
+ libquadmath
+ libiberty
+ porting"
+
+CSS=/gcc.css
+
+WWWBASE=${WWWBASE:-"/www/gcc/htdocs"}
+WWWBASE_PREFORMATTED=/www/gcc/htdocs-preformatted
+WWWPREPROCESS='/www/gcc/bin/preprocess -r'
+
+# Process options -rrelease and -ddirectory
+RELEASE=""
+SUBDIR=""
+
+while [ $# -gt 0 ]; do
+ case $1 in
+ -r*)
+ if [ -n "$RELEASE" ]; then
+ echo "Multiple releases specified" >&2
+ exit 1
+ fi
+ RELEASE="${1#-r}"
+ if [ -z "$RELEASE" ]; then
+ shift
+ RELEASE="$1"
+ if [ -z "$RELEASE" ]; then
+ echo "No release specified with -r" >&2
+ exit 1
+ fi
+ fi
+ ;;
+ -d*)
+ if [ -n "$SUBDIR" ]; then
+ echo "Multiple subdirectories specified" >&2
+ exit 1
+ fi
+ SUBDIR="${1#-d}"
+ if [ -z "$SUBDIR" ]; then
+ shift
+ SUBDIR="$1"
+ if [ -z "$SUBDIR" ]; then
+ echo "No subdirectory specified with -d" >&2
+ exit 1
+ fi
+ fi
+ ;;
+ *)
+ echo "Unknown argument \"$1\"" >&2
+ exit 1
+ ;;
+ esac
+ shift
+done
+
+if [ -n "$RELEASE" ] && [ -z "$SUBDIR" ]; then
+ echo "Release specified without subdirectory" >&2
+ exit 1
+fi
+
+if [ -z "$SUBDIR" ]; then
+ DOCSDIR=$WWWBASE/onlinedocs
+else
+ DOCSDIR=$WWWBASE/onlinedocs/$SUBDIR
+fi
+
+if [ ! -d $WWWBASE ]; then
+ echo "WWW base directory \"$WWWBASE\" does not exist." >&2
+ exit 1
+fi
+
+if [ ! -d $DOCSDIR ]; then
+ mkdir $DOCSDIR
+ chmod g+w $DOCSDIR
+fi
+
+if [ -z "$RELEASE" ]; then
+ RELEASE=trunk
+fi
+
+WORKDIR=/tmp/gcc-doc-update.$$
+
+rm -rf $WORKDIR
+mkdir $WORKDIR
+cd $WORKDIR
+if [ "$RELEASE" = "trunk" ]; then
+ svn -q export $SVNROOT/$RELEASE gcc
+else
+ svn -q export $SVNROOT/tags/$RELEASE gcc
+fi
+
+# Remove all unwanted files. This is needed to avoid packaging all the
+# sources instead of only documentation sources.
+# Note that we have to preserve gcc/jit/docs since the jit docs are
+# not .texi files (Makefile, .rst and .png), and the jit docs use
+# include directives to pull in content from jit/jit-common.h and
+# jit/notes.txt, so we have to preserve those also.
+find gcc -type f \( -name '*.texi' \
+ -o -path gcc/gcc/doc/install.texi2html \
+ -o -path gcc/gcc/doc/include/texinfo.tex \
+ -o -path gcc/gcc/BASE-VER \
+ -o -path gcc/gcc/DEV-PHASE \
+ -o -path "gcc/gcc/ada/doc/gnat_ugn/*.png" \
+ -o -path "gcc/gcc/jit/docs/*" \
+ -o -path "gcc/gcc/jit/jit-common.h" \
+ -o -path "gcc/gcc/jit/notes.txt" \
+ -o -print0 \) | xargs -0 rm -f
+
+# Build a tarball of the sources.
+tar cf docs-sources.tar gcc
+
+# The directory to pass to -I; this is the one with texinfo.tex
+# and fdl.texi.
+includedir=gcc/gcc/doc/include
+
+# Generate gcc-vers.texi.
+(
+ echo "@set version-GCC $(cat gcc/gcc/BASE-VER)"
+ if [ "$(cat gcc/gcc/DEV-PHASE)" = "experimental" ]; then
+ echo "@set DEVELOPMENT"
+ else
+ echo "@clear DEVELOPMENT"
+ fi
+ echo "@set srcdir $WORKDIR/gcc/gcc"
+ echo "@set VERSION_PACKAGE (GCC)"
+ echo "@set BUGURL @uref{http://gcc.gnu.org/bugs/}"
+) > $includedir/gcc-vers.texi
+
+# Generate libquadmath-vers.texi.
+echo "@set BUGURL @uref{http://gcc.gnu.org/bugs/}" \
+ > $includedir/libquadmath-vers.texi
+
+# Now convert the relevant files from texi to HTML, PDF and PostScript.
+for file in $MANUALS; do
+ filename=`find . -name ${file}.texi`
+ if [ "${filename}" ]; then
+ includes="-I ${includedir} -I `dirname ${filename}`"
+ if [ "$file" = "gnat_ugn" ]; then
+ includes="$includes -I gcc/gcc/ada -I gcc/gcc/ada/doc/gnat_ugn"
+ fi
+ makeinfo --html --css-ref $CSS $includes -o ${file} ${filename}
+ tar cf ${file}-html.tar ${file}/*.html
+ texi2dvi $includes -o ${file}.dvi ${filename} </dev/null >/dev/null && dvips -o ${file}.ps ${file}.dvi
+ texi2pdf $includes -o ${file}.pdf ${filename} </dev/null
+ mkdir -p $DOCSDIR/$file
+ fi
+done
+
+# The jit is a special-case, using sphinx rather than texinfo.
+# Specifically, the jit docs need sphinx 1.0 or later.
+#
+# The jit/docs Makefile uses the executable $(SPHINXBUILD),
+# defaulting to "sphinx-build".
+#
+# sphinx is packaged in Fedora and EPEL 6 within "python-sphinx",
+# and in openSUSE within "python-Sphinx".
+#
+# For EPEL6, python-sphinx is sphinx 0.6.6, which is missing various
+# directives (e.g. ":c:macro:"), so we need the variant
+# python-sphinx10 package. The latter installs its executable as
+# /usr/bin/sphinx-1.0-build
+# so we need to override SPHINXBUILD with this when invoking "make".
+pushd gcc/gcc/jit/docs
+make SPHINXBUILD=/usr/bin/sphinx-1.0-build html
+popd
+cp -a gcc/gcc/jit/docs/_build/html jit
+mkdir -p $DOCSDIR/jit
+
+# Work around makeinfo generated file names and references with
+# "_002d" instead of "-".
+find . -name '*.html' | while read f; do
+ # Do this for the contents of each file.
+ sed -i -e 's/_002d/-/g' "$f"
+ # And rename files if necessary.
+ ff=`echo $f | sed -e 's/_002d/-/g'`;
+ if [ "$f" != "$ff" ]; then
+ printf "Renaming %s to %s\n" "$f" "$ff"
+ mv "$f" "$ff"
+ fi
+done
+
+# Then build a gzipped copy of each of the resulting .html, .ps and .tar files
+for file in */*.html *.ps *.pdf *.tar; do
+ cat $file | gzip --best > $file.gz
+done
+
+# On the 15th of the month, wipe all the old files from the
+# web server.
+today=`date +%d`
+if test $today = 15; then
+ find $DOCSDIR -type f -maxdepth 1 -print | grep -v index.html | xargs rm
+ for m in $MANUALS; do
+ rm -f $DOCSDIR/$m/*.html $DOCSDIR/$m/*.html.gz
+ done
+fi
+
+# And copy the resulting files to the web server
+for file in */*.html *.ps *.pdf *.tar; do
+ if [ -f $DOCSDIR/$file ]; then
+ cat $DOCSDIR/$file |
+ sed -e '/^<meta name=generator/d' \
+ -e '/^%DVIPSSource:/d' > file1
+ fi
+ cat $file |
+ sed -e '/^<meta name=generator/d' \
+ -e '/^%DVIPSSource:/d' > file2
+ if cmp -s file1 file2; then
+ :
+ else
+ cp $file $DOCSDIR/$file
+ cp $file.gz $DOCSDIR/$file.gz
+ fi
+done
+
+# Again, the jit is a special case, with nested subdirectories
+# below "jit", and with some non-HTML files (.png images from us,
+# plus .css and .js supplied by sphinx, and source files, renamed
+# from .rst to .txt).
+find jit \
+ -name "*.html" -o -name "*.png" \
+ -o -name "*.css" -o -name "*.js" \
+ -o -name "*.txt" |
+ while read file ; do
+ # Note that $file here will contain path fragments beginning
+ # with "jit/", e.g. "jit/cp/topics/functions.html"
+ mkdir -p $(dirname $DOCSDIR/$file)
+ cp $file $DOCSDIR/$file
+ done
+
+cd $DOCSDIR
+
+# Finally, generate the installation documentation
+if [ "$RELEASE" = "trunk" ]; then
+ SOURCEDIR=$WORKDIR/gcc/gcc/doc
+ DESTDIR=$WWWBASE_PREFORMATTED/install
+ export SOURCEDIR
+ export DESTDIR
+ $WORKDIR/gcc/gcc/doc/install.texi2html
+
+ # Preprocess the entire web site, not just the install docs!
+ echo "Invoking $WWWPREPROCESS"
+ $WWWPREPROCESS |grep -v '^ Warning: Keeping'
+fi
+
+# Clean up behind us.
+
+rm -rf $WORKDIR