<!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>
<p class="doc_warning">NOTE: THIS DOCUMENT IS A WORK IN PROGRESS!</p>
<ol>
  <li><a href="#introduction">Introduction</a></li>
  <li><a href="#process">Release Process</a></li>
  <li><a href="#dist_targets">Distribution Targets</a></li>
</ol>
<div class="doc_author">
  <p>Written by <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 to the
public. It is the release manager's guide to ensuring that a high quality build
of LLVM is released. Mostly, it's just a bunch of reminders of things to do at
release time so we don't inadvertently ship something that is utility 
deficient.</p>

<p>
There are three main tasks for building a release of LLVM:
<ol>
  <li>Create the LLVM source distribution.</li>
  <li>Create the LLVM GCC source distribtuion.</li>
  <li>Create a set of LLVM GCC binary distribtuions for each supported
      platform.  These binary distributions must include compiled versions
      of the libraries found in <tt>llvm/runtime</tt> from the LLVM
      source distribution created in Step 1.</li>
</ol>
</p>
</div>

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

<!-- ======================================================================= -->
<div class="doc_subsection"><a name="overview">Process Overview</a></div>
<div class="doc_text">
  <ol>
    <li><a href="#updocs">Update Documentation</a></li>
    <li><a href="#merge">Merge Branches</a></li>
    <li><a href="#deps">Make LibDeps.txt</a></li>
    <li><a href="#settle">Settle LLVM HEAD</a></li>
    <li><a href="#tag">Tag LLVM and Create the Release Branch</a></li>
    <li><a href="#build">Build LLVM</a></li>
    <li><a href="#check">Run 'make check'</a></li>
    <li><a href="#test">Run LLVM Test Suite</a></li>
    <li><a href="#dist">Build the LLVM Source Distributions</a></li>
    <li><a href="#llvmgccbin">Build the LLVM GCC Binary Distribution</a></li>
  </ol>
</div>

<!-- ======================================================================= -->
<div class="doc_subsection"><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 CVS and changes in
  basic system requirements.
  </p>
</div>

<!-- ======================================================================= -->
<div class="doc_subsection"><a name="merge">Merge Branches</a></div>
<div class="doc_text">
<p>
Merge any work done on branches intended for release into mainline. Finish and
commit all new features or bug fixes that are scheduled to go into the release.
Work that is not to be incorporated into the release should not be merged from
branchs or commited from developer's working directories.
</p>

<p>
From this point until the release branch is created, developers should
<em>not</em>
commit changes to the llvm and llvm-gcc CVS repositories unless it is a bug
fix <em>for the release</em>.
</p>
</div>

<!-- ======================================================================= -->
<div class="doc_subsection"><a name="deps">Make LibDeps.txt</a></div>
<div class="doc_text">
  <p>Rebuild the <tt>LibDeps.txt</tt> target in <tt>utils/llvm-config</tt>. This
  makes sure that the <tt>llvm-config</tt> utility remains relevant for the
  release, reflecting any changes in the library dependencies.</p>
</div>


<!-- ======================================================================= -->
<div class="doc_subsection"><a name="settle">Settle CVS HEAD</a></div>
<div class="doc_text">
  <p>
  Use the nightly test reports and 'make check' (deja-gnu based tests) to 
  ensure that recent changes and merged branches have not destabilized LLVM.
  Platforms which are used less often should be given special attention as they
  are the most likely to break from commits from the previous step.
  </p>
</div>

