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