<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
                      "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
  <title>How To Release LLVM To The Public</title>
  <link rel="stylesheet" href="llvm.css" type="text/css">
</head>
<body>

<div class="doc_title">How To Release LLVM To The Public</div>
<ol>
  <li><a href="#introduction">Introduction</a></li>
  <li><a href="#criteria">Qualification Criteria</a></li>
  <li><a href="#introduction">Release Timeline</a></li>
  <li><a href="#process">Release Process</a></li>
</ol>
<div class="doc_author">
  <p>Written by <a href="mailto:tonic@nondot.org">Tanya Lattner</a>,
  <a href="mailto:rspencer@x10sys.com">Reid Spencer</a>,
  <a href="mailto:criswell@cs.uiuc.edu">John Criswell</a>, &amp;
  <a href="mailto:wendling@apple.com">Bill Wendling</a>
  </p>
</div>

<!-- *********************************************************************** -->
<div class="doc_section"><a name="introduction">Introduction</a></div>
<!-- *********************************************************************** -->

<div class="doc_text">

<p>This document contains information about successfully releasing LLVM &mdash;
   including subprojects: e.g., <tt>llvm-gcc</tt> and <tt>clang</tt> &mdash; to
   the public. It is the Release Manager's responsibility to ensure that a high
   quality build of LLVM is released.</p>

</div>

<!-- *********************************************************************** -->
<div class="doc_section"><a name="process">Release Timeline</a></div>
<!-- *********************************************************************** -->
<div class="doc_text">

<p>LLVM is released on a time based schedule &mdash; roughly every 6 months. We
   do not normally have dot releases because of the nature of LLVM's incremental
   development philosophy. That said, the only thing preventing dot releases for
   critical bug fixes from happening is a lack of resources &mdash; testers,
   machines, time, etc. And, because of the high quality we desire for LLVM
   releases, we cannot allow for a truncated form of release qualification.</p>

<p>The release process is roughly as follows:</p>

<ul>
  <li><p>Set code freeze and branch creation date for 6 months after last code
      freeze date. Announce release schedule to the LLVM community and update
      the website.</p></li>

  <li><p>Create release branch and begin release process.</p></li>

  <li><p>Send out release candidate sources for first round of testing. Testing
      lasts 7-10 days. During the first round of testing, any regressions found
      should be fixed. Patches are merged from mainline into the release
      branch. Also, all features need to be completed during this time. Any
      features not completed at the end of the first round of testing will be
      removed or disabled for the release.</p></li>

  <li><p>Generate and send out the second release candidate sources. Only
      <em>critial</em> bugs found during this testing phase will be fixed. Any
      bugs introduced by merged patches will be fixed. If so a third round of
      testing is needed.</p></li>

  <li><p>The release notes are updated.</p></li>

  <li><p>Finally, release!</p></li>
</ul>

</div>

<!-- *********************************************************************** -->
<div class="doc_section"><a name="process">Release Process</a></div>
<!-- *********************************************************************** -->

<div class="doc_text">

<ol>
  <li><a href="#release-admin">Release Administrative Tasks</a></li>
  <ol>
    <li><a href="#branch">Create Release Branch</a></li>
    <li><a href="#verchanges">Update Version Numbers</a></li>
  </ol>
  <li><a href="#release-build">Building the Release</a></li>
  <ol>
    <li><a href="#dist">Build the LLVM Source Distributions</a></li>
    <li><a href="#build">Build LLVM</a></li>
    <li><a href="#llvmgccbin">Build the LLVM-GCC Binary Distribution</a></li>
    <li><a href="#clangbin">Build the Clang Binary Distribution</a></li>
    <li><a href="#target-build">Target Specific Build Details</a></li>
  </ol>
  <li><a href="#release-qualify">Release Qualification Criteria</a></li>
  <ol>
    <li><a href="#llvm-qualify">Qualify LLVM</a></li>
    <li><a href="#llvmgcc-qualify">Qualify LLVM-GCC</a></li>
    <li><a href="#clang-qualify">Qualify Clang</a></li>
    <li><a href="#targets">Specific Target Qualification Details</a></li>
  </ol>

  <li><a href="#commTest">Community Testing</a></li>    
  <li><a href="#release-patch">Release Patch Rules</a></li>
  <li><a href="#release-final">Release final tasks</a></li>

  <ol>
    <li><a href="#updocs">Update Documentation</a></li>
    <li><a href="#tag">Tag the LLVM Final Release</a></li>
    <li><a href="#updemo">Update the LLVM Demo Page</a></li>
    <li><a href="#webupdates">Update the LLVM Website</a></li>
    <li><a href="#announce">Announce the Release</a></li>
  </ol>
