blob: 0e1847eddf7a965827f789b5cb8fd057510410b9 [file] [log] [blame]
Reid Spencercf427e82006-03-23 06:45:42 +00001<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
2 "http://www.w3.org/TR/html4/strict.dtd">
3<html>
4<head>
5 <title>How To Release LLVM To The Public</title>
6 <link rel="stylesheet" href="llvm.css" type="text/css">
7</head>
8<body>
9
10<div class="doc_title">How To Release LLVM To The Public</div>
11<p class="doc_warning">NOTE: THIS DOCUMENT IS A WORK IN PROGRESS!</p>
Reid Spencercf427e82006-03-23 06:45:42 +000012<ol>
13 <li><a href="#introduction">Introduction</a></li>
Misha Brukman8ebd7f92006-04-10 21:43:05 +000014 <li><a href="#process">Release Process</a></li>
Reid Spencercf427e82006-03-23 06:45:42 +000015</ol>
16<div class="doc_author">
17 <p>Written by <a href="mailto:rspencer@x10sys.com">Reid Spencer</a></p>
18</div>
19
20<!-- *********************************************************************** -->
21<div class="doc_section"><a name="introduction">Introduction</a></div>
22<!-- *********************************************************************** -->
23
24<div class="doc_text">
25<p>This document collects information about successfully releasing LLVM to the
26public. It is the release manager's guide to ensuring that a high quality build
27of LLVM is released. Mostly, its just a bunch of reminders of things to do at
28release time so we don't inadvertently ship something that is utility
29deficient.</p>
30</div>
31
32<!-- *********************************************************************** -->
33<div class="doc_section"><a name="process">Release Process</a></div>
34<!-- *********************************************************************** -->
35
36<!-- ======================================================================= -->
37<div class="doc_subsection"><a name="overview">Process Overview</a></div>
38<div class="doc_text">
39 <ol>
Misha Brukman8ebd7f92006-04-10 21:43:05 +000040 <li><a href="#merge">Merge Branches</a></li>
Reid Spencer1a2e1102006-04-11 06:21:25 +000041 <li><a href="#settle">Settle LLVM HEAD</a></li>
Misha Brukman8ebd7f92006-04-10 21:43:05 +000042 <li><a href="#build">Build LLVM</a></li>
43 <li><a href="#check">Run 'make check'</a></li>
44 <li><a href="#test">Run LLVM Test Suite</a></li>
45 <li><a href="#deps">make LibDeps.txt</a></li>
46 <li><a href="#tag">cvs tag</a></li>
47 <li><a href="#dist">make dist</a></li>
48 <li><a href="#release">release</a></li>
Reid Spencercf427e82006-03-23 06:45:42 +000049 </ol>
50</div>
51
52<!-- ======================================================================= -->
53<div class="doc_subsection"><a name="merge">Merge Branches</a></div>
54<div class="doc_text">
Reid Spencer1a2e1102006-04-11 06:21:25 +000055<p>Merge any work done on branches intended for release into mainline. Work that
56is not to be incorporated into the release should not be merged from the branch.
57</p>
58</div>
59
60<!-- ======================================================================= -->
61<div class="doc_subsection"><a name="build">Settle CVS HEAD</a></div>
62<div class="doc_text">
63 <p>Use the nightly test reports, and 'make check' (deja-gnu based tests) to
64 increase the quality of LLVM and ensure that merged branches have not
65 destabilized LLVM.</p>
Reid Spencercf427e82006-03-23 06:45:42 +000066</div>
67
68<!-- ======================================================================= -->
69<div class="doc_subsection"><a name="build">Build LLVM</a></div>
70<div class="doc_text">
Reid Spencer1a2e1102006-04-11 06:21:25 +000071 <p>Build both debug and release versions of LLVM on all platforms. Ensure
72 build is warning and error free on each platform.</p>
Reid Spencercf427e82006-03-23 06:45:42 +000073</div>
74
75<!-- ======================================================================= -->
76<div class="doc_subsection"><a name="check">Run 'make check'</a></div>
77<div class="doc_text">
Misha Brukman8ebd7f92006-04-10 21:43:05 +000078 <p>Run <tt>make check</tt> and ensure there are no unexpected failures. If
Reid Spencer1a2e1102006-04-11 06:21:25 +000079 there are, resolve the failures and go back to <a href="#settle">step 2</a>.
80 Ensure that 'make check' passes on all platforms for all targets. If certain
81 failures cannot be resolved before release time, determine if marking them
82 XFAIL is appropriate. If not, fix the bug and go back. The test suite must
83 complete with "0 unexpected failures" for release.
84 </p>
Reid Spencercf427e82006-03-23 06:45:42 +000085</div>
86
87<!-- ======================================================================= -->
88<div class="doc_subsection"><a name="test">LLVM Test Suite</a></div>
89<div class="doc_text">
90 <p>Run the llvm-test suite and ensure there are no unacceptable failures.
Reid Spencer1a2e1102006-04-11 06:21:25 +000091 If there are, resolve the failures and go back to step 2. The test suite
92 should be run in Nightly Test mode. All tests must pass. If they do not,
93 investigate and go back to settling CVS HEAD.</p>
Reid Spencercf427e82006-03-23 06:45:42 +000094</div>
95
96<!-- ======================================================================= -->
97<div class="doc_subsection"><a name="deps">Make LibDeps.txt</a></div>
98<div class="doc_text">
Misha Brukman8ebd7f92006-04-10 21:43:05 +000099 <p>Rebuild the <tt>LibDeps.txt</tt> target in <tt>utils/llvm-config</tt>. This
100 makes sure that the <tt>llvm-config</tt> utility remains relevant for the
101 release, reflecting any changes in the library dependencies.</p>
Reid Spencercf427e82006-03-23 06:45:42 +0000102</div>
103
104<!-- ======================================================================= -->
Reid Spencer1a2e1102006-04-11 06:21:25 +0000105<div class="doc_subsection"><a name="tag">CVS Tag And Branch</a></div>
Reid Spencercf427e82006-03-23 06:45:42 +0000106<div class="doc_text">
Reid Spencer1a2e1102006-04-11 06:21:25 +0000107 <p>Tag and branch the CVS HEAD using the following procedure:</p>
108 <ol>
109 <li>Request all developers to refrain from committing. Offenders get commit
110 rights taken away (temporarily).</li>
111 <li>Tag the cvs HEAD with "ROOT_RELEASE_XX" where XX is the major and minor
112 release numbers (you can't have . in a cvs tag name). So, for Release 1.2,
113 XX=12 and for Release 1.10, XX=110.</li>
114 <li>Immediately create a cvs branch based on the ROOT_RELEASE tag. This is
115 where the release distribution will be created.</li>
116 <li>Advise developers they can work on CVS HEAD again.</li>
117 <li>Ensure all subsequent building and fixing is done on this branch.</li>
Reid Spencercf427e82006-03-23 06:45:42 +0000118</div>
119
120<!-- ======================================================================= -->
121<div class="doc_subsection"><a name="dist">Run 'make dist'</a></div>
122<div class="doc_text">
Reid Spencer1a2e1102006-04-11 06:21:25 +0000123 <p>Build the distribution, ensuring it is installable and working. This is a
124 two step process. First, use "make dist" to simply build the distribution. Any
125 failures need to be corrected (on the branch). Once "make dist" can be
126 successful, do "make dist-check". This target will do the same thing as the
127 'dist' target but also test that distribution to make sure it works. This
128 ensures that needed files are not missing and that the src tarball can be
129 successfully unbacked, built, installed, and cleaned. This two-level testing
130 needs to be done on each target platform.</p>
Reid Spencercf427e82006-03-23 06:45:42 +0000131</div>
132
133<!-- ======================================================================= -->
134<div class="doc_subsection"><a name="release">Release</a></div>
135<div class="doc_text">
Reid Spencer1a2e1102006-04-11 06:21:25 +0000136 <p>Release the distribution tarball to the public. This consists of generating
137 several tarballs. The first set, the source distributions, are automatically
138 generated by the "make dist" and "make dist-check". There are gzip, bzip2, and
139 zip versions of these bundles.</p>
140 <p>The second set of tarballs is the binary release. When "make dist-check"
141 succeeds, it will have created an _install directory into which it installed
142 the binary release. You need to rename that directory as "llvm" and then
143 create tarballs from the contents of that "llvm" directory.</p>
144 <p>Finally, use rpm to make an rpm package based on the llvm.spec file. Don't
145 forget to update the version number, documentation, etc. in the llvm.spec
146 file.</p>
Reid Spencercf427e82006-03-23 06:45:42 +0000147</div>
148
149<!-- *********************************************************************** -->
150<hr>
151<address>
152 <a href="http://jigsaw.w3.org/css-validator/check/referer"><img
153 src="http://jigsaw.w3.org/css-validator/images/vcss" alt="Valid CSS!"></a>
154 <a href="http://validator.w3.org/check/referer"><img
155 src="http://www.w3.org/Icons/valid-html401" alt="Valid HTML 4.01!" /></a>
156
157 <a href="mailto:rspencer@x10sys.com">Reid Spencer</a><br>
158 <a href="http://llvm.cs.uiuc.edu">The LLVM Compiler Infrastructure</a>
159 <br/>
160 Last modified: $Date$
161</address>
162</body>
163</html>