<!-- ======================================================================= -->
<div class="doc_subsection"><a name="tag">CVS Tag And Branch</a></div>
<div class="doc_text">
  <p>Tag and branch the CVS HEAD using the following procedure:</p>
  <ol>
    <li>
    Request all developers to refrain from committing. Offenders get commit
    rights taken away (temporarily).
    </li>

    <li>
    The Release Manager updates his/her llvm, llvm-test, and llvm-gcc source
    trees with the
    latest sources from mainline CVS.  The Release Manage may want to consider
    using a new working directory for this to keep current uncommitted work
    separate from release work.
    </li>

    <li>
    The Release Manager tags his/her llvm, llvm-test, and llvm-gcc working
    directories with
    "ROOT_RELEASE_XX" where XX is the major and minor
    release numbers (you can't have . in a cvs tag name). So, for Release 1.2,
    XX=12 and for Release 1.10, XX=110.
    </li>

    <li>
    Immediately create cvs branches based on the ROOT_RELEASE_XX tag. The tag
    should be "release_XX" (where XX matches that used for the ROOT_RELEASE_XX
    tag).  This is where the release distribution will be created.
    </li>

    <li>
    Advise developers they can work on CVS HEAD again.
    </li>

    <li>
    The Release Manager and any developers working on the release 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>
    <tt>cvs -d &lt;CVS Repository&gt; co -r release_XX llvm</tt><br>
    <tt>cvs -d &lt;CVS Repository&gt; co -r release_XX llvm-test</tt><br>
    <tt>cvs -d &lt;CVS Repository&gt; co -r release_XX llvm-gcc</tt><br>
    </p>
    </li>
</div>

<!-- ======================================================================= -->
<div class="doc_subsection"><a name="build">Build LLVM</a></div>
<div class="doc_text">
  <p>
  Build both debug and release (optimized) versions of LLVM on all
  platforms. Ensure the build is warning and error free on each platform.
  </p>

  <p>
  Build a new version of the LLVM GCC front-end after building the LLVM tools.
  Once that is complete, go back to the LLVM source tree and build and install
  the <tt>llvm/runtime</tt> libraries.
  </p>
</div>

<!-- ======================================================================= -->
<div class="doc_subsection"><a name="check">Run 'make check'</a></div>
<div class="doc_text">
  <p>Run <tt>make check</tt> and ensure there are no unexpected failures. If
  there are, resolve the failures, commit them back into the release branch,
  and restart testing by <a href="#build">re-building LLVM</a>.
  </p>

  <p>
  Ensure that 'make check' passes on all platforms for all targets. If certain
  failures cannot be resolved before release time, determine if marking them
  XFAIL is appropriate. If not, fix the bug and go back. The test suite must
  complete with "0 unexpected failures" for release.
  </p>
</div>

<!-- ======================================================================= -->
<div class="doc_subsection"><a name="test">LLVM Test Suite</a></div>
<div class="doc_text">
  <p>Run the llvm-test suite and ensure there are no unacceptable failures.
  If there are, resolve the failures and go back to
  <a href="#build">re-building LLVM</a>. The test suite
  should be run in Nightly Test mode. All tests must pass.
</div>

<!-- ======================================================================= -->
<div class="doc_subsection"><a name="dist">Build the LLVM Source Distributions</a></div>
<div class="doc_text">
  <p>
  Create source distributions for LLVM, LLVM GCC, and the LLVM Test Suite by
  exporting the source
  from CVS and archiving it.  This can be done with the following commands:
  </p>

  <p>
  <tt>cvs -d &lt;CVS Repository&gt; export -r release_XX llvm</tt><br>
  <tt>cvs -d &lt;CVS Repository&gt; export -r release_XX llvm-test</tt><br>
  <tt>cvs -d &lt;CVS Repository&gt; export -r release_XX llvm-gcc</tt><br>
  <tt>mkdir cfrontend; mv llvm-gcc cfrontend/src</tt><br>
  <tt>tar -cvf - llvm          | gzip &gt; llvm-X.X.tar.gz</tt><br>
  <tt>tar -cvf - llvm-test     | gzip &gt; llvm-test-X.X.tar.gz</tt><br>
  <tt>tar -cvf - cfrontend/src | gzip &gt; cfrontend-X.X.source.tar.gz</tt><br>
  </p>

  <!-- This is a
  two step process. First, use "make dist" to simply build the distribution. Any
  failures need to be corrected (on the branch). Once "make dist" can be
  successful, do "make dist-check". This target will do the same thing as the
  'dist' target but also test that distribution to make sure it works. This
  ensures that needed files are not missing and that the src tarball can be
  successfully unbacked, built, installed, and cleaned. This two-level testing
  needs to be done on each target platform.
  -->
</div>

<!-- ======================================================================= -->
<div class="doc_subsection"><a name="llvmgccbin">Build the LLVM GCC Binary Distribution</a></div>
<div class="doc_text">
  <p>
  Creating the LLVM GCC binary distribution requires performing the following
  steps for each supported platform:
  </p>

  <ol>
    <li>
    Build the LLVM GCC front-end.  The LLVM GCC front-end must be installed in
    a directory named <tt>cfrontend/&lt;platform&gt;/llvm-gcc</tt>.  For
    example, the Sparc/Solaris directory is named
    <tt>cfrontend/sparc/llvm-gcc</tt>.
    </li>

    <li>
    Build the libraries in <tt>llvm/runtime</tt> and install them into the 
    created LLVM GCC installation directory.
    </li>

    <li>
    For systems with non-distributable header files (e.g. Solaris), manually
    remove header files that the GCC build process has "fixed."  This process
    is admittedly painful, but not as bad as it looks; these header files are
    almost always easily identifiable with simple grep expressions and are
    installed in only a few directories in the GCC installation directory.
    </li>

    <li>
    Add the copyright files and header file fix script.
    </li>

    <li>
    Archive and compress the installation directory.  These can be found in
    previous releases of the LLVM-GCC front-end.
    </li>
  </ol>
</div>

<!--
<div class="doc_subsection"><a name="release">Release</a></div>
<div class="doc_text">
  <p>Release the distribution tarball to the public. This consists of generating
  several tarballs. The first set, the source distributions, are automatically
  generated by the "make dist" and "make dist-check". There are gzip, bzip2, and
  zip versions of these bundles.</p>
  <p>The second set of tarballs is the binary release. When "make dist-check"
  succeeds, it will have created an _install directory into which it installed
  the binary release. You need to rename that directory as "llvm" and then
  create tarballs from the contents of that "llvm" directory.</p>
  <p>Finally, use rpm to make an rpm package based on the llvm.spec file. Don't
  forget to update the version number, documentation, etc. in the llvm.spec
  file.</p>
</div>
-->

<!-- *********************************************************************** -->
<div class="doc_section"><a name="dist_targets">Distribution Targets</a></div>
<!-- *********************************************************************** -->
<!-- ======================================================================= -->
<div class="doc_subsection">Overview</div>
<div class="doc_text">
<p>The first thing you need to understand is that there are multiple make 
targets to support this feature. Here's an overview, we'll delve into the 
details later.</p>
<ul>
  <li><b>distdir</b> - builds the distribution directory from which the 
  distribution will be packaged</li>
  <li><b>dist</b> - builds each of the distribution tarballs (tar.gz, 
  tar.bzip2, .zip). These can be built individually as well, with separate 
  targets.</li>
  <li><b>dist-check</b> - this is identical to <tt>dist</tt> but includes a 
  check on the distribution that ensures the tarball can: unpack successfully,
  compile correctly, pass 'make check', and pass 'make clean'.</li>
  <li><b>dist-clean</b>- this just does a normal clean but also cleans up the
  stuff generated by the other three <tt>dist</tt> targets (above).</li>
</ul>
<p>Okay, that's the basic functionality. When making a release, we want to 
ensure that the tree you build the distribution from passes
<tt>dist-check</tt>. Beyond fixing the usual bugs, there is generally one 
impediment to making the release in this fashion: missing files. The 
<tt>dist-check</tt> process guards against that possibility. It will either 
fail and that failure will indicate what's missing, or it will succeed 
meaning that it has proved that the tarballs can actually succeed in 
building LLVM correctly and that it passes <tt>make check</tt>.</p>
<!-- ======================================================================= -->
<div class="doc_subsection">distdir</div>
<p>This target builds the distribution directory which is the directory from 
which the tarballs are generated. The distribution directory has the same 
name as the release, e.g. LLVM-1.7). This target goes through the following 
process:
<ol>
  <li>First, if there was an old distribution directory (for the current 
  release), it is removed in its entirety and you see <tt>Removing old 
  LLVM-1.7</tt></li>
  <li>Second, it issues a <tt>make all ENABLE_OPTIMIZED=3D1</tt> to ensure 
  that the everything in your tree can be built in release mode. Often times 
  there are discrepancies in building between debug and release modes so it 
  enforces release mode first. If that fails, the <tt>distdir</tt> target 
  fails too. This is preceded by the message <tt>Making 'all' to verify 
  build</tt>.</li>
  <li>Next, it traverses your source tree and copies it to a new directory 
  that has the name of the release (<tt>LLVM-M.m</tt> in our current case). 
  This is the directory that will get tar'd. It contains all the software 
  that needs to be in the distribution. During the copying process, it omits 
  generated files, CVS directories, and any other "cruft" that's in your 
  build tree. This is done to eliminate the possibility of huge distribution 
  tarballs that include useless or irrelevant stuff in them. This is the 
  trickiest part of making the distribution. Done manually you will either 
  include stuff that shouldn't be in the distribution or exclude stuff that 
  should. This step is preceded by the message <tt>Building Distribution 
  Directory LLVM-1.7</tt></li>
  <li>The distribution directory is then traversed and all <tt>CVS</tt> or 
  <tt>.svn</tt> directories are removed. You see: <tt>Eliminating CVS/.svn 
  directories from distribution</tt></li>
  <li>The recursive <tt>dist-hook</tt> target is executed. This gives each 
  directory a chance to modify the distribution in some way (more on this 
  below).</li>
  <li>The distribution directory is traversed and the correct file 
  permissions and modes are set based on the type of file.</li>