</ol>

</div>

<!-- ======================================================================= -->
<div class="doc_subsection"><a name="release-admin">Release Administrative Tasks</a></div>

<div class="doc_text">

<p>This section describes a few administrative tasks that need to be done for
   the release process to begin. Specifically, it involves:</p>

<ul>
  <li>Creating the release branch,</li>
  <li>Setting version numbers, and</li>
  <li>Tagging release candidates for the release team to begin testing</li>
</ul>

</div>

<!-- ======================================================================= -->
<div class="doc_subsubsection"><a name="branch">Create Release Branch</a></div>

<div class="doc_text">

<p>Branch the Subversion trunk using the following procedure:</p>

<ol>
  <li><p>Remind developers that the release branching is imminent and to refrain
      from committing patches that might break the build. E.g., new features,
      large patches for works in progress, an overhaul of the type system, an
      exciting new TableGen feature, etc.</p></li>

  <li><p>Verify that the current Subversion trunk is in decent shape by
      examining nightly tester and buildbot results.</p></li>

  <li><p>Create the release branch for <tt>llvm</tt>, <tt>llvm-gcc-4.2</tt>,
      <tt>clang</tt>, and the <tt>test-suite</tt> from the last known good
      revision. The branch's name is <tt>release_XY</tt>, where <tt>X</tt> is
      the major and <tt>Y</tt> the minor release numbers. The branches should be
      created using the following commands:</p>
  
<div class="doc_code">
<pre>
$ svn copy https://llvm.org/svn/llvm-project/llvm/trunk \
           https://llvm.org/svn/llvm-project/llvm/branches/release_<i>XY</i>

$ svn copy https://llvm.org/svn/llvm-project/llvm-gcc-4.2/trunk \
           https://llvm.org/svn/llvm-project/llvm-gcc-4.2/branches/release_<i>XY</i>

$ svn copy https://llvm.org/svn/llvm-project/test-suite/trunk \
           https://llvm.org/svn/llvm-project/test-suite/branches/release_<i>XY</i>

$ svn copy https://llvm.org/svn/llvm-project/cfe/trunk \
           https://llvm.org/svn/llvm-project/cfe/branches/release_<i>XY</i>
</pre>
</div></li>

  <li><p>Advise developers that they may now check their patches into the
      Subversion tree again.</p></li>

  <li><p>The Release Manager should switch to the release branch, because all
      changes to the release will now be done in the branch. The easiest way to
      do this is to grab a working copy using the following commands:</p>

<div class="doc_code">
<pre>
$ svn co https://llvm.org/svn/llvm-project/llvm/branches/release_<i>XY</i> llvm-<i>X.Y</i>

$ svn co https://llvm.org/svn/llvm-project/llvm-gcc-4.2/branches/release_<i>XY</i> llvm-gcc-4.2-<i>X.Y</i>

$ svn co https://llvm.org/svn/llvm-project/test-suite/branches/release_<i>XY</i> test-suite-<i>X.Y</i>

$ svn co https://llvm.org/svn/llvm-project/cfe/branches/release_<i>XY</i> clang-<i>X.Y</i>
</pre>
</div></li>
</ol>

