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

<h1>How To Release LLVM To The Public</h1>
<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>

<!-- *********************************************************************** -->
<h2><a name="introduction">Introduction</a></h2>
<!-- *********************************************************************** -->

<div>

<p>This document contains information about successfully releasing LLVM &mdash;
   including subprojects: e.g., <tt>clang</tt> and <tt>dragonegg</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>

<!-- *********************************************************************** -->
<h2><a name="process">Release Timeline</a></h2>
<!-- *********************************************************************** -->
<div>

<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>

<!-- *********************************************************************** -->
<h2><a name="process">Release Process</a></h2>
<!-- *********************************************************************** -->

<div>

<ol>
  <li><a href="#release-admin">Release Administrative Tasks</a>
  <ol>
    <li><a href="#branch">Create Release Branch</a></li>
    <li><a href="#verchanges">Update Version Numbers</a></li>
  </ol>
  </li>
  <li><a href="#release-build">Building the Release</a>
  <ol>
    <li><a href="#dist">Build the LLVM Source Distributions</a></li>
    <li><a href="#build">Build LLVM</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>
  <li><a href="#release-qualify">Release Qualification Criteria</a>
  <ol>
    <li><a href="#llvm-qualify">Qualify LLVM</a></li>
    <li><a href="#clang-qualify">Qualify Clang</a></li>
    <li><a href="#targets">Specific Target Qualification Details</a></li>
  </ol>
  </li>

  <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>
  <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>
  </li>
</ol>

<!-- ======================================================================= -->
<h3><a name="release-admin">Release Administrative Tasks</a></h3>

<div>

<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>

<!-- ======================================================================= -->
<h4><a name="branch">Create Release Branch</a></h4>

<div>

<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>clang</tt>,
      the <tt>test-suite</tt>, and <tt>dragonegg</tt> from the last known good
      revision. The branch's name is <tt>release_<i>XY</i></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/cfe/trunk \
           https://llvm.org/svn/llvm-project/cfe/branches/release_<i>XY</i>

$ svn copy https://llvm.org/svn/llvm-project/dragonegg/trunk \
           https://llvm.org/svn/llvm-project/dragonegg/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>
</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/cfe/branches/release_<i>XY</i> clang-<i>X.Y</i>

$ svn co https://llvm.org/svn/llvm-project/dragonegg/branches/release_<i>XY</i> dragonegg-<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>
</pre>
</div></li>
</ol>

</div>

<!-- ======================================================================= -->
<h4><a name="verchanges">Update LLVM Version</a></h4>

<div>

<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>

<!-- ======================================================================= -->
<h4><a name="dist">Build the LLVM Release Candidates</a></h4>

<div>

<p>Create release candidates for <tt>llvm</tt>, <tt>clang</tt>,
   <tt>dragonegg</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/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

$ svn mkdir https://llvm.org/svn/llvm-project/dragonegg/tags/RELEASE_<i>XY</i>
$ svn copy https://llvm.org/svn/llvm-project/dragonegg/branches/release_<i>XY</i> \
           https://llvm.org/svn/llvm-project/dragonegg/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
</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/cfe/tags/RELEASE_<i>XY</i>/rc1 clang-<i>X.Y</i>rc1
$ svn export https://llvm.org/svn/llvm-project/dragonegg/tags/RELEASE_<i>XY</i>/rc1 dragonegg-<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

$ tar -cvf - llvm-<i>X.Y</i>rc1        | gzip &gt; llvm-<i>X.Y</i>rc1.src.tar.gz
$ tar -cvf - clang-<i>X.Y</i>rc1       | gzip &gt; clang-<i>X.Y</i>rc1.src.tar.gz
$ tar -cvf - dragonegg-<i>X.Y</i>rc1   | gzip &gt; dragonegg-<i>X.Y</i>rc1.src.tar.gz
$ tar -cvf - llvm-test-<i>X.Y</i>rc1   | gzip &gt; llvm-test-<i>X.Y</i>rc1.src.tar.gz
</pre>
</div>

</div>

</div>

<!-- ======================================================================= -->
<h3><a name="release-build">Building the Release</a></h3>

<div>

<p>The builds of <tt>llvm</tt>, <tt>clang</tt>, and <tt>dragonegg</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>

<!-- ======================================================================= -->
<h4><a name="build">Build LLVM</a></h4>

<div>

<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="GettingStarted.html#quickstart">here</a>.</p>

</div>

<!-- ======================================================================= -->
<h4><a name="clangbin">Build Clang Binary Distribution</a></h4>

<div>

<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>

<!-- ======================================================================= -->
<h4><a name="target-build">Target Specific Build Details</a></h4>

<div>

<p>The table below specifies which compilers are used for each Arch/OS
   combination when qualifying the build of <tt>llvm</tt>, <tt>clang</tt>,
   and <tt>dragonegg</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>

<!-- ======================================================================= -->
<h3><a name="release-qualify">Building the Release</a></h3>

<div>

<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>

<!-- ======================================================================= -->
<h4><a name="llvm-qualify">Qualify LLVM</a></h4>

<div>

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

</div>

<!-- ======================================================================= -->
<h4><a name="clang-qualify">Qualify Clang</a></h4>

<div>

<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>

<!-- ======================================================================= -->
<h4><a name="targets">Specific Target Qualification Details</a></h4>

<div>

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

</div>

</div>

<!-- ======================================================================= -->
<h3><a name="commTest">Community Testing</a></h3>
<div>

<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>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>clang</tt> sources. 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>

<!-- ======================================================================= -->
<h3><a name="release-patch">Release Patch Rules</a></h3>

<div>

<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>

<!-- ======================================================================= -->
<h3><a name="release-final">Release Final Tasks</a></h3>

<div>

<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>

<!-- ======================================================================= -->
<h4><a name="updocs">Update Documentation</a></h4>

<div>

<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>

<!-- ======================================================================= -->
<h4><a name="tag">Tag the LLVM Final Release</a></h4>

<div>

<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/cfe/branches/release_XY \
           https://llvm.org/svn/llvm-project/cfe/tags/RELEASE_<i>XY</i>/Final

$ svn copy https://llvm.org/svn/llvm-project/dragonegg/branches/release_XY \
           https://llvm.org/svn/llvm-project/dragonegg/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
</pre>
</div>

</div>

</div>

<!-- ======================================================================= -->
<h3><a name="updemo">Update the LLVM Demo Page</a></h3>

<div>

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

<!-- ======================================================================= -->
<h4><a name="webupdates">Update the LLVM Website</a></h4>

<div>

<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>clang</tt> source,
      <tt>clang binaries</tt>, <tt>dragonegg</tt> source, and <tt>dragonegg</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>

<!-- ======================================================================= -->
<h4><a name="announce">Announce the Release</a></h4>

<div>

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

</div>

</div>

</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.org/">The LLVM Compiler Infrastructure</a>
  <br>
  Last modified: $Date$
</address>
</body>
</html>