</ol>
<p>To control the process of making the distribution directory correctly, 
each Makefile can utilize two features:</p>
<ol>
  <li><b><tt>EXTRA_DIST</tt></B> - this make variable specifies which files 
  it should distribute. By default, all source files are automatically 
  included for distribution as well as certain <tt>well known</tt> files 
  (see DistAlways variable in Makefile.rules for details). Each Makefile 
  specifies, via the <tt>EXTRA_DIST</tt> variable, which additional files 
  need to be distributed. Only those files that are needed to build LLVM 
  should be added to <tt>EXTRA_DIST</tt>. <tt>EXTRA_DIST</tt> contains a 
  list of file or directory names that should be distributed. For example, 
  the top level Makefile contains 
  <tt>EXTRA_DIST := test llvm.spec include</tt>. 
  This means that in addition to regular things that are distributed at the 
  top level (<tt>CREDITS.txt, LICENSE.txt</tt>, etc.) the distribution should
  contain the entire <tt>test</tt> and <tt>include</tt> directories as well 
  as the <tt>llvm.spec</tt> file.</li>
  <li><b><tt>dist-hook</tt></B> - this make target can be used to alter the 
  content of the distribution directory. For example, in the top level 
  Makefile there is some logic to eliminate files in the <tt>include</tt> 
  subtree that are generated by the configure script. These should not be 
  distributed. Similarly, any <tt>dist-hook</tt> target found in any 
  directory can add or remove or modify things just before it gets packaged. 
  Any transformation is permitted. Generally, not much is needed.