</div>

<!-- ======================================================================= -->
<div class="doc_subsubsection"><a name="verchanges">Update LLVM Version</a></div>

<div class="doc_text">

<p>After creating the LLVM release branch, update the release branches'
   <tt>autoconf</tt> and <tt>configure.ac</tt> versions from '<tt>X.Ysvn</tt>'
   to '<tt>X.Y</tt>'. Update it on mainline as well to be the next version
   ('<tt>X.Y+1svn</tt>'). Regenerate the configure scripts for both
   <tt>llvm</tt> and the <tt>test-suite</tt>.</p>

<p>In addition, the version numbers of all the Bugzilla components must be
   updated for the next release.</p>

</div>

<!-- ======================================================================= -->
<div class="doc_subsubsection"><a name="dist">Build the LLVM Release Candidates</a></div>

<div class="doc_text">

<p>Create release candidates for <tt>llvm</tt>, <tt>llvm-gcc</tt>,
   <tt>clang</tt>, and the LLVM <tt>test-suite</tt> by tagging the branch with
   the respective release candidate number. For instance, to create <b>Release
   Candidate 1</b> you would issue the following commands:</p>

<div class="doc_code">
<pre>
$ svn mkdir https://llvm.org/svn/llvm-project/llvm/tags/RELEASE_<i>XY</i>
$ svn copy https://llvm.org/svn/llvm-project/llvm/branches/release_<i>XY</i> \
           https://llvm.org/svn/llvm-project/llvm/tags/RELEASE_<i>XY</i>/rc1

$ svn mkdir https://llvm.org/svn/llvm-project/llvm-gcc-4.2/tags/RELEASE_<i>XY</i>
$ svn copy https://llvm.org/svn/llvm-project/llvm-gcc-4.2/branches/release_<i>XY</i> \
           https://llvm.org/svn/llvm-project/llvm-gcc-4.2/tags/RELEASE_<i>XY</i>/rc1

$ svn mkdir https://llvm.org/svn/llvm-project/test-suite/tags/RELEASE_<i>XY</i>
$ svn copy https://llvm.org/svn/llvm-project/test-suite/branches/release_<i>XY</i> \
           https://llvm.org/svn/llvm-project/test-suite/tags/RELEASE_<i>XY</i>/rc1

$ svn mkdir https://llvm.org/svn/llvm-project/cfe/tags/RELEASE_<i>XY</i>
$ svn copy https://llvm.org/svn/llvm-project/cfe/branches/release_<i>XY</i> \
           https://llvm.org/svn/llvm-project/cfe/tags/RELEASE_<i>XY</i>/rc1
</pre>
</div>

<p>Similarly, <b>Release Candidate 2</b> would be named <tt>RC2</tt> and so
   on. This keeps a permanent copy of the release candidate around for people to
   export and build as they wish. The final released sources will be tagged in
   the <tt>RELEASE_<i>XY</i></tt> directory as <tt>Final</tt>
   (c.f. <a href="#tag">Tag the LLVM Final Release</a>).</p>

<p>The Release Manager may supply pre-packaged source tarballs for users. This
   can be done with the following commands:</p>

<div class="doc_code">
<pre>
$ svn export https://llvm.org/svn/llvm-project/llvm/tags/RELEASE_<i>XY</i>/rc1 llvm-<i>X.Y</i>rc1
$ svn export https://llvm.org/svn/llvm-project/llvm-gcc-4.2/tags/RELEASE_<i>XY</i>/rc1 llvm-gcc4.2-<i>X.Y</i>rc1
$ svn export https://llvm.org/svn/llvm-project/test-suite/tags/RELEASE_<i>XY</i>/rc1 llvm-test-<i>X.Y</i>rc1
$ svn export https://llvm.org/svn/llvm-project/cfe/tags/RELEASE_<i>XY</i>/rc1 clang-<i>X.Y</i>rc1

