blob: fb34eb6ed887225a9d6d6fd8c28b54fedde38109 [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
NAKAMURA Takumi05d02652011-04-18 23:59:50 +000010<h1>How To Release LLVM To The Public</h1>
Reid Spencercf427e82006-03-23 06:45:42 +000011<ol>
12 <li><a href="#introduction">Introduction</a></li>
Tanya Lattner4b9e1d22009-08-18 22:33:28 +000013 <li><a href="#criteria">Qualification Criteria</a></li>
Tanya Lattner76385652007-09-28 22:50:54 +000014 <li><a href="#introduction">Release Timeline</a></li>
Misha Brukman8ebd7f92006-04-10 21:43:05 +000015 <li><a href="#process">Release Process</a></li>
Reid Spencercf427e82006-03-23 06:45:42 +000016</ol>
17<div class="doc_author">
Tanya Lattner4b9e1d22009-08-18 22:33:28 +000018 <p>Written by <a href="mailto:tonic@nondot.org">Tanya Lattner</a>,
19 <a href="mailto:rspencer@x10sys.com">Reid Spencer</a>,
Bill Wendling36d6c4d2011-02-28 01:10:44 +000020 <a href="mailto:criswell@cs.uiuc.edu">John Criswell</a>, &amp;
21 <a href="mailto:wendling@apple.com">Bill Wendling</a>
Tanya Lattner4b9e1d22009-08-18 22:33:28 +000022 </p>
Reid Spencercf427e82006-03-23 06:45:42 +000023</div>
24
25<!-- *********************************************************************** -->
NAKAMURA Takumi05d02652011-04-18 23:59:50 +000026<h2><a name="introduction">Introduction</a></h2>
Reid Spencercf427e82006-03-23 06:45:42 +000027<!-- *********************************************************************** -->
28
NAKAMURA Takumif5af6ad2011-04-23 00:30:22 +000029<div>
Bill Wendling36d6c4d2011-02-28 01:10:44 +000030
31<p>This document contains information about successfully releasing LLVM &mdash;
Bill Wendlingdfc56de2011-10-17 20:28:54 +000032 including subprojects: e.g., <tt>clang</tt> and <tt>dragonegg</tt> &mdash; to
Bill Wendling36d6c4d2011-02-28 01:10:44 +000033 the public. It is the Release Manager's responsibility to ensure that a high
34 quality build of LLVM is released.</p>
35
Reid Spencercf427e82006-03-23 06:45:42 +000036</div>
37
38<!-- *********************************************************************** -->
NAKAMURA Takumi05d02652011-04-18 23:59:50 +000039<h2><a name="process">Release Timeline</a></h2>
Tanya Lattner76385652007-09-28 22:50:54 +000040<!-- *********************************************************************** -->
NAKAMURA Takumif5af6ad2011-04-23 00:30:22 +000041<div>
Tanya Lattner76385652007-09-28 22:50:54 +000042
Bill Wendling36d6c4d2011-02-28 01:10:44 +000043<p>LLVM is released on a time based schedule &mdash; roughly every 6 months. We
44 do not normally have dot releases because of the nature of LLVM's incremental
45 development philosophy. That said, the only thing preventing dot releases for
46 critical bug fixes from happening is a lack of resources &mdash; testers,
47 machines, time, etc. And, because of the high quality we desire for LLVM
48 releases, we cannot allow for a truncated form of release qualification.</p>
49
50<p>The release process is roughly as follows:</p>
51
52<ul>
53 <li><p>Set code freeze and branch creation date for 6 months after last code
54 freeze date. Announce release schedule to the LLVM community and update
55 the website.</p></li>
56
57 <li><p>Create release branch and begin release process.</p></li>
58
59 <li><p>Send out release candidate sources for first round of testing. Testing
60 lasts 7-10 days. During the first round of testing, any regressions found
61 should be fixed. Patches are merged from mainline into the release
62 branch. Also, all features need to be completed during this time. Any
63 features not completed at the end of the first round of testing will be
64 removed or disabled for the release.</p></li>
65
66 <li><p>Generate and send out the second release candidate sources. Only
67 <em>critial</em> bugs found during this testing phase will be fixed. Any
68 bugs introduced by merged patches will be fixed. If so a third round of
69 testing is needed.</p></li>
70
71 <li><p>The release notes are updated.</p></li>
72
73 <li><p>Finally, release!</p></li>
74</ul>
75
76</div>
Tanya Lattner76385652007-09-28 22:50:54 +000077
78<!-- *********************************************************************** -->
NAKAMURA Takumi05d02652011-04-18 23:59:50 +000079<h2><a name="process">Release Process</a></h2>
Reid Spencercf427e82006-03-23 06:45:42 +000080<!-- *********************************************************************** -->
81
NAKAMURA Takumif5af6ad2011-04-23 00:30:22 +000082<div>
Bill Wendling36d6c4d2011-02-28 01:10:44 +000083
84<ol>
NAKAMURA Takumi4d6deb02011-04-09 09:51:57 +000085 <li><a href="#release-admin">Release Administrative Tasks</a>
Reid Spencercf427e82006-03-23 06:45:42 +000086 <ol>
Tanya Lattner76385652007-09-28 22:50:54 +000087 <li><a href="#branch">Create Release Branch</a></li>
Tanya Lattner4b9e1d22009-08-18 22:33:28 +000088 <li><a href="#verchanges">Update Version Numbers</a></li>
Bill Wendling36d6c4d2011-02-28 01:10:44 +000089 </ol>
NAKAMURA Takumi4d6deb02011-04-09 09:51:57 +000090 </li>
91 <li><a href="#release-build">Building the Release</a>
Bill Wendling36d6c4d2011-02-28 01:10:44 +000092 <ol>
Tanya Lattner76385652007-09-28 22:50:54 +000093 <li><a href="#dist">Build the LLVM Source Distributions</a></li>
Misha Brukman8ebd7f92006-04-10 21:43:05 +000094 <li><a href="#build">Build LLVM</a></li>
Tanya Lattner4b9e1d22009-08-18 22:33:28 +000095 <li><a href="#clangbin">Build the Clang Binary Distribution</a></li>
96 <li><a href="#target-build">Target Specific Build Details</a></li>
Bill Wendling36d6c4d2011-02-28 01:10:44 +000097 </ol>
NAKAMURA Takumi4d6deb02011-04-09 09:51:57 +000098 </li>
99 <li><a href="#release-qualify">Release Qualification Criteria</a>
Bill Wendling36d6c4d2011-02-28 01:10:44 +0000100 <ol>
Tanya Lattner4b9e1d22009-08-18 22:33:28 +0000101 <li><a href="#llvm-qualify">Qualify LLVM</a></li>
Tanya Lattner4b9e1d22009-08-18 22:33:28 +0000102 <li><a href="#clang-qualify">Qualify Clang</a></li>
103 <li><a href="#targets">Specific Target Qualification Details</a></li>
Bill Wendling36d6c4d2011-02-28 01:10:44 +0000104 </ol>
NAKAMURA Takumi4d6deb02011-04-09 09:51:57 +0000105 </li>
Tanya Lattner4b9e1d22009-08-18 22:33:28 +0000106
Bill Wendling36d6c4d2011-02-28 01:10:44 +0000107 <li><a href="#commTest">Community Testing</a></li>
108 <li><a href="#release-patch">Release Patch Rules</a></li>
NAKAMURA Takumi4d6deb02011-04-09 09:51:57 +0000109 <li><a href="#release-final">Release final tasks</a>
Bill Wendling36d6c4d2011-02-28 01:10:44 +0000110 <ol>
Tanya Lattner76385652007-09-28 22:50:54 +0000111 <li><a href="#updocs">Update Documentation</a></li>
Bill Wendling36d6c4d2011-02-28 01:10:44 +0000112 <li><a href="#tag">Tag the LLVM Final Release</a></li>
Tanya Lattner76385652007-09-28 22:50:54 +0000113 <li><a href="#updemo">Update the LLVM Demo Page</a></li>
Tanya Lattner9ceece52006-08-10 00:23:05 +0000114 <li><a href="#webupdates">Update the LLVM Website</a></li>
Tanya Lattner76385652007-09-28 22:50:54 +0000115 <li><a href="#announce">Announce the Release</a></li>
Reid Spencercf427e82006-03-23 06:45:42 +0000116 </ol>
NAKAMURA Takumi4d6deb02011-04-09 09:51:57 +0000117 </li>
Bill Wendling36d6c4d2011-02-28 01:10:44 +0000118</ol>
119
Reid Spencercf427e82006-03-23 06:45:42 +0000120<!-- ======================================================================= -->
NAKAMURA Takumi05d02652011-04-18 23:59:50 +0000121<h3><a name="release-admin">Release Administrative Tasks</a></h3>
Tanya Lattner4b9e1d22009-08-18 22:33:28 +0000122
NAKAMURA Takumif5af6ad2011-04-23 00:30:22 +0000123<div>
Bill Wendling36d6c4d2011-02-28 01:10:44 +0000124
125<p>This section describes a few administrative tasks that need to be done for
126 the release process to begin. Specifically, it involves:</p>
127
128<ul>
129 <li>Creating the release branch,</li>
130 <li>Setting version numbers, and</li>
131 <li>Tagging release candidates for the release team to begin testing</li>
132</ul>
133
Tanya Lattner4b9e1d22009-08-18 22:33:28 +0000134<!-- ======================================================================= -->
NAKAMURA Takumi05d02652011-04-18 23:59:50 +0000135<h4><a name="branch">Create Release Branch</a></h4>
Bill Wendling36d6c4d2011-02-28 01:10:44 +0000136
NAKAMURA Takumif5af6ad2011-04-23 00:30:22 +0000137<div>
John Criswellfe48c802006-04-11 20:24:28 +0000138
Bill Wendling36d6c4d2011-02-28 01:10:44 +0000139<p>Branch the Subversion trunk using the following procedure:</p>
John Criswellfe48c802006-04-11 20:24:28 +0000140
Bill Wendling36d6c4d2011-02-28 01:10:44 +0000141<ol>
142 <li><p>Remind developers that the release branching is imminent and to refrain
143 from committing patches that might break the build. E.g., new features,
144 large patches for works in progress, an overhaul of the type system, an
145 exciting new TableGen feature, etc.</p></li>
146
147 <li><p>Verify that the current Subversion trunk is in decent shape by
148 examining nightly tester and buildbot results.</p></li>
149
Bill Wendlingdfc56de2011-10-17 20:28:54 +0000150 <li><p>Create the release branch for <tt>llvm</tt>, <tt>clang</tt>,
151 the <tt>test-suite</tt>, and <tt>dragonegg</tt> from the last known good
152 revision. The branch's name is <tt>release_<i>XY</i></tt>,
153 where <tt>X</tt> is the major and <tt>Y</tt> the minor release
154 numbers. The branches should be created using the following commands:</p>
Bill Wendling36d6c4d2011-02-28 01:10:44 +0000155
Bill Wendling462fc8a2007-07-23 04:41:42 +0000156<div class="doc_code">
157<pre>
Bill Wendling36d6c4d2011-02-28 01:10:44 +0000158$ svn copy https://llvm.org/svn/llvm-project/llvm/trunk \
159 https://llvm.org/svn/llvm-project/llvm/branches/release_<i>XY</i>
160
Bill Wendlingdfc56de2011-10-17 20:28:54 +0000161$ svn copy https://llvm.org/svn/llvm-project/cfe/trunk \
162 https://llvm.org/svn/llvm-project/cfe/branches/release_<i>XY</i>
163
164$ svn copy https://llvm.org/svn/llvm-project/dragonegg/trunk \
165 https://llvm.org/svn/llvm-project/dragonegg/branches/release_<i>XY</i>
Bill Wendling36d6c4d2011-02-28 01:10:44 +0000166
167$ svn copy https://llvm.org/svn/llvm-project/test-suite/trunk \
168 https://llvm.org/svn/llvm-project/test-suite/branches/release_<i>XY</i>
Bill Wendling462fc8a2007-07-23 04:41:42 +0000169</pre>
Bill Wendlingd4fb7932007-07-23 04:44:02 +0000170</div></li>
Tanya Lattner76385652007-09-28 22:50:54 +0000171
Bill Wendling36d6c4d2011-02-28 01:10:44 +0000172 <li><p>Advise developers that they may now check their patches into the
173 Subversion tree again.</p></li>
174
175 <li><p>The Release Manager should switch to the release branch, because all
176 changes to the release will now be done in the branch. The easiest way to
177 do this is to grab a working copy using the following commands:</p>
178
179<div class="doc_code">
180<pre>
181$ svn co https://llvm.org/svn/llvm-project/llvm/branches/release_<i>XY</i> llvm-<i>X.Y</i>
182
Bill Wendlingdfc56de2011-10-17 20:28:54 +0000183$ svn co https://llvm.org/svn/llvm-project/cfe/branches/release_<i>XY</i> clang-<i>X.Y</i>
184
185$ svn co https://llvm.org/svn/llvm-project/dragonegg/branches/release_<i>XY</i> dragonegg-<i>X.Y</i>
Bill Wendling36d6c4d2011-02-28 01:10:44 +0000186
187$ svn co https://llvm.org/svn/llvm-project/test-suite/branches/release_<i>XY</i> test-suite-<i>X.Y</i>
Bill Wendling36d6c4d2011-02-28 01:10:44 +0000188</pre>
189</div></li>
190</ol>
191
Reid Spencercf427e82006-03-23 06:45:42 +0000192</div>
193
194<!-- ======================================================================= -->
NAKAMURA Takumi05d02652011-04-18 23:59:50 +0000195<h4><a name="verchanges">Update LLVM Version</a></h4>
Bill Wendling36d6c4d2011-02-28 01:10:44 +0000196
NAKAMURA Takumif5af6ad2011-04-23 00:30:22 +0000197<div>
Bill Wendling36d6c4d2011-02-28 01:10:44 +0000198
199<p>After creating the LLVM release branch, update the release branches'
200 <tt>autoconf</tt> and <tt>configure.ac</tt> versions from '<tt>X.Ysvn</tt>'
201 to '<tt>X.Y</tt>'. Update it on mainline as well to be the next version
202 ('<tt>X.Y+1svn</tt>'). Regenerate the configure scripts for both
203 <tt>llvm</tt> and the <tt>test-suite</tt>.</p>
204
205<p>In addition, the version numbers of all the Bugzilla components must be
206 updated for the next release.</p>
207
Reid Spencercf427e82006-03-23 06:45:42 +0000208</div>
209
210<!-- ======================================================================= -->
NAKAMURA Takumi05d02652011-04-18 23:59:50 +0000211<h4><a name="dist">Build the LLVM Release Candidates</a></h4>
Bill Wendling36d6c4d2011-02-28 01:10:44 +0000212
NAKAMURA Takumif5af6ad2011-04-23 00:30:22 +0000213<div>
Bill Wendling36d6c4d2011-02-28 01:10:44 +0000214
Bill Wendlingdfc56de2011-10-17 20:28:54 +0000215<p>Create release candidates for <tt>llvm</tt>, <tt>clang</tt>,
216 <tt>dragonegg</tt>, and the LLVM <tt>test-suite</tt> by tagging the branch
217 with the respective release candidate number. For instance, to
218 create <b>Release Candidate 1</b> you would issue the following commands:</p>
Reid Spencercf427e82006-03-23 06:45:42 +0000219
Bill Wendling462fc8a2007-07-23 04:41:42 +0000220<div class="doc_code">
221<pre>
Bill Wendling36d6c4d2011-02-28 01:10:44 +0000222$ svn mkdir https://llvm.org/svn/llvm-project/llvm/tags/RELEASE_<i>XY</i>
223$ svn copy https://llvm.org/svn/llvm-project/llvm/branches/release_<i>XY</i> \
Bill Wendlingf16fe9e2011-03-07 07:37:12 +0000224 https://llvm.org/svn/llvm-project/llvm/tags/RELEASE_<i>XY</i>/rc1
Bill Wendling36d6c4d2011-02-28 01:10:44 +0000225
Bill Wendlingdfc56de2011-10-17 20:28:54 +0000226$ svn mkdir https://llvm.org/svn/llvm-project/cfe/tags/RELEASE_<i>XY</i>
227$ svn copy https://llvm.org/svn/llvm-project/cfe/branches/release_<i>XY</i> \
228 https://llvm.org/svn/llvm-project/cfe/tags/RELEASE_<i>XY</i>/rc1
229
230$ svn mkdir https://llvm.org/svn/llvm-project/dragonegg/tags/RELEASE_<i>XY</i>
231$ svn copy https://llvm.org/svn/llvm-project/dragonegg/branches/release_<i>XY</i> \
232 https://llvm.org/svn/llvm-project/dragonegg/tags/RELEASE_<i>XY</i>/rc1
Bill Wendling36d6c4d2011-02-28 01:10:44 +0000233
234$ svn mkdir https://llvm.org/svn/llvm-project/test-suite/tags/RELEASE_<i>XY</i>
235$ svn copy https://llvm.org/svn/llvm-project/test-suite/branches/release_<i>XY</i> \
Bill Wendlingf16fe9e2011-03-07 07:37:12 +0000236 https://llvm.org/svn/llvm-project/test-suite/tags/RELEASE_<i>XY</i>/rc1
Bill Wendling462fc8a2007-07-23 04:41:42 +0000237</pre>
238</div>
Bill Wendling36d6c4d2011-02-28 01:10:44 +0000239
240<p>Similarly, <b>Release Candidate 2</b> would be named <tt>RC2</tt> and so
241 on. This keeps a permanent copy of the release candidate around for people to
242 export and build as they wish. The final released sources will be tagged in
243 the <tt>RELEASE_<i>XY</i></tt> directory as <tt>Final</tt>
244 (c.f. <a href="#tag">Tag the LLVM Final Release</a>).</p>
245
246<p>The Release Manager may supply pre-packaged source tarballs for users. This
247 can be done with the following commands:</p>
248
249<div class="doc_code">
250<pre>
Bill Wendlingf16fe9e2011-03-07 07:37:12 +0000251$ svn export https://llvm.org/svn/llvm-project/llvm/tags/RELEASE_<i>XY</i>/rc1 llvm-<i>X.Y</i>rc1
Bill Wendlingf16fe9e2011-03-07 07:37:12 +0000252$ svn export https://llvm.org/svn/llvm-project/cfe/tags/RELEASE_<i>XY</i>/rc1 clang-<i>X.Y</i>rc1
Bill Wendlingdfc56de2011-10-17 20:28:54 +0000253$ svn export https://llvm.org/svn/llvm-project/dragonegg/tags/RELEASE_<i>XY</i>/rc1 dragonegg-<i>X.Y</i>rc1
254$ svn export https://llvm.org/svn/llvm-project/test-suite/tags/RELEASE_<i>XY</i>/rc1 llvm-test-<i>X.Y</i>rc1
Bill Wendling36d6c4d2011-02-28 01:10:44 +0000255
Bill Wendling1a592432011-03-25 06:43:59 +0000256$ tar -cvf - llvm-<i>X.Y</i>rc1 | gzip &gt; llvm-<i>X.Y</i>rc1.src.tar.gz
Bill Wendling1a592432011-03-25 06:43:59 +0000257$ tar -cvf - clang-<i>X.Y</i>rc1 | gzip &gt; clang-<i>X.Y</i>rc1.src.tar.gz
Bill Wendlingdfc56de2011-10-17 20:28:54 +0000258$ tar -cvf - dragonegg-<i>X.Y</i>rc1 | gzip &gt; dragonegg-<i>X.Y</i>rc1.src.tar.gz
259$ tar -cvf - llvm-test-<i>X.Y</i>rc1 | gzip &gt; llvm-test-<i>X.Y</i>rc1.src.tar.gz
Bill Wendling36d6c4d2011-02-28 01:10:44 +0000260</pre>
261</div>
262
Reid Spencer103febe2006-08-16 00:54:50 +0000263</div>
Reid Spencercf427e82006-03-23 06:45:42 +0000264
NAKAMURA Takumif5af6ad2011-04-23 00:30:22 +0000265</div>
266
Reid Spencer103febe2006-08-16 00:54:50 +0000267<!-- ======================================================================= -->
NAKAMURA Takumi05d02652011-04-18 23:59:50 +0000268<h3><a name="release-build">Building the Release</a></h3>
Tanya Lattner4b9e1d22009-08-18 22:33:28 +0000269
NAKAMURA Takumif5af6ad2011-04-23 00:30:22 +0000270<div>
Tanya Lattner405ce8d2009-08-23 04:36:30 +0000271
Bill Wendlingdfc56de2011-10-17 20:28:54 +0000272<p>The builds of <tt>llvm</tt>, <tt>clang</tt>, and <tt>dragonegg</tt>
Bill Wendling36d6c4d2011-02-28 01:10:44 +0000273 <em>must</em> be free of errors and warnings in Debug, Release+Asserts, and
274 Release builds. If all builds are clean, then the release passes Build
275 Qualification.</p>
276
277<p>The <tt>make</tt> options for building the different modes:</p>
278
279<table>
280 <tr><th>Mode</th><th>Options</th></tr>
281 <tr align="left"><td>Debug</td><td><tt>ENABLE_OPTIMIZED=0</tt></td></tr>
282 <tr align="left"><td>Release+Asserts</td><td><tt>ENABLE_OPTIMIZED=1</tt></td></tr>
283 <tr align="left"><td>Release</td><td><tt>ENABLE_OPTIMIZED=1 DISABLE_ASSERTIONS=1</tt></td></tr>
284</table>
285
Tanya Lattner4b9e1d22009-08-18 22:33:28 +0000286<!-- ======================================================================= -->
NAKAMURA Takumi05d02652011-04-18 23:59:50 +0000287<h4><a name="build">Build LLVM</a></h4>
Bill Wendling36d6c4d2011-02-28 01:10:44 +0000288
NAKAMURA Takumif5af6ad2011-04-23 00:30:22 +0000289<div>
Bill Wendling36d6c4d2011-02-28 01:10:44 +0000290
291<p>Build <tt>Debug</tt>, <tt>Release+Asserts</tt>, and <tt>Release</tt> versions
292 of <tt>llvm</tt> on all supported platforms. Directions to build
Bill Wendlingdfc56de2011-10-17 20:28:54 +0000293 <tt>llvm</tt> are <a href="GettingStarted.html#quickstart">here</a>.</p>
Bill Wendling36d6c4d2011-02-28 01:10:44 +0000294
Tanya Lattner76385652007-09-28 22:50:54 +0000295</div>
296
297<!-- ======================================================================= -->
NAKAMURA Takumi05d02652011-04-18 23:59:50 +0000298<h4><a name="clangbin">Build Clang Binary Distribution</a></h4>
Bill Wendling36d6c4d2011-02-28 01:10:44 +0000299
NAKAMURA Takumif5af6ad2011-04-23 00:30:22 +0000300<div>
Tanya Lattner76385652007-09-28 22:50:54 +0000301
Bill Wendling36d6c4d2011-02-28 01:10:44 +0000302<p>Creating the <tt>clang</tt> binary distribution
303 (Debug/Release+Asserts/Release) requires performing the following steps for
304 each supported platform:</p>
Tanya Lattner4b9e1d22009-08-18 22:33:28 +0000305
Bill Wendling36d6c4d2011-02-28 01:10:44 +0000306<ol>
307 <li>Build clang according to the directions
308 <a href="http://clang.llvm.org/get_started.html">here</a>.</li>
309
Bill Wendlingdfc56de2011-10-17 20:28:54 +0000310 <li>Build both a Debug and Release version of clang. The binary will be the
311 Release build.</lI>
Bill Wendling36d6c4d2011-02-28 01:10:44 +0000312
313 <li>Package <tt>clang</tt> (details to follow).</li>
314</ol>
315
Tanya Lattner4b9e1d22009-08-18 22:33:28 +0000316</div>
317
Tanya Lattner4b9e1d22009-08-18 22:33:28 +0000318<!-- ======================================================================= -->
NAKAMURA Takumi05d02652011-04-18 23:59:50 +0000319<h4><a name="target-build">Target Specific Build Details</a></h4>
Bill Wendling36d6c4d2011-02-28 01:10:44 +0000320
NAKAMURA Takumif5af6ad2011-04-23 00:30:22 +0000321<div>
Bill Wendling36d6c4d2011-02-28 01:10:44 +0000322
323<p>The table below specifies which compilers are used for each Arch/OS
Bill Wendlingdfc56de2011-10-17 20:28:54 +0000324 combination when qualifying the build of <tt>llvm</tt>, <tt>clang</tt>,
325 and <tt>dragonegg</tt>.</p>
Bill Wendling36d6c4d2011-02-28 01:10:44 +0000326
327<table>
Bill Wendlingdfc56de2011-10-17 20:28:54 +0000328 <tr><th>Architecture</th> <th>OS</th> <th>compiler</th></tr>
329 <tr><td>x86-32</td> <td>Mac OS 10.5</td> <td>gcc 4.0.1</td></tr>
330 <tr><td>x86-32</td> <td>Linux</td> <td>gcc 4.2.X, gcc 4.3.X</td></tr>
331 <tr><td>x86-32</td> <td>FreeBSD</td> <td>gcc 4.2.X</td></tr>
332 <tr><td>x86-32</td> <td>mingw</td> <td>gcc 3.4.5</td></tr>
333 <tr><td>x86-64</td> <td>Mac OS 10.5</td> <td>gcc 4.0.1</td></tr>
334 <tr><td>x86-64</td> <td>Linux</td> <td>gcc 4.2.X, gcc 4.3.X</td></tr>
335 <tr><td>x86-64</td> <td>FreeBSD</td> <td>gcc 4.2.X</td></tr>
Bill Wendling36d6c4d2011-02-28 01:10:44 +0000336</table>
Tanya Lattner49b91862009-08-19 23:07:37 +0000337
Tanya Lattner76385652007-09-28 22:50:54 +0000338</div>
339
NAKAMURA Takumif5af6ad2011-04-23 00:30:22 +0000340</div>
341
Tanya Lattner4b9e1d22009-08-18 22:33:28 +0000342<!-- ======================================================================= -->
NAKAMURA Takumi05d02652011-04-18 23:59:50 +0000343<h3><a name="release-qualify">Building the Release</a></h3>
Tanya Lattner4b9e1d22009-08-18 22:33:28 +0000344
NAKAMURA Takumif5af6ad2011-04-23 00:30:22 +0000345<div>
Tanya Lattner4b9e1d22009-08-18 22:33:28 +0000346
Bill Wendling36d6c4d2011-02-28 01:10:44 +0000347<p>A release is qualified when it has no regressions from the previous release
348 (or baseline). Regressions are related to correctness first and performance
349 second. (We may tolerate some minor performance regressions if they are
350 deemed necessary for the general quality of the compiler.)</p>
351
352<p><b>Regressions are new failures in the set of tests that are used to qualify
353 each product and only include things on the list. Every release will have
354 some bugs in it. It is the reality of developing a complex piece of
355 software. We need a very concrete and definitive release criteria that
356 ensures we have monotonically improving quality on some metric. The metric we
357 use is described below. This doesn't mean that we don't care about other
358 criteria, but these are the criteria which we found to be most important and
359 which must be satisfied before a release can go out</b></p>
360
Tanya Lattner4b9e1d22009-08-18 22:33:28 +0000361<!-- ======================================================================= -->
NAKAMURA Takumi05d02652011-04-18 23:59:50 +0000362<h4><a name="llvm-qualify">Qualify LLVM</a></h4>
Bill Wendling36d6c4d2011-02-28 01:10:44 +0000363
NAKAMURA Takumif5af6ad2011-04-23 00:30:22 +0000364<div>
Bill Wendling36d6c4d2011-02-28 01:10:44 +0000365
366<p>LLVM is qualified when it has a clean test run without a front-end. And it
Bill Wendlingdfc56de2011-10-17 20:28:54 +0000367 has no regressions when using either <tt>clang</tt> or <tt>dragonegg</tt>
368 with the <tt>test-suite</tt> from the previous release.</p>
Bill Wendling36d6c4d2011-02-28 01:10:44 +0000369
Tanya Lattner76385652007-09-28 22:50:54 +0000370</div>
371
372<!-- ======================================================================= -->
NAKAMURA Takumi05d02652011-04-18 23:59:50 +0000373<h4><a name="clang-qualify">Qualify Clang</a></h4>
Bill Wendling36d6c4d2011-02-28 01:10:44 +0000374
NAKAMURA Takumif5af6ad2011-04-23 00:30:22 +0000375<div>
Bill Wendling36d6c4d2011-02-28 01:10:44 +0000376
377<p><tt>Clang</tt> is qualified when front-end specific tests in the
378 <tt>llvm</tt> dejagnu test suite all pass, clang's own test suite passes
379 cleanly, and there are no regressions in the <tt>test-suite</tt>.</p>
380
Reid Spencercf427e82006-03-23 06:45:42 +0000381</div>
382
383<!-- ======================================================================= -->
NAKAMURA Takumi05d02652011-04-18 23:59:50 +0000384<h4><a name="targets">Specific Target Qualification Details</a></h4>
Bill Wendling36d6c4d2011-02-28 01:10:44 +0000385
NAKAMURA Takumif5af6ad2011-04-23 00:30:22 +0000386<div>
Bill Wendling36d6c4d2011-02-28 01:10:44 +0000387
388<table>
Bill Wendlingdfc56de2011-10-17 20:28:54 +0000389 <tr><th>Architecture</th> <th>OS</th> <th>clang baseline</th> <th>tests</th></tr>
390 <tr><td>x86-32</td> <td>Linux</td> <td>last release</td> <td>llvm dejagnu, clang tests, test-suite (including spec)</td></tr>
391 <tr><td>x86-32</td> <td>FreeBSD</td> <td>last release</td> <td>llvm dejagnu, clang tests, test-suite</td></tr>
392 <tr><td>x86-32</td> <td>mingw</td> <td>none</td> <td>QT</td></tr>
393 <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>
394 <tr><td>x86-64</td> <td>Linux</td> <td>last release</td> <td>llvm dejagnu, clang tests, test-suite (including spec)</td></tr>
395 <tr><td>x86-64</td> <td>FreeBSD</td> <td>last release</td> <td>llvm dejagnu, clang tests, test-suite</td></tr>
Bill Wendling36d6c4d2011-02-28 01:10:44 +0000396</table>
397
Tanya Lattner4b9e1d22009-08-18 22:33:28 +0000398</div>
399
NAKAMURA Takumif5af6ad2011-04-23 00:30:22 +0000400</div>
401
Tanya Lattner4b9e1d22009-08-18 22:33:28 +0000402<!-- ======================================================================= -->
NAKAMURA Takumi05d02652011-04-18 23:59:50 +0000403<h3><a name="commTest">Community Testing</a></h3>
NAKAMURA Takumif5af6ad2011-04-23 00:30:22 +0000404<div>
Bill Wendling36d6c4d2011-02-28 01:10:44 +0000405
406<p>Once all testing has been completed and appropriate bugs filed, the release
407 candidate tarballs are put on the website and the LLVM community is
408 notified. Ask that all LLVM developers test the release in 2 ways:</p>
409
410<ol>
411 <li>Download <tt>llvm-<i>X.Y</i></tt>, <tt>llvm-test-<i>X.Y</i></tt>, and the
Bill Wendlingdfc56de2011-10-17 20:28:54 +0000412 appropriate <tt>clang</tt> binary. Build LLVM. Run <tt>make check</tt> and
413 the full LLVM test suite (<tt>make TEST=nightly report</tt>).</li>
Bill Wendling36d6c4d2011-02-28 01:10:44 +0000414
415 <li>Download <tt>llvm-<i>X.Y</i></tt>, <tt>llvm-test-<i>X.Y</i></tt>, and the
Bill Wendlingdfc56de2011-10-17 20:28:54 +0000416 <tt>clang</tt> sources. Compile everything. Run <tt>make check</tt> and
417 the full LLVM test suite (<tt>make TEST=nightly report</tt>).</li>
Bill Wendling36d6c4d2011-02-28 01:10:44 +0000418</ol>
419
420<p>Ask LLVM developers to submit the test suite report and <tt>make check</tt>
421 results to the list. Verify that there are no regressions from the previous
422 release. The results are not used to qualify a release, but to spot other
423 potential problems. For unsupported targets, verify that <tt>make check</tt>
424 is at least clean.</p>
Tanya Lattner76385652007-09-28 22:50:54 +0000425
Bill Wendling36d6c4d2011-02-28 01:10:44 +0000426<p>During the first round of testing, all regressions must be fixed before the
427 second release candidate is tagged.</p>
Tanya Lattner76385652007-09-28 22:50:54 +0000428
Bill Wendling36d6c4d2011-02-28 01:10:44 +0000429<p>If this is the second round of testing, the testing is only to ensure that
430 bug fixes previously merged in have not created new major problems. <i>This
431 is not the time to solve additional and unrelated bugs!</i> If no patches are
432 merged in, the release is determined to be ready and the release manager may
433 move onto the next stage.</p>
434
John Criswellfe48c802006-04-11 20:24:28 +0000435</div>
436
Tanya Lattner4b9e1d22009-08-18 22:33:28 +0000437<!-- ======================================================================= -->
NAKAMURA Takumi05d02652011-04-18 23:59:50 +0000438<h3><a name="release-patch">Release Patch Rules</a></h3>
Tanya Lattner4b9e1d22009-08-18 22:33:28 +0000439
NAKAMURA Takumif5af6ad2011-04-23 00:30:22 +0000440<div>
Bill Wendling36d6c4d2011-02-28 01:10:44 +0000441
442<p>Below are the rules regarding patching the release branch:</p>
443
444<ol>
445 <li><p>Patches applied to the release branch may only be applied by the
446 release manager.</p></li>
447
448 <li><p>During the first round of testing, patches that fix regressions or that
449 are small and relatively risk free (verified by the appropriate code
450 owner) are applied to the branch. Code owners are asked to be very
451 conservative in approving patches for the branch. We reserve the right to
452 reject any patch that does not fix a regression as previously
453 defined.</p></li>
454
455 <li><p>During the remaining rounds of testing, only patches that fix critical
456 regressions may be applied.</p></li>
457</ol>
458
459</div>
Tanya Lattner9ceece52006-08-10 00:23:05 +0000460
461<!-- ======================================================================= -->
NAKAMURA Takumi05d02652011-04-18 23:59:50 +0000462<h3><a name="release-final">Release Final Tasks</a></h3>
Bill Wendling36d6c4d2011-02-28 01:10:44 +0000463
NAKAMURA Takumif5af6ad2011-04-23 00:30:22 +0000464<div>
Bill Wendling36d6c4d2011-02-28 01:10:44 +0000465
466<p>The final stages of the release process involves tagging the "final" release
467 branch, updating documentation that refers to the release, and updating the
468 demo page.</p>
469
Tanya Lattner4b9e1d22009-08-18 22:33:28 +0000470<!-- ======================================================================= -->
NAKAMURA Takumi05d02652011-04-18 23:59:50 +0000471<h4><a name="updocs">Update Documentation</a></h4>
Bill Wendling36d6c4d2011-02-28 01:10:44 +0000472
NAKAMURA Takumif5af6ad2011-04-23 00:30:22 +0000473<div>
Bill Wendling36d6c4d2011-02-28 01:10:44 +0000474
475<p>Review the documentation and ensure that it is up to date. The "Release
476 Notes" must be updated to reflect new features, bug fixes, new known issues,
477 and changes in the list of supported platforms. The "Getting Started Guide"
478 should be updated to reflect the new release version number tag avaiable from
479 Subversion and changes in basic system requirements. Merge both changes from
480 mainline into the release branch.</p>
481
Tanya Lattner49b91862009-08-19 23:07:37 +0000482</div>
483
484<!-- ======================================================================= -->
NAKAMURA Takumi05d02652011-04-18 23:59:50 +0000485<h4><a name="tag">Tag the LLVM Final Release</a></h4>
Bill Wendling36d6c4d2011-02-28 01:10:44 +0000486
NAKAMURA Takumif5af6ad2011-04-23 00:30:22 +0000487<div>
Bill Wendling36d6c4d2011-02-28 01:10:44 +0000488
489<p>Tag the final release sources using the following procedure:</p>
490
Tanya Lattner76385652007-09-28 22:50:54 +0000491<div class="doc_code">
492<pre>
Bill Wendling36d6c4d2011-02-28 01:10:44 +0000493$ svn copy https://llvm.org/svn/llvm-project/llvm/branches/release_XY \
494 https://llvm.org/svn/llvm-project/llvm/tags/RELEASE_<i>XY</i>/Final
495
Bill Wendlingdfc56de2011-10-17 20:28:54 +0000496$ svn copy https://llvm.org/svn/llvm-project/cfe/branches/release_XY \
497 https://llvm.org/svn/llvm-project/cfe/tags/RELEASE_<i>XY</i>/Final
498
499$ svn copy https://llvm.org/svn/llvm-project/dragonegg/branches/release_XY \
500 https://llvm.org/svn/llvm-project/dragonegg/tags/RELEASE_<i>XY</i>/Final
Bill Wendling36d6c4d2011-02-28 01:10:44 +0000501
502$ svn copy https://llvm.org/svn/llvm-project/test-suite/branches/release_XY \
503 https://llvm.org/svn/llvm-project/test-suite/tags/RELEASE_<i>XY</i>/Final
Tanya Lattner76385652007-09-28 22:50:54 +0000504</pre>
505</div>
Bill Wendling36d6c4d2011-02-28 01:10:44 +0000506
Tanya Lattner76385652007-09-28 22:50:54 +0000507</div>
508
NAKAMURA Takumif5af6ad2011-04-23 00:30:22 +0000509</div>
510
Tanya Lattner76385652007-09-28 22:50:54 +0000511<!-- ======================================================================= -->
NAKAMURA Takumi05d02652011-04-18 23:59:50 +0000512<h3><a name="updemo">Update the LLVM Demo Page</a></h3>
Bill Wendling36d6c4d2011-02-28 01:10:44 +0000513
NAKAMURA Takumif5af6ad2011-04-23 00:30:22 +0000514<div>
Bill Wendling36d6c4d2011-02-28 01:10:44 +0000515
516<p>The LLVM demo page must be updated to use the new release. This consists of
Bill Wendlingdfc56de2011-10-17 20:28:54 +0000517 using the new <tt>clang</tt> binary and building LLVM.</p>
Bill Wendling36d6c4d2011-02-28 01:10:44 +0000518
Tanya Lattner76385652007-09-28 22:50:54 +0000519<!-- ======================================================================= -->
NAKAMURA Takumi05d02652011-04-18 23:59:50 +0000520<h4><a name="webupdates">Update the LLVM Website</a></h4>
Bill Wendling36d6c4d2011-02-28 01:10:44 +0000521
NAKAMURA Takumif5af6ad2011-04-23 00:30:22 +0000522<div>
Bill Wendling36d6c4d2011-02-28 01:10:44 +0000523
524<p>The website must be updated before the release announcement is sent out. Here
525 is what to do:</p>
526
527<ol>
528 <li>Check out the <tt>www</tt> module from Subversion.</li>
529
530 <li>Create a new subdirectory <tt>X.Y</tt> in the releases directory.</li>
531
Bill Wendlingdfc56de2011-10-17 20:28:54 +0000532 <li>Commit the <tt>llvm</tt>, <tt>test-suite</tt>, <tt>clang</tt> source,
533 <tt>clang binaries</tt>, <tt>dragonegg</tt> source, and <tt>dragonegg</tt>
Bill Wendling36d6c4d2011-02-28 01:10:44 +0000534 binaries in this new directory.</li>
535
536 <li>Copy and commit the <tt>llvm/docs</tt> and <tt>LICENSE.txt</tt> files
537 into this new directory. The docs should be built with
538 <tt>BUILD_FOR_WEBSITE=1</tt>.</li>
539
540 <li>Commit the <tt>index.html</tt> to the <tt>release/X.Y</tt> directory to
541 redirect (use from previous release.</li>
542
543 <li>Update the <tt>releases/download.html</tt> file with the new release.</li>
544
545 <li>Update the <tt>releases/index.html</tt> with the new release and link to
546 release documentation.</li>
547
548 <li>Finally, update the main page (<tt>index.html</tt> and sidebar) to point
549 to the new release and release announcement. Make sure this all gets
550 committed back into Subversion.</li>
551</ol>
552
Tanya Lattner9ceece52006-08-10 00:23:05 +0000553</div>
554
Tanya Lattner76385652007-09-28 22:50:54 +0000555<!-- ======================================================================= -->
NAKAMURA Takumi05d02652011-04-18 23:59:50 +0000556<h4><a name="announce">Announce the Release</a></h4>
Bill Wendling36d6c4d2011-02-28 01:10:44 +0000557
NAKAMURA Takumif5af6ad2011-04-23 00:30:22 +0000558<div>
Bill Wendling36d6c4d2011-02-28 01:10:44 +0000559
560<p>Have Chris send out the release announcement when everything is finished.</p>
561
Reid Spencercf427e82006-03-23 06:45:42 +0000562</div>
Reid Spencercf427e82006-03-23 06:45:42 +0000563
NAKAMURA Takumif5af6ad2011-04-23 00:30:22 +0000564</div>
565
566</div>
567
Reid Spencercf427e82006-03-23 06:45:42 +0000568<!-- *********************************************************************** -->
Reid Spencercf427e82006-03-23 06:45:42 +0000569<hr>
570<address>
571 <a href="http://jigsaw.w3.org/css-validator/check/referer"><img
Misha Brukman44408702008-12-11 17:34:48 +0000572 src="http://jigsaw.w3.org/css-validator/images/vcss-blue" alt="Valid CSS"></a>
Reid Spencercf427e82006-03-23 06:45:42 +0000573 <a href="http://validator.w3.org/check/referer"><img
Misha Brukmanf00ddb02008-12-11 18:23:24 +0000574 src="http://www.w3.org/Icons/valid-html401-blue" alt="Valid HTML 4.01"></a>
NAKAMURA Takumib9a33632011-04-09 02:13:37 +0000575 <a href="http://llvm.org/">The LLVM Compiler Infrastructure</a>
Misha Brukmanf00ddb02008-12-11 18:23:24 +0000576 <br>
Reid Spencercf427e82006-03-23 06:45:42 +0000577 Last modified: $Date$
578</address>
579</body>
580</html>