</ol>
<p>You will see various messages if things go wrong:</p>
<ol>
  <li>During the copying process, any files that are missing will be flagged 
  with: <tt>===== WARNING: Distribution Source 'dir/file' Not Found!</tt>
  These must be corrected by either adding the file or removing it from 
  <tt>EXTRA_DIST</tt>.
  <li>If you build the distribution with <tt>VERBOSE=1</tt>, then you might 
  also see: <tt>Skipping non-existent 'dir/file'</tt> in certain cases where 
  its okay to skip the file.</li>
  <li>The target can fail if any of the things it does fail. Error messages 
  should indicate what went wrong.</li>
</ol>
<!-- ======================================================================= -->
<div class="doc_subsection">dist</div>
<p>This target does exactly what <tt>distdir</tt> target does, but also 
includes assembling the tarballs. There are actually four related targets 
here:<p>
  <ul>
    <li><b><tt>dist-gzip</tt></b>: package the gzipped distribution tar 
    file. The distribution directory is packaged into a single file ending in 
    <tt>.tar.gz</tt> which is gzip compressed.</li>
    <li><b><tt>dist-bzip2</tt></b>: package the bzip2 distribution tar file. 
    The distribution directory is packaged into a single file ending in 
    <tt>.tar.bzip2</tt> which is bzip2 compressed.</li>
    <li><b><tt>dist-zip</tt></b>: package the zip distribution file. The 
    distribution directory is packaged into a single file ending in 
    <tt>.zip</tt> which is zip compressed.</li>
    <li><b><tt>dist</tt></b>: does all three, dist-gzip, dist-bzip2,
    dist-zip</li>
  </ul>