$ tar -czvf - llvm-<i>X.Y</i>rc1        | gzip &gt; llvm-<i>X.Y</i>rc1.src.tar.gz
$ tar -czvf - llvm-test-<i>X.Y</i>rc1   | gzip &gt; llvm-test-<i>X.Y</i>rc1.src.tar.gz
$ tar -czvf - llvm-gcc4.2-<i>X.Y</i>rc1 | gzip &gt; llvm-gcc-4.2-<i>X.Y</i>rc1.src.tar.gz
$ tar -czvf - clang-<i>X.Y</i>rc1       | gzip &gt; clang-<i>X.Y</i>rc1.src.tar.gz
</pre>
</div>

</div>

<!-- ======================================================================= -->
<div class="doc_subsection"><a name="release-build">Building the Release</a></div>

<div class="doc_text">

<p>The builds of <tt>llvm</tt>, <tt>llvm-gcc</tt>, and <tt>clang</tt>
   <em>must</em> be free of errors and warnings in Debug, Release+Asserts, and
   Release builds. If all builds are clean, then the release passes Build
   Qualification.</p>

<p>The <tt>make</tt> options for building the different modes:</p>

<table>
  <tr><th>Mode</th><th>Options</th></tr>
  <tr align="left"><td>Debug</td><td><tt>ENABLE_OPTIMIZED=0</tt></td></tr>
  <tr align="left"><td>Release+Asserts</td><td><tt>ENABLE_OPTIMIZED=1</tt></td></tr>
  <tr align="left"><td>Release</td><td><tt>ENABLE_OPTIMIZED=1 DISABLE_ASSERTIONS=1</tt></td></tr>
</table>

</div>

<!-- ======================================================================= -->
<div class="doc_subsubsection"><a name="build">Build LLVM</a></div>

<div class="doc_text">

<p>Build <tt>Debug</tt>, <tt>Release+Asserts</tt>, and <tt>Release</tt> versions
   of <tt>llvm</tt> on all supported platforms. Directions to build
   <tt>llvm</tt> are
   <a href="http://llvm.org/docs/GettingStarted.html#quickstart">here</a>.</p>

</div>

<!-- ======================================================================= -->
<div class="doc_subsubsection"><a name="llvmgccbin">Build the LLVM GCC Binary Distribution</a></div>

<div class="doc_text">

<p>Creating the <tt>llvm-gcc</tt> binary distribution (Release/Optimized)
   requires performing the following steps for each supported platform:</p>

<ol>
  <li><p>Build the <tt>llvm-gcc</tt> front-end by following the directions in
      the <tt>README.LLVM</tt> file. The front-end must be compiled with C, C++,
      Objective-C (Mac only), Objective-C++ (Mac only), and Fortran
      support.</p></li>

  <li><p>Boostrapping must be enabled.</p></li>

  <li><p>Be sure to build with <tt>LLVM_VERSION_INFO=X.Y</tt>, where <tt>X</tt>
      is the major and <tt>Y</tt> is the minor release numbers.</p></li>

  <li><p>Copy the installation directory to a directory named for the specific
      target. For example on Red Hat Enterprise Linux, the directory would be
      named <tt>llvm-gcc4.2-2.6-x86-linux-RHEL4</tt>. Archive and compress the
      new directory.</p></li>
</ol>

</div>

<!-- ======================================================================= -->
<div class="doc_subsubsection"><a name="clangbin">Build Clang Binary Distribution</a></div>

<div class="doc_text">

<p>Creating the <tt>clang</tt> binary distribution
   (Debug/Release+Asserts/Release) requires performing the following steps for
   each supported platform:</p>

<ol>
  <li>Build clang according to the directions
      <a href="http://clang.llvm.org/get_started.html">here</a>.</li>

  <li>Build both a debug and release version of clang. The binary will be the
      release build.</lI>

  <li>Package <tt>clang</tt> (details to follow).</li>
