Dmitri Gribenko | 69c0239 | 2012-12-07 16:42:48 +0000 | [diff] [blame] | 1 | ================================= |
| 2 | How To Release LLVM To The Public |
| 3 | ================================= |
| 4 | |
Dmitri Gribenko | 69c0239 | 2012-12-07 16:42:48 +0000 | [diff] [blame] | 5 | Introduction |
| 6 | ============ |
| 7 | |
| 8 | This document contains information about successfully releasing LLVM --- |
Renato Golin | e657dbc | 2016-07-21 12:00:50 +0000 | [diff] [blame] | 9 | including sub-projects: e.g., ``clang`` and ``compiler-rt`` --- to the public. |
| 10 | It is the Release Manager's responsibility to ensure that a high quality build |
| 11 | of LLVM is released. |
Dmitri Gribenko | 69c0239 | 2012-12-07 16:42:48 +0000 | [diff] [blame] | 12 | |
Renato Golin | fe4716f | 2013-05-28 10:32:55 +0000 | [diff] [blame] | 13 | If you're looking for the document on how to test the release candidates and |
Renato Golin | 988005a | 2013-05-28 11:28:37 +0000 | [diff] [blame] | 14 | create the binary packages, please refer to the :doc:`ReleaseProcess` instead. |
Renato Golin | fe4716f | 2013-05-28 10:32:55 +0000 | [diff] [blame] | 15 | |
Dmitri Gribenko | 69c0239 | 2012-12-07 16:42:48 +0000 | [diff] [blame] | 16 | .. _timeline: |
| 17 | |
| 18 | Release Timeline |
| 19 | ================ |
| 20 | |
Tom Stellard | efb6bb6 | 2014-02-04 17:18:20 +0000 | [diff] [blame] | 21 | LLVM is released on a time based schedule --- with major releases roughly |
| 22 | every 6 months. In between major releases there may be dot releases. |
| 23 | The release manager will determine if and when to make a dot release based |
| 24 | on feedback from the community. Typically, dot releases should be made if |
| 25 | there are large number of bug-fixes in the stable branch or a critical bug |
| 26 | has been discovered that affects a large number of users. |
| 27 | |
| 28 | Unless otherwise stated, dot releases will follow the same procedure as |
| 29 | major releases. |
Dmitri Gribenko | 69c0239 | 2012-12-07 16:42:48 +0000 | [diff] [blame] | 30 | |
| 31 | The release process is roughly as follows: |
| 32 | |
| 33 | * Set code freeze and branch creation date for 6 months after last code freeze |
| 34 | date. Announce release schedule to the LLVM community and update the website. |
| 35 | |
| 36 | * Create release branch and begin release process. |
| 37 | |
| 38 | * Send out release candidate sources for first round of testing. Testing lasts |
| 39 | 7-10 days. During the first round of testing, any regressions found should be |
| 40 | fixed. Patches are merged from mainline into the release branch. Also, all |
| 41 | features need to be completed during this time. Any features not completed at |
| 42 | the end of the first round of testing will be removed or disabled for the |
| 43 | release. |
| 44 | |
Renato Golin | e657dbc | 2016-07-21 12:00:50 +0000 | [diff] [blame] | 45 | * Generate and send out the second release candidate sources. Only *critical* |
Dmitri Gribenko | 69c0239 | 2012-12-07 16:42:48 +0000 | [diff] [blame] | 46 | bugs found during this testing phase will be fixed. Any bugs introduced by |
| 47 | merged patches will be fixed. If so a third round of testing is needed. |
| 48 | |
| 49 | * The release notes are updated. |
| 50 | |
| 51 | * Finally, release! |
| 52 | |
Tom Stellard | efb6bb6 | 2014-02-04 17:18:20 +0000 | [diff] [blame] | 53 | The release process will be accelerated for dot releases. If the first round |
| 54 | of testing finds no critical bugs and no regressions since the last major release, |
| 55 | then additional rounds of testing will not be required. |
| 56 | |
Dmitri Gribenko | 69c0239 | 2012-12-07 16:42:48 +0000 | [diff] [blame] | 57 | Release Process |
| 58 | =============== |
| 59 | |
Dmitri Gribenko | 76d182f | 2012-12-09 15:29:56 +0000 | [diff] [blame] | 60 | .. contents:: |
| 61 | :local: |
Dmitri Gribenko | 69c0239 | 2012-12-07 16:42:48 +0000 | [diff] [blame] | 62 | |
| 63 | Release Administrative Tasks |
| 64 | ---------------------------- |
| 65 | |
| 66 | This section describes a few administrative tasks that need to be done for the |
| 67 | release process to begin. Specifically, it involves: |
| 68 | |
| 69 | * Creating the release branch, |
| 70 | |
| 71 | * Setting version numbers, and |
Dmitri Gribenko | 6297bfa | 2012-12-09 15:33:26 +0000 | [diff] [blame] | 72 | |
Dmitri Gribenko | 69c0239 | 2012-12-07 16:42:48 +0000 | [diff] [blame] | 73 | * Tagging release candidates for the release team to begin testing. |
| 74 | |
Dmitri Gribenko | 69c0239 | 2012-12-07 16:42:48 +0000 | [diff] [blame] | 75 | Create Release Branch |
| 76 | ^^^^^^^^^^^^^^^^^^^^^ |
| 77 | |
| 78 | Branch the Subversion trunk using the following procedure: |
| 79 | |
| 80 | #. Remind developers that the release branching is imminent and to refrain from |
| 81 | committing patches that might break the build. E.g., new features, large |
| 82 | patches for works in progress, an overhaul of the type system, an exciting |
| 83 | new TableGen feature, etc. |
| 84 | |
| 85 | #. Verify that the current Subversion trunk is in decent shape by |
| 86 | examining nightly tester and buildbot results. |
| 87 | |
Renato Golin | e657dbc | 2016-07-21 12:00:50 +0000 | [diff] [blame] | 88 | #. Create the release branch for ``llvm``, ``clang``, and other sub-projects, |
| 89 | from the last known good revision. The branch's name is |
Dmitri Gribenko | 69c0239 | 2012-12-07 16:42:48 +0000 | [diff] [blame] | 90 | ``release_XY``, where ``X`` is the major and ``Y`` the minor release |
Renato Golin | e657dbc | 2016-07-21 12:00:50 +0000 | [diff] [blame] | 91 | numbers. Use ``utils/release/tag.sh`` to tag the release. |
Dmitri Gribenko | 69c0239 | 2012-12-07 16:42:48 +0000 | [diff] [blame] | 92 | |
| 93 | #. Advise developers that they may now check their patches into the Subversion |
| 94 | tree again. |
| 95 | |
| 96 | #. The Release Manager should switch to the release branch, because all changes |
Dmitri Gribenko | 6297bfa | 2012-12-09 15:33:26 +0000 | [diff] [blame] | 97 | to the release will now be done in the branch. The easiest way to do this is |
Dmitri Gribenko | 69c0239 | 2012-12-07 16:42:48 +0000 | [diff] [blame] | 98 | to grab a working copy using the following commands: |
| 99 | |
| 100 | :: |
Dmitri Gribenko | 6297bfa | 2012-12-09 15:33:26 +0000 | [diff] [blame] | 101 | |
Dmitri Gribenko | 69c0239 | 2012-12-07 16:42:48 +0000 | [diff] [blame] | 102 | $ svn co https://llvm.org/svn/llvm-project/llvm/branches/release_XY llvm-X.Y |
Dmitri Gribenko | 6297bfa | 2012-12-09 15:33:26 +0000 | [diff] [blame] | 103 | |
Dmitri Gribenko | 69c0239 | 2012-12-07 16:42:48 +0000 | [diff] [blame] | 104 | $ svn co https://llvm.org/svn/llvm-project/cfe/branches/release_XY clang-X.Y |
Dmitri Gribenko | 6297bfa | 2012-12-09 15:33:26 +0000 | [diff] [blame] | 105 | |
Dmitri Gribenko | 69c0239 | 2012-12-07 16:42:48 +0000 | [diff] [blame] | 106 | $ svn co https://llvm.org/svn/llvm-project/test-suite/branches/release_XY test-suite-X.Y |
| 107 | |
Dmitri Gribenko | 69c0239 | 2012-12-07 16:42:48 +0000 | [diff] [blame] | 108 | Update LLVM Version |
| 109 | ^^^^^^^^^^^^^^^^^^^ |
| 110 | |
| 111 | After creating the LLVM release branch, update the release branches' |
| 112 | ``autoconf`` and ``configure.ac`` versions from '``X.Ysvn``' to '``X.Y``'. |
| 113 | Update it on mainline as well to be the next version ('``X.Y+1svn``'). |
| 114 | Regenerate the configure scripts for both ``llvm`` and the ``test-suite``. |
| 115 | |
| 116 | In addition, the version numbers of all the Bugzilla components must be updated |
| 117 | for the next release. |
| 118 | |
Tom Stellard | a29a752 | 2015-07-31 01:02:35 +0000 | [diff] [blame] | 119 | Tagging the LLVM Release Candidates |
| 120 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ |
Dmitri Gribenko | 69c0239 | 2012-12-07 16:42:48 +0000 | [diff] [blame] | 121 | |
Tom Stellard | a29a752 | 2015-07-31 01:02:35 +0000 | [diff] [blame] | 122 | Tag release candidates using the tag.sh script in utils/release. |
Dmitri Gribenko | 69c0239 | 2012-12-07 16:42:48 +0000 | [diff] [blame] | 123 | |
| 124 | :: |
| 125 | |
Tom Stellard | a29a752 | 2015-07-31 01:02:35 +0000 | [diff] [blame] | 126 | $ ./tag.sh -release X.Y.Z -rc $RC |
Dmitri Gribenko | 69c0239 | 2012-12-07 16:42:48 +0000 | [diff] [blame] | 127 | |
| 128 | The Release Manager may supply pre-packaged source tarballs for users. This can |
Tom Stellard | a29a752 | 2015-07-31 01:02:35 +0000 | [diff] [blame] | 129 | be done with the export.sh script in utils/release. |
Dmitri Gribenko | 69c0239 | 2012-12-07 16:42:48 +0000 | [diff] [blame] | 130 | |
| 131 | :: |
| 132 | |
Tom Stellard | a29a752 | 2015-07-31 01:02:35 +0000 | [diff] [blame] | 133 | $ ./export.sh -release X.Y.Z -rc $RC |
Dmitri Gribenko | 6297bfa | 2012-12-09 15:33:26 +0000 | [diff] [blame] | 134 | |
Tom Stellard | a29a752 | 2015-07-31 01:02:35 +0000 | [diff] [blame] | 135 | This will generate source tarballs for each LLVM project being validated, which |
| 136 | can be uploaded to the website for further testing. |
Dmitri Gribenko | 69c0239 | 2012-12-07 16:42:48 +0000 | [diff] [blame] | 137 | |
Dmitri Gribenko | 69c0239 | 2012-12-07 16:42:48 +0000 | [diff] [blame] | 138 | Build Clang Binary Distribution |
| 139 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ |
| 140 | |
Renato Golin | e657dbc | 2016-07-21 12:00:50 +0000 | [diff] [blame] | 141 | Creating the ``clang`` binary distribution requires following the instructions |
| 142 | :doc:`here <ReleaseProcess>`. |
Dmitri Gribenko | 69c0239 | 2012-12-07 16:42:48 +0000 | [diff] [blame] | 143 | |
Renato Golin | e657dbc | 2016-07-21 12:00:50 +0000 | [diff] [blame] | 144 | That process will perform both Release+Asserts and Release builds but only |
| 145 | pack the Release build for upload. You should use the Release+Asserts sysroot, |
| 146 | normally under ``final/Phase3/Release+Asserts/llvmCore-3.8.1-RCn.install/``, |
| 147 | for test-suite and run-time benchmarks, to make sure nothing serious has |
| 148 | passed through the net. For compile-time benchmarks, use the Release version. |
Dmitri Gribenko | 69c0239 | 2012-12-07 16:42:48 +0000 | [diff] [blame] | 149 | |
Renato Golin | e657dbc | 2016-07-21 12:00:50 +0000 | [diff] [blame] | 150 | The minimum required version of the tools you'll need are :doc:`here <GettingStarted>` |
Dmitri Gribenko | 69c0239 | 2012-12-07 16:42:48 +0000 | [diff] [blame] | 151 | |
Dmitri Gribenko | 69c0239 | 2012-12-07 16:42:48 +0000 | [diff] [blame] | 152 | Release Qualification Criteria |
| 153 | ------------------------------ |
| 154 | |
| 155 | A release is qualified when it has no regressions from the previous release (or |
| 156 | baseline). Regressions are related to correctness first and performance second. |
| 157 | (We may tolerate some minor performance regressions if they are deemed |
| 158 | necessary for the general quality of the compiler.) |
| 159 | |
Renato Golin | e657dbc | 2016-07-21 12:00:50 +0000 | [diff] [blame] | 160 | More specifically, Clang/LLVM is qualified when it has a clean test with all |
| 161 | supported sub-projects included (``make check-all``), per target, and it has no |
| 162 | regressions with the ``test-suite`` in relation to the previous release. |
| 163 | |
| 164 | Regressions are new failures in the set of tests that are used to qualify |
Dmitri Gribenko | 69c0239 | 2012-12-07 16:42:48 +0000 | [diff] [blame] | 165 | each product and only include things on the list. Every release will have |
| 166 | some bugs in it. It is the reality of developing a complex piece of |
| 167 | software. We need a very concrete and definitive release criteria that |
| 168 | ensures we have monotonically improving quality on some metric. The metric we |
| 169 | use is described below. This doesn't mean that we don't care about other |
| 170 | criteria, but these are the criteria which we found to be most important and |
Renato Golin | e657dbc | 2016-07-21 12:00:50 +0000 | [diff] [blame] | 171 | which must be satisfied before a release can go out. |
Dmitri Gribenko | 69c0239 | 2012-12-07 16:42:48 +0000 | [diff] [blame] | 172 | |
Renato Golin | e657dbc | 2016-07-21 12:00:50 +0000 | [diff] [blame] | 173 | Official Testing |
| 174 | ---------------- |
Dmitri Gribenko | 69c0239 | 2012-12-07 16:42:48 +0000 | [diff] [blame] | 175 | |
Renato Golin | e657dbc | 2016-07-21 12:00:50 +0000 | [diff] [blame] | 176 | A few developers in the community have dedicated time to validate the release |
| 177 | candidates and volunteered to be the official release testers for each |
| 178 | architecture. |
Dmitri Gribenko | 69c0239 | 2012-12-07 16:42:48 +0000 | [diff] [blame] | 179 | |
Renato Golin | e657dbc | 2016-07-21 12:00:50 +0000 | [diff] [blame] | 180 | These will be the ones testing, generating and uploading the official binaries |
| 181 | to the server, and will be the minimum tests *necessary* for the release to |
| 182 | proceed. |
Dmitri Gribenko | 69c0239 | 2012-12-07 16:42:48 +0000 | [diff] [blame] | 183 | |
Renato Golin | e657dbc | 2016-07-21 12:00:50 +0000 | [diff] [blame] | 184 | This will obviously not cover all OSs and distributions, so additional community |
| 185 | validation is important. However, if community input is not reached before the |
| 186 | release is out, all bugs reported will have to go on the next stable release. |
Dmitri Gribenko | 69c0239 | 2012-12-07 16:42:48 +0000 | [diff] [blame] | 187 | |
Renato Golin | e657dbc | 2016-07-21 12:00:50 +0000 | [diff] [blame] | 188 | The official release managers are: |
Dmitri Gribenko | 69c0239 | 2012-12-07 16:42:48 +0000 | [diff] [blame] | 189 | |
Renato Golin | e657dbc | 2016-07-21 12:00:50 +0000 | [diff] [blame] | 190 | * Major releases (X.0): Hans Wennborg |
| 191 | * Stable releases (X.n): Tom Stellard |
| 192 | |
| 193 | The official release testers are volunteered from the community and have |
| 194 | consistently validated and released binaries for their targets/OSs. To contact |
| 195 | them, you should email the ``release-testers@lists.llvm.org`` mailing list. |
Dmitri Gribenko | 69c0239 | 2012-12-07 16:42:48 +0000 | [diff] [blame] | 196 | |
Renato Golin | b2e96ce | 2016-07-21 16:46:44 +0000 | [diff] [blame] | 197 | The official testers list is in the file ``RELEASE_TESTERS.TXT``, in the ``LLVM`` |
| 198 | repository. |
| 199 | |
Dmitri Gribenko | 69c0239 | 2012-12-07 16:42:48 +0000 | [diff] [blame] | 200 | Community Testing |
| 201 | ----------------- |
| 202 | |
| 203 | Once all testing has been completed and appropriate bugs filed, the release |
| 204 | candidate tarballs are put on the website and the LLVM community is notified. |
Renato Golin | e657dbc | 2016-07-21 12:00:50 +0000 | [diff] [blame] | 205 | |
| 206 | We ask that all LLVM developers test the release in any the following ways: |
Dmitri Gribenko | 69c0239 | 2012-12-07 16:42:48 +0000 | [diff] [blame] | 207 | |
| 208 | #. Download ``llvm-X.Y``, ``llvm-test-X.Y``, and the appropriate ``clang`` |
| 209 | binary. Build LLVM. Run ``make check`` and the full LLVM test suite (``make |
| 210 | TEST=nightly report``). |
| 211 | |
| 212 | #. Download ``llvm-X.Y``, ``llvm-test-X.Y``, and the ``clang`` sources. Compile |
| 213 | everything. Run ``make check`` and the full LLVM test suite (``make |
| 214 | TEST=nightly report``). |
| 215 | |
Renato Golin | e657dbc | 2016-07-21 12:00:50 +0000 | [diff] [blame] | 216 | #. Download ``llvm-X.Y``, ``llvm-test-X.Y``, and the appropriate ``clang`` |
| 217 | binary. Build whole programs with it (ex. Chromium, Firefox, Apache) for |
| 218 | your platform. |
| 219 | |
| 220 | #. Download ``llvm-X.Y``, ``llvm-test-X.Y``, and the appropriate ``clang`` |
| 221 | binary. Build *your* programs with it and check for conformance and |
| 222 | performance regressions. |
| 223 | |
| 224 | #. Run the :doc:`release process <ReleaseProcess>`, if your platform is |
| 225 | *different* than that which is officially supported, and report back errors |
| 226 | only if they were not reported by the official release tester for that |
| 227 | architecture. |
| 228 | |
| 229 | We also ask that the OS distribution release managers test their packages with |
| 230 | the first candidate of every release, and report any *new* errors in Bugzilla. |
| 231 | If the bug can be reproduced with an unpatched upstream version of the release |
| 232 | candidate (as opposed to the distribution's own build), the priority should be |
| 233 | release blocker. |
Dmitri Gribenko | 6297bfa | 2012-12-09 15:33:26 +0000 | [diff] [blame] | 234 | |
Dmitri Gribenko | 69c0239 | 2012-12-07 16:42:48 +0000 | [diff] [blame] | 235 | During the first round of testing, all regressions must be fixed before the |
| 236 | second release candidate is tagged. |
Dmitri Gribenko | 6297bfa | 2012-12-09 15:33:26 +0000 | [diff] [blame] | 237 | |
Renato Golin | e657dbc | 2016-07-21 12:00:50 +0000 | [diff] [blame] | 238 | In the subsequent stages, the testing is only to ensure that bug |
Dmitri Gribenko | 69c0239 | 2012-12-07 16:42:48 +0000 | [diff] [blame] | 239 | fixes previously merged in have not created new major problems. *This is not |
| 240 | the time to solve additional and unrelated bugs!* If no patches are merged in, |
| 241 | the release is determined to be ready and the release manager may move onto the |
| 242 | next stage. |
| 243 | |
Renato Golin | e657dbc | 2016-07-21 12:00:50 +0000 | [diff] [blame] | 244 | Reporting Regressions |
| 245 | --------------------- |
| 246 | |
| 247 | Every regression that is found during the tests (as per the criteria above), |
| 248 | should be filled in a bug in Bugzilla with the priority *release blocker* and |
| 249 | blocking a specific release. |
| 250 | |
| 251 | To help manage all the bugs reported and which ones are blockers or not, a new |
| 252 | "[meta]" bug should be created and all regressions *blocking* that Meta. Once |
| 253 | all blockers are done, the Meta can be closed. |
| 254 | |
| 255 | If a bug can't be reproduced, or stops being a blocker, it should be removed |
| 256 | from the Meta and its priority decreased to *normal*. Debugging can continue, |
| 257 | but on trunk. |
| 258 | |
Tom Stellard | c482e16 | 2017-09-19 03:23:03 +0000 | [diff] [blame] | 259 | Merge Requests |
| 260 | -------------- |
| 261 | |
| 262 | You can use any of the following methods to request that a revision from trunk |
| 263 | be merged into a release branch: |
| 264 | |
| 265 | #. Use the ``utils/release/merge-request.sh`` script which will automatically |
Tom Stellard | 9b6e3e1 | 2017-09-19 03:27:26 +0000 | [diff] [blame] | 266 | file a bug_ requesting that the patch be merged. e.g. To request revision |
| 267 | 12345 be merged into the branch for the 5.0.1 release: |
| 268 | ``llvm.src/utils/release/merge-request.sh -stable-version 5.0 -r 12345 -user bugzilla@example.com`` |
Tom Stellard | c482e16 | 2017-09-19 03:23:03 +0000 | [diff] [blame] | 269 | |
| 270 | #. Manually file a bug_ with the subject: "Merge r12345 into the X.Y branch", |
Tom Stellard | 9b6e3e1 | 2017-09-19 03:27:26 +0000 | [diff] [blame] | 271 | enter the commit(s) that you want merged in the "Fixed by Commit(s)" and mark |
| 272 | it as a blocker of the current release bug. Release bugs are given aliases |
| 273 | in the form of release-x.y.z, so to mark a bug as a blocker for the 5.0.1 |
| 274 | release, just enter release-5.0.1 in the "Blocks" field. |
Tom Stellard | c482e16 | 2017-09-19 03:23:03 +0000 | [diff] [blame] | 275 | |
| 276 | #. Reply to the commit email on llvm-commits for the revision to merge and cc |
Tom Stellard | 9b6e3e1 | 2017-09-19 03:27:26 +0000 | [diff] [blame] | 277 | the release manager. |
Tom Stellard | c482e16 | 2017-09-19 03:23:03 +0000 | [diff] [blame] | 278 | |
| 279 | .. _bug: https://bugs.llvm.org/ |
| 280 | |
Dmitri Gribenko | 69c0239 | 2012-12-07 16:42:48 +0000 | [diff] [blame] | 281 | Release Patch Rules |
| 282 | ------------------- |
| 283 | |
| 284 | Below are the rules regarding patching the release branch: |
| 285 | |
| 286 | #. Patches applied to the release branch may only be applied by the release |
Renato Golin | e657dbc | 2016-07-21 12:00:50 +0000 | [diff] [blame] | 287 | manager, the official release testers or the code owners with approval from |
| 288 | the release manager. |
Dmitri Gribenko | 69c0239 | 2012-12-07 16:42:48 +0000 | [diff] [blame] | 289 | |
| 290 | #. During the first round of testing, patches that fix regressions or that are |
| 291 | small and relatively risk free (verified by the appropriate code owner) are |
| 292 | applied to the branch. Code owners are asked to be very conservative in |
| 293 | approving patches for the branch. We reserve the right to reject any patch |
| 294 | that does not fix a regression as previously defined. |
| 295 | |
| 296 | #. During the remaining rounds of testing, only patches that fix critical |
| 297 | regressions may be applied. |
| 298 | |
Sylvestre Ledru | 3c5ec72 | 2016-02-14 20:16:22 +0000 | [diff] [blame] | 299 | #. For dot releases all patches must maintain both API and ABI compatibility with |
Renato Golin | e657dbc | 2016-07-21 12:00:50 +0000 | [diff] [blame] | 300 | the previous major release. Only bug-fixes will be accepted. |
Sean Silva | aede1c9 | 2014-03-02 00:21:42 +0000 | [diff] [blame] | 301 | |
Vedant Kumar | 56ad206 | 2016-01-25 22:47:54 +0000 | [diff] [blame] | 302 | Merging Patches |
| 303 | ^^^^^^^^^^^^^^^ |
| 304 | |
| 305 | The ``utils/release/merge.sh`` script can be used to merge individual revisions |
| 306 | into any one of the llvm projects. To merge revision ``$N`` into project |
| 307 | ``$PROJ``, do: |
| 308 | |
Sanjoy Das | a3f542f | 2016-01-26 23:26:25 +0000 | [diff] [blame] | 309 | #. ``svn co https://llvm.org/svn/llvm-project/$PROJ/branches/release_XX |
Vedant Kumar | 56ad206 | 2016-01-25 22:47:54 +0000 | [diff] [blame] | 310 | $PROJ.src`` |
| 311 | |
| 312 | #. ``$PROJ.src/utils/release/merge.sh --proj $PROJ --rev $N`` |
| 313 | |
| 314 | #. Run regression tests. |
| 315 | |
| 316 | #. ``cd $PROJ.src``. Run the ``svn commit`` command printed out by ``merge.sh`` |
| 317 | in step 2. |
| 318 | |
Dmitri Gribenko | 69c0239 | 2012-12-07 16:42:48 +0000 | [diff] [blame] | 319 | Release Final Tasks |
| 320 | ------------------- |
| 321 | |
| 322 | The final stages of the release process involves tagging the "final" release |
| 323 | branch, updating documentation that refers to the release, and updating the |
| 324 | demo page. |
| 325 | |
Dmitri Gribenko | 69c0239 | 2012-12-07 16:42:48 +0000 | [diff] [blame] | 326 | Update Documentation |
| 327 | ^^^^^^^^^^^^^^^^^^^^ |
| 328 | |
| 329 | Review the documentation and ensure that it is up to date. The "Release Notes" |
| 330 | must be updated to reflect new features, bug fixes, new known issues, and |
| 331 | changes in the list of supported platforms. The "Getting Started Guide" should |
| 332 | be updated to reflect the new release version number tag available from |
| 333 | Subversion and changes in basic system requirements. Merge both changes from |
| 334 | mainline into the release branch. |
| 335 | |
| 336 | .. _tag: |
| 337 | |
| 338 | Tag the LLVM Final Release |
| 339 | ^^^^^^^^^^^^^^^^^^^^^^^^^^ |
| 340 | |
Tom Stellard | a29a752 | 2015-07-31 01:02:35 +0000 | [diff] [blame] | 341 | Tag the final release sources using the tag.sh script in utils/release. |
Dmitri Gribenko | 69c0239 | 2012-12-07 16:42:48 +0000 | [diff] [blame] | 342 | |
| 343 | :: |
| 344 | |
Tom Stellard | a29a752 | 2015-07-31 01:02:35 +0000 | [diff] [blame] | 345 | $ ./tag.sh -release X.Y.Z -final |
Dmitri Gribenko | 69c0239 | 2012-12-07 16:42:48 +0000 | [diff] [blame] | 346 | |
Dmitri Gribenko | 69c0239 | 2012-12-07 16:42:48 +0000 | [diff] [blame] | 347 | Update the LLVM Demo Page |
| 348 | ------------------------- |
| 349 | |
| 350 | The LLVM demo page must be updated to use the new release. This consists of |
| 351 | using the new ``clang`` binary and building LLVM. |
| 352 | |
Dmitri Gribenko | 69c0239 | 2012-12-07 16:42:48 +0000 | [diff] [blame] | 353 | Update the LLVM Website |
| 354 | ^^^^^^^^^^^^^^^^^^^^^^^ |
| 355 | |
| 356 | The website must be updated before the release announcement is sent out. Here |
| 357 | is what to do: |
| 358 | |
| 359 | #. Check out the ``www`` module from Subversion. |
| 360 | |
Renato Golin | e657dbc | 2016-07-21 12:00:50 +0000 | [diff] [blame] | 361 | #. Create a new sub-directory ``X.Y`` in the releases directory. |
Dmitri Gribenko | 69c0239 | 2012-12-07 16:42:48 +0000 | [diff] [blame] | 362 | |
Renato Golin | e657dbc | 2016-07-21 12:00:50 +0000 | [diff] [blame] | 363 | #. Commit the ``llvm``, ``test-suite``, ``clang`` source and binaries in this |
| 364 | new directory. |
Dmitri Gribenko | 69c0239 | 2012-12-07 16:42:48 +0000 | [diff] [blame] | 365 | |
| 366 | #. Copy and commit the ``llvm/docs`` and ``LICENSE.txt`` files into this new |
| 367 | directory. The docs should be built with ``BUILD_FOR_WEBSITE=1``. |
| 368 | |
| 369 | #. Commit the ``index.html`` to the ``release/X.Y`` directory to redirect (use |
| 370 | from previous release). |
| 371 | |
| 372 | #. Update the ``releases/download.html`` file with the new release. |
| 373 | |
| 374 | #. Update the ``releases/index.html`` with the new release and link to release |
| 375 | documentation. |
| 376 | |
| 377 | #. Finally, update the main page (``index.html`` and sidebar) to point to the |
| 378 | new release and release announcement. Make sure this all gets committed back |
| 379 | into Subversion. |
| 380 | |
Dmitri Gribenko | 69c0239 | 2012-12-07 16:42:48 +0000 | [diff] [blame] | 381 | Announce the Release |
| 382 | ^^^^^^^^^^^^^^^^^^^^ |
| 383 | |
Renato Golin | e657dbc | 2016-07-21 12:00:50 +0000 | [diff] [blame] | 384 | Send an email to the list announcing the release, pointing people to all the |
| 385 | relevant documentation, download pages and bugs fixed. |
Dmitri Gribenko | 69c0239 | 2012-12-07 16:42:48 +0000 | [diff] [blame] | 386 | |