<!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>
  </p>
</div>

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

<div class="doc_text">
  <p>
  This document collects information about successfully releasing LLVM 
  (including subprojects llvm-gcc and Clang) 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 (currently every 6 months). We
  do not have dot releases because of the nature of LLVM incremental 
  development philosophy. The release schedule is roughly as follows:
  </p>
<ol>
<li>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.</li>
<li>Create release branch and begin release process. </li>
<li>Send out pre-release for first round of testing. Testing will last 7-10 days.
During the first round of testing, regressions should be found and fixed. Patches
are merged from mainline to the release branch.</li>
<li>Generate and send out second pre-release. Bugs found during this time will
not be fixed unless absolutely critical. Bugs introduce by patches merged in
will be fixed and if so, a 3rd round of testing is needed.</li>
<li>The release notes should be updated during the first and second round of
pre-release testing.</li>
<li>Finally, release!</li>
</ol>
</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 Release Branch</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">
This section describes a few administrative tasks that need to be done for the
release process to begin. Specifically, it involves creating the release branch,
 resetting version numbers, and creating the release tarballs for the release 
 team to begin testing.
</div>

<!-- ======================================================================= -->
<div class="doc_subsubsection"><a name="branch">Create Release Branch</a></div>
<div class="doc_text">
<p>Branch the Subversion HEAD using the following procedure:</p>
  <ol>
    <li>
    <p>Verify that the current Subversion HEAD is in decent shape by examining 
    nightly tester or buildbot results.</p></li>
    <li>
    <p>Request all developers to refrain from committing. Offenders get commit
    rights taken away (temporarily).</p></li>
  <li>
  <p> Create the release branch for <tt>llvm</tt>, <tt>llvm-gcc4.2</tt>, 
  <tt>clang</tt>, and the <tt>test-suite</tt>. The branch name will be 
  <tt>release_XX</tt>,where <tt>XX</tt> is the major and minor release numbers.
  <tt>Clang</tt> will have a different release number than <tt>llvm</tt>/
  <tt>llvm-gcc4</tt> since its first release was years later 
  (still deciding if this will be true or not). These branches 
  can be created without checking out anything from subversion.
  </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>XX</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>XX</i>
svn copy https://llvm.org/svn/llvm-project/test-suite/trunk \
         https://llvm.org/svn/llvm-project/test-suite/branches/release_<i>XX</i>
svn copy https://llvm.org/svn/llvm-project/cfe/trunk \
         https://llvm.org/svn/llvm-project/cfe/branches/release_<i>XX</i>
</pre>
  </div>

  <li>
    <p>Advise developers they can work on Subversion HEAD again.</p></li>
  
  <li>
    <p>The Release Manager should switch to the release branch (as all changes 
    to the release will now be done in the branch).  The easiest way to do this 
    is to grab another working copy using the following commands:</p>

<div class="doc_code">
<pre>
svn co https://llvm.org/svn/llvm-project/llvm/branches/release_<i>XX</i>
svn co https://llvm.org/svn/llvm-project/llvm-gcc-4.2/branches/release_<i>XX</i>
svn co https://llvm.org/svn/llvm-project/test-suite/branches/release_<i>XX</i>
svn co https://llvm.org/svn/llvm-project/cfe/branches/release_<i>XX</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'
  autoconf/configure.ac version from X.Xsvn to just X.X. Update it on mainline
  as well to be the next version (X.X+1svn). Regenerated the configure script
  for both. This must be done for both <tt>llvm</tt> and the 
  <tt>test-suite</tt>.
  </p>
  <p>FIXME: Add a note about <tt>clang</tt>.</p>
  <p>In addition, the version number of all the Bugzilla components must be
  updated for the next release.
  </p>
</div>

<!-- ======================================================================= -->
<div class="doc_subsubsection"><a name="dist">Build the LLVM Source Distributions</a></div>
<div class="doc_text">
  <p>
  Create source distributions for <tt>LLVM</tt>, <tt>LLVM-GCC</tt>,  
  <tt>clang</tt>, and the llvm <tt>test-suite</tt> by exporting the source from 
  Subversion and archiving it.  This can be done with the following commands:
  </p>

<div class="doc_code">
<pre>
svn export https://llvm.org/svn/llvm-project/llvm/branches/release_<i>XX</i> llvm-X.X
svn export https://llvm.org/svn/llvm-project/llvm-gcc-4.2/branches/release_<i>XX</i> llvm-gcc4.2-X.X.source
svn export https://llvm.org/svn/llvm-project/test-suite/branches/release_<i>XX</i> llvm-test-X.X
svn export https://llvm.org/svn/llvm-project/cfe/branches/release_<i>XX</i> clang-X.X
tar -czvf - llvm-X.X          | gzip &gt; llvm-X.X.tar.gz
tar -czvf - llvm-test-X.X     | gzip &gt; llvm-test-X.X.tar.gz
tar -czvf - llvm-gcc4.2-X.X.source | gzip &gt; llvm-gcc-4.2-X.X.source.tar.gz
tar -czvf - clang-X.X | gzip &gt; clang-X.X.tar.gz
</pre>
</div>
</div>

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