</ol>

</div>

<!-- ======================================================================= -->
<div class="doc_subsubsection"><a name="target-build">Target Specific Build Details</a></div>

<div class="doc_text">

<p>The table below specifies which compilers are used for each Arch/OS
   combination when qualifying the build of <tt>llvm</tt>, <tt>llvm-gcc</tt>,
   and <tt>clang</tt>.</p>

<table>
  <tr><th>Architecture</th><th>OS</th><th>compiler</th></tr>
  <tr><td>x86-32</td><td>Mac OS 10.5</td><td>gcc 4.0.1</td></tr>
  <tr><td>x86-32</td><td>Linux</td><td>gcc 4.2.X, gcc 4.3.X</td></tr>
  <tr><td>x86-32</td><td>FreeBSD</td><td>gcc 4.2.X</td></tr>
  <tr><td>x86-32</td><td>mingw</td><td>gcc 3.4.5</td></tr>
  <tr><td>x86-64</td><td>Mac OS 10.5</td><td>gcc 4.0.1</td></tr>
  <tr><td>x86-64</td><td>Linux</td><td>gcc 4.2.X, gcc 4.3.X</td></tr>
  <tr><td>x86-64</td><td>FreeBSD</td><td>gcc 4.2.X</td></tr>
</table> 

</div>

<!-- ======================================================================= -->
<div class="doc_subsection"><a name="release-qualify">
Building the Release</a></div>

<div class="doc_text">

<p>A release is qualified when it has no regressions from the previous release
   (or baseline). Regressions are related to correctness first and performance
   second. (We may tolerate some minor performance regressions if they are
   deemed necessary for the general quality of the compiler.)</p>

<p><b>Regressions are new failures in the set of tests that are used to qualify
   each product and only include things on the list. Every release will have
   some bugs in it. It is the reality of developing a complex piece of
   software. We need a very concrete and definitive release criteria that
   ensures we have monotonically improving quality on some metric. The metric we
   use is described below. This doesn't mean that we don't care about other
   criteria, but these are the criteria which we found to be most important and
   which must be satisfied before a release can go out</b></p>

</div>

<!-- ======================================================================= -->
<div class="doc_subsubsection"><a name="llvm-qualify">Qualify LLVM</a></div>

<div class="doc_text">

<p>LLVM is qualified when it has a clean test run without a front-end. And it
   has no regressions when using either <tt>llvm-gcc</tt> or <tt>clang</tt> with
   the <tt>test-suite</tt> from the previous release.</p>

</div>

<!-- ======================================================================= -->
<div class="doc_subsubsection"><a name="llvmgcc-qualify">Qualify LLVM-GCC</a></div>

<div class="doc_text">

<p><tt>LLVM-GCC</tt> is qualified when front-end specific tests in the
   <tt>llvm</tt> regression test suite all pass and there are no regressions in
   the <tt>test-suite</tt>.</p>

<p>We do not use the GCC DejaGNU test suite as release criteria.</p>

</div>

<!-- ======================================================================= -->
<div class="doc_subsubsection"><a name="clang-qualify">Qualify Clang</a></div>

<div class="doc_text">

<p><tt>Clang</tt> is qualified when front-end specific tests in the 
   <tt>llvm</tt> dejagnu test suite all pass, clang's own test suite passes
   cleanly, and there are no regressions in the <tt>test-suite</tt>.</p>

</div>

<!-- ======================================================================= -->
<div class="doc_subsubsection"><a name="targets">Specific Target 
Qualification Details</a></div>

<div class="doc_text">