<!-- ======================================================================= -->
<div class="doc_subsection">dist-check</div>
<p>This target checks the distribution. The basic idea is that it unpacks the 
distribution tarball and ensures that it can build. It takes the following 
actions:</p>
<ol>
  <li>It depends on the <tt>dist-gzip</tt> target which, if it hasn't already 
  been built, builds the gzip tar bundle (see dist and distdir above).</li>
  <li>removes any pre-existing <tt>_distcheckdir</tt> at the top level.</li>
  <li>creates a new <tt>_distcheckdir</tt> directory at the top level.</li>
  <li>creates a <tt>build</tt> subdirectory and an <tt>install</tt> 
  subdirectory under <tt>_distcheckdir</tt>.</li>
  <li>unzips and untars the release tarball into <tt>_distcheckdir</tt>, 
  creating <tt>LLVM-1.7</tt> directory (from the tarball).</li>
  <li>in the build subdirectory, it configures with appropriate options to build
  from the unpacked source tarball into the <tt>build</tt> directory with 
  installation in the <tt>install</tt> directory.</li>
  <li>runs <tt>make all</tt></li>
  <li>runs <tt>make </tt><tt>check</tt></li>
  <li>runs <tt>make install</tt></li>
  <li>runs <tt>make uninstall</tt></li>
  <li>runs <tt>make dist</tt></li>
  <li>runs <tt>make clean</tt></li>
  <li>runs <tt>make dist-clean</tt></li>
</ol>
<p>If it can pass all that, the distribution will be deemed distribution 
worth y and you will see:<p>
<pre>===== LLVM-1.7.tar.gz Ready For Distribution =====</pre>
<p>This means the tarball should then be tested on other platforms and have the
nightly test run against it. If those all pass, THEN it is ready for 
distribution.</p>
<p>
A note about disk space: using <tt>dist-check</tt> will easily triple the 
amount of disk space your build tree is using. You might want to check 
available space before you begin.</p>
<!-- ======================================================================= -->
<div class="doc_subsection">dist-clean</div>
<h2>dist-clean</h2>
<p>In addition to doing a normal <tt>clean</tt>, this target will clean up the 
files and directories created by the distribution targets. In particular the 
distribution directory <tt>(LLVM-X.X</tt>), check directory 
(<tt>_distcheckdir</tt>), and the various tarballs will be removed. You do 
this after the release has shipped and you no longer need this stuff in your 
build tree.</p>
</div>

<!-- *********************************************************************** -->
<hr>
<address>
  <a href="http://jigsaw.w3.org/css-validator/check/referer"><img
  src="http://jigsaw.w3.org/css-validator/images/vcss" alt="Valid CSS!"></a>
  <a href="http://validator.w3.org/check/referer"><img
  src="http://www.w3.org/Icons/valid-html401" alt="Valid HTML 4.01!" /></a>

  <a href="mailto:rspencer@x10sys.com">Reid Spencer</a><br>
  <a href="http://llvm.cs.uiuc.edu">The LLVM Compiler Infrastructure</a>
  <br/>
  Last modified: $Date$
</address>
</body>
</html>