<div class="doc_text">
The build of <tt>llvm</tt>, <tt>llvm-gcc</tt>, and <tt>clang</tt> must be free
of errors and warnings in both debug, release+asserts, and release builds. 
If all builds are clean, then the release passes build qualification.

<ol>
<li>debug: ENABLE_OPTIMIZED=0</li>
<li>release+asserts: ENABLE_OPTIMIZED=1</li>
<li>release: ENABLE_OPTIMIZED=1 DISABLE_ASSERTIONS=1</li>
</ol>
</div>

<!-- ======================================================================= -->
<div class="doc_subsubsection"><a name="build">Build LLVM</a></div>
<div class="doc_text">
  <p>
  Build both debug, release+asserts (optimized), and release versions of 
  LLVM on all supported platforms. Direction to build llvm 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 LLVM GCC binary distribution (release/optimized) requires 
  performing the following steps for each supported platform:
  </p>

  <ol>
    <li>
    Build the LLVM GCC front-end by following the directions in the README.LLVM
    file. The frontend must be compiled with c, c++, objc (mac only), 
    objc++ (mac only) and fortran support. </li>
    <li>Please boostrap as well.</li>
    <li>Be sure to build with LLVM_VERSION_INFO=X.X, where X is the major and
    minor release numbers.
    </li>

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

<!-- ======================================================================= -->
<div class="doc_subsubsection"><a name="clangbin">Build Clang 
Binary Distribution</a></div>
<div class="doc_text">
  <p>
  Creating the Clang binary distribution (debug/release/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, but the binary
    will be a release build.</lI>

    <li>
    Package clang (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>, <tt>clang.
  </tt></p>
  
  <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> 
  </p>

</div>


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

<div class="doc_text">
 A release is qualified when it has no regressions from the previous 
 release (or baseline). Regressions are related to correctness only and not 
 performance at this time. <b>Regressions are new failures in the set of tests that
 are used to qualify each product and only include things on the list. 
 Ultimately, there is no end to the number of possible bugs in a release.  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 things, 
 but this are things that must be satisfied before a release can go out</b>
</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 dejagnu test run without a frontend 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> dejagnu 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">
    <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">
  <p><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></p>
</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 pre-release
  tar balls may be 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 llvm-X.X, llvm-test-X.X, and the appropriate llvm-gcc4 
  and/or clang binary. Build LLVM.
  Run "make check" and the full llvm-test suite (make TEST=nightly report).</li>
  <li>Download llvm-X.X, llvm-test-X.X, and the llvm-gcc4 and/or clang source. 
  Compile everything. Run "make check" and the full llvm-test suite (make TEST=nightly 
  report).</li>
  </ol>
  <p>Ask LLVM developers to submit the report and make check results to the list.
  Attempt to 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 make check at least is 
  clean.</p>
  
  <p>During the first round of testing time,
  all regressions must be fixed before the second pre-release is created.</p>
  
  <p>If this is the second round of testing, this is only to ensure the bug 
  fixes previously merged in have not created new major problems. This is not 
  the time to solve additional and unrelated bugs. If no patches are merged in, 
  the release is determined to be ready and the release manager may move onto 
  the next step.
  </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>
  <p>
  <li>Patches applied to the release branch are only applied by the release 
  manager.</li>
  <li>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 and we reserve the right to reject any patch 
  that does not fix a regression as previously defined.</li>
  <li>During the remaining rounds of testing, only patches that fix regressions
  may be applied.</li>
  
  </p>
</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 involving tagging the release branch,
  updating documentation that refers to the release, and updating the demo
  page.</p>
  <p>FIXME: Add a note if anything needs to be done to the clang website. 
  Eventually the websites will be merged hopefully.</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 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 Release Branch</a></div>
<div class="doc_text">
  <p>Tag the release branch using the following procedure:</p>
<div class="doc_code">
<pre>
svn copy https://llvm.org/svn/llvm-project/llvm/branches/release_XX \
         https://llvm.org/svn/llvm-project/llvm/tags/RELEASE_<i>XX</i>
svn copy https://llvm.org/svn/llvm-project/llvm-gcc-4.2/branches/release_XX \
         https://llvm.org/svn/llvm-project/llvm-gcc-4.2/tags/RELEASE_<i>XX</i>
svn copy https://llvm.org/svn/llvm-project/test-suite/branches/release_XX \
         https://llvm.org/svn/llvm-project/test-suite/tags/RELEASE_<i>XX</i>
</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 llvm-gcc binary and building LLVM. Update the website demo page
  configuration to use the new release.</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>website</tt> module from CVS. </li> 
  <li> Create a new subdirectory X.X 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 BUILD_FOR_WEBSITE=1.</li>
  <li> Commit the index.html to the release/X.X 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>