<table>
  <tr><th>Architecture</th><th>OS</th><th>llvm-gcc baseline</th><th>clang baseline</th><th>tests</th></tr>
  <tr><td>x86-32</td><td>Linux</td><td>last release</td><td>last release</td><td>llvm dejagnu, clang tests, test-suite (including spec)</td></tr>
  <tr><td>x86-32</td><td>FreeBSD</td><td>none</td><td>last release</td><td>llvm dejagnu, clang tests, test-suite</td></tr>
  <tr><td>x86-32</td><td>mingw</td><td>last release</td><td>none</td><td>QT</td></tr>
  <tr><td>x86-64</td><td>Mac OS 10.X</td><td>last release</td><td>last release</td><td>llvm dejagnu, clang tests, test-suite (including spec)</td></tr>
  <tr><td>x86-64</td><td>Linux</td><td>last release</td><td>last release</td><td>llvm dejagnu, clang tests, test-suite (including spec)</td></tr>
  <tr><td>x86-64</td><td>FreeBSD</td><td>none</td><td>last release</td><td>llvm dejagnu, clang tests, test-suite</td></tr>
</table>

</div>

<!-- ======================================================================= -->
<div class="doc_subsection"><a name="commTest">Community Testing</a></div>
<div class="doc_text">

<p>Once all testing has been completed and appropriate bugs filed, the release
   candidate tarballs are put on the website and the LLVM community is
   notified. Ask that all LLVM developers test the release in 2 ways:</p>

<ol>
  <li>Download <tt>llvm-<i>X.Y</i></tt>, <tt>llvm-test-<i>X.Y</i></tt>, and the
      appropriate <tt>llvm-gcc</tt> and/or <tt>clang</tt> binary. Build
      LLVM. Run <tt>make check</tt> and the full LLVM test suite (<tt>make
      TEST=nightly report</tt>).</li>

  <li>Download <tt>llvm-<i>X.Y</i></tt>, <tt>llvm-test-<i>X.Y</i></tt>, and the
      <tt>llvm-gcc</tt> and/or <tt>clang</tt> source. Compile everything. Run
      <tt>make check</tt> and the full LLVM test suite (<tt>make TEST=nightly
      report</tt>).</li>
</ol>

<p>Ask LLVM developers to submit the test suite report and <tt>make check</tt>
   results to the list. Verify that there are no regressions from the previous
   release. The results are not used to qualify a release, but to spot other
   potential problems. For unsupported targets, verify that <tt>make check</tt>
   is at least clean.</p>
  
<p>During the first round of testing, all regressions must be fixed before the
   second release candidate is tagged.</p>
  
<p>If this is the second round of testing, the testing is only to ensure that
   bug fixes previously merged in have not created new major problems. <i>This
   is not the time to solve additional and unrelated bugs!</i> If no patches are
   merged in, the release is determined to be ready and the release manager may
   move onto the next stage.</p>

</div>

<!-- ======================================================================= -->
<div class="doc_subsection"><a name="release-patch">Release Patch Rules</a></div>

<div class="doc_text">

<p>Below are the rules regarding patching the release branch:</p>

<ol>
  <li><p>Patches applied to the release branch may only be applied by the
      release manager.</p></li>

  <li><p>During the first round of testing, patches that fix regressions or that
      are small and relatively risk free (verified by the appropriate code
      owner) are applied to the branch. Code owners are asked to be very
      conservative in approving patches for the branch. We reserve the right to
      reject any patch that does not fix a regression as previously
      defined.</p></li>

  <li><p>During the remaining rounds of testing, only patches that fix critical
      regressions may be applied.</p></li>
</ol>

</div>

<!-- ======================================================================= -->
<div class="doc_subsection"><a name="release-final">Release Final Tasks 
</a></div>

<div class="doc_text">

<p>The final stages of the release process involves tagging the "final" release
   branch, updating documentation that refers to the release, and updating the
   demo page.</p>

</div>


<!-- ======================================================================= -->
<div class="doc_subsubsection"><a name="updocs">Update Documentation</a></div>

<div class="doc_text">

