diff --git a/llvm/docs/HowToReleaseLLVM.rst b/llvm/docs/HowToReleaseLLVM.rst --- a/llvm/docs/HowToReleaseLLVM.rst +++ b/llvm/docs/HowToReleaseLLVM.rst @@ -75,42 +75,26 @@ Create Release Branch ^^^^^^^^^^^^^^^^^^^^^ -Branch the Subversion trunk using the following procedure: +Branch the Git trunk using the following procedure: #. Remind developers that the release branching is imminent and to refrain from committing patches that might break the build. E.g., new features, large patches for works in progress, an overhaul of the type system, an exciting new TableGen feature, etc. -#. Verify that the current Subversion trunk is in decent shape by +#. Verify that the current git trunk is in decent shape by examining nightly tester and buildbot results. -#. Create the release branch for ``llvm``, ``clang``, and other sub-projects, - from the last known good revision. The branch's name is - ``release_XY``, where ``X`` is the major and ``Y`` the minor release - numbers. Use ``utils/release/tag.sh`` to tag the release. - -#. Advise developers that they may now check their patches into the Subversion - tree again. - -#. The Release Manager should switch to the release branch, because all changes - to the release will now be done in the branch. The easiest way to do this is - to grab a working copy using the following commands: - - :: - - $ svn co https://llvm.org/svn/llvm-project/llvm/branches/release_XY llvm-X.Y - - $ svn co https://llvm.org/svn/llvm-project/cfe/branches/release_XY clang-X.Y - - $ svn co https://llvm.org/svn/llvm-project/test-suite/branches/release_XY test-suite-X.Y +#. Create the release branch from the last known good revision. + The branch's name is release/X.x where ``X`` is the major version number and ``x`` + is just the letter ``x``. Update LLVM Version ^^^^^^^^^^^^^^^^^^^ After creating the LLVM release branch, update the release branches' ``CMakeLists.txt`` versions from '``X.Ysvn``' to '``X.Y``'. -Update it on mainline as well to be the next version ('``X.Y+1svn``'). +Update it on mainline as well to be the next version ('``X+1.Ysvn``'). In addition, the version numbers of all the Bugzilla components must be updated for the next release. @@ -118,26 +102,33 @@ Tagging the LLVM Release Candidates ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -Tag release candidates using the tag.sh script in utils/release. +Tag release candidates: :: - $ ./tag.sh -release X.Y.Z -rc $RC + $ git tag llvmorg-X.Y.Z-rcN The Release Manager may supply pre-packaged source tarballs for users. This can be done with the export.sh script in utils/release. +Tarballs, release binaries, or any other release artifacts must be uploaded to +GitHub. This can be done using the github-upload-release.py script in utils/release. + +:: + + $ github-upload-release.py upload --token --release X.Y.Z-rcN --files + :: $ ./export.sh -release X.Y.Z -rc $RC This will generate source tarballs for each LLVM project being validated, which -can be uploaded to the website for further testing. +can be uploaded to github for further testing. -Build Clang Binary Distribution +Build The Binary Distribution ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -Creating the ``clang`` binary distribution requires following the instructions +Creating the binary distribution requires following the instructions :doc:`here `. That process will perform both Release+Asserts and Release builds but only @@ -301,20 +292,12 @@ Merging Patches ^^^^^^^^^^^^^^^ -The ``utils/release/merge.sh`` script can be used to merge individual revisions -into any one of the llvm projects. To merge revision ``$N`` into project -``$PROJ``, do: +Use the git cherry-pick command to merge patches to the release branch: -#. ``svn co https://llvm.org/svn/llvm-project/$PROJ/branches/release_XX - $PROJ.src`` - -#. ``$PROJ.src/utils/release/merge.sh --proj $PROJ --rev $N`` +#. ``git cherry-pick -x abcdef0`` #. Run regression tests. -#. ``cd $PROJ.src``. Run the ``svn commit`` command printed out by ``merge.sh`` - in step 2. - Release Final Tasks ------------------- @@ -337,17 +320,12 @@ Tag the LLVM Final Release ^^^^^^^^^^^^^^^^^^^^^^^^^^ -Tag the final release sources using the tag.sh script in utils/release. +Tag the final release sources: :: - $ ./tag.sh -release X.Y.Z -final - -Update the LLVM Demo Page -------------------------- - -The LLVM demo page must be updated to use the new release. This consists of -using the new ``clang`` binary and building LLVM. + $ git tag llvmog-X.Y.Z + $ git push https://github.com/llvm/llvm-project.git llvmorg-X.Y.Z Update the LLVM Website ^^^^^^^^^^^^^^^^^^^^^^^ @@ -355,13 +333,10 @@ The website must be updated before the release announcement is sent out. Here is what to do: -#. Check out the ``www`` module from Subversion. +#. Check out the ``www-releases`` module from GitHub. #. Create a new sub-directory ``X.Y`` in the releases directory. -#. Commit the ``llvm``, ``test-suite``, ``clang`` source and binaries in this - new directory. - #. Copy and commit the ``llvm/docs`` and ``LICENSE.txt`` files into this new directory. The docs should be built with ``BUILD_FOR_WEBSITE=1``.