<p>Review the documentation and ensure that it is up to date. The "Release
   Notes" must be updated to reflect new features, bug fixes, new known issues,
   and changes in the list of supported platforms. The "Getting Started Guide"
   should be updated to reflect the new release version number tag avaiable from
   Subversion and changes in basic system requirements. Merge both changes from
   mainline into the release branch.</p>

</div>

<!-- ======================================================================= -->
<div class="doc_subsubsection"><a name="tag">Tag the LLVM Final Release</a></div>

<div class="doc_text">

<p>Tag the final release sources using the following procedure:</p>

<div class="doc_code">
<pre>
$ svn copy https://llvm.org/svn/llvm-project/llvm/branches/release_XY \
           https://llvm.org/svn/llvm-project/llvm/tags/RELEASE_<i>XY</i>/Final

$ svn copy https://llvm.org/svn/llvm-project/llvm-gcc-4.2/branches/release_XY \
           https://llvm.org/svn/llvm-project/llvm-gcc-4.2/tags/RELEASE_<i>XY</i>/Final

$ svn copy https://llvm.org/svn/llvm-project/test-suite/branches/release_XY \
           https://llvm.org/svn/llvm-project/test-suite/tags/RELEASE_<i>XY</i>/Final

$ svn copy https://llvm.org/svn/llvm-project/cfe/branches/release_XY \
           https://llvm.org/svn/llvm-project/cfe/tags/RELEASE_<i>XY</i>/Final
</pre>
</div>

</div>

<!-- ======================================================================= -->
<div class="doc_subsection"><a name="updemo">Update the LLVM Demo Page</a></div>

<div class="doc_text">

<p>The LLVM demo page must be updated to use the new release. This consists of
   using the new <tt>llvm-gcc</tt> binary and building LLVM.</p>

</div>

<!-- ======================================================================= -->
<div class="doc_subsubsection"><a name="webupdates">Update the LLVM Website</a></div>

<div class="doc_text">

<p>The website must be updated before the release announcement is sent out. Here
   is what to do:</p>

<ol>
  <li>Check out the <tt>www</tt> module from Subversion.</li>

  <li>Create a new subdirectory <tt>X.Y</tt> in the releases directory.</li>

  <li>Commit the <tt>llvm</tt>, <tt>test-suite</tt>, <tt>llvm-gcc</tt> source,
      <tt>clang source</tt>, <tt>clang binaries</tt>, and <tt>llvm-gcc</tt>
      binaries in this new directory.</li>

  <li>Copy and commit the <tt>llvm/docs</tt> and <tt>LICENSE.txt</tt> files
      into this new directory. The docs should be built with
      <tt>BUILD_FOR_WEBSITE=1</tt>.</li>

  <li>Commit the <tt>index.html</tt> to the <tt>release/X.Y</tt> directory to
      redirect (use from previous release.</li>

  <li>Update the <tt>releases/download.html</tt> file with the new release.</li>

  <li>Update the <tt>releases/index.html</tt> with the new release and link to
      release documentation.</li>

  <li>Finally, update the main page (<tt>index.html</tt> and sidebar) to point
      to the new release and release announcement. Make sure this all gets
      committed back into Subversion.</li>
</ol>

</div>

<!-- ======================================================================= -->
<div class="doc_subsubsection"><a name="announce">Announce the Release</a></div>

<div class="doc_text">

<p>Have Chris send out the release announcement when everything is finished.</p>

</div>

<!-- *********************************************************************** -->
<hr>
<address>
  <a href="http://jigsaw.w3.org/css-validator/check/referer"><img
  src="http://jigsaw.w3.org/css-validator/images/vcss-blue" alt="Valid CSS"></a>
  <a href="http://validator.w3.org/check/referer"><img
  src="http://www.w3.org/Icons/valid-html401-blue" alt="Valid HTML 4.01"></a>
  <a href="http://llvm.cs.uiuc.edu">The LLVM Compiler Infrastructure</a>
  <br>
  Last modified: $Date$
</address>
</body>
</html>
