X-Git-Url: http://plrg.eecs.uci.edu/git/?a=blobdiff_plain;f=docs%2FHowToReleaseLLVM.html;h=396b4fe0ebef90dc5cd1fa37e8f36e67336fbaa2;hb=32dc4d9cd76795f43478e80eec9b1e073adf0f98;hp=2ea8b431e98aee1f14bd3cd9998c7a36d5d0b4dd;hpb=1a59243c252a43333e426fb8e800a234a7e6b1ef;p=oota-llvm.git diff --git a/docs/HowToReleaseLLVM.html b/docs/HowToReleaseLLVM.html index 2ea8b431e98..396b4fe0ebe 100644 --- a/docs/HowToReleaseLLVM.html +++ b/docs/HowToReleaseLLVM.html @@ -2,12 +2,13 @@ "http://www.w3.org/TR/html4/strict.dtd">
+This document contains information about successfully releasing LLVM — - including subprojects: e.g., llvm-gcc and clang — to + including subprojects: e.g., clang and dragonegg — to the public. It is the Release Manager's responsibility to ensure that a high quality build of LLVM is released.
LLVM is released on a time based schedule — roughly every 6 months. We do not normally have dot releases because of the nature of LLVM's incremental @@ -76,37 +77,37 @@
This section describes a few administrative tasks that need to be done for the release process to begin. Specifically, it involves:
@@ -132,12 +132,10 @@Branch the Subversion trunk using the following procedure:
@@ -150,25 +148,25 @@Verify that the current Subversion trunk is in decent shape by examining nightly tester and buildbot results.
Create the release branch for llvm, llvm-gcc-4.2, - clang, and the test-suite from the last known good - revision. The branch's name is release_XY, where X is - the major and Y the minor release numbers. The branches should be - created using the following commands:
+Create the release branch for llvm, clang, + the test-suite, and dragonegg from the last known good + revision. The branch's name is release_XY, + where X is the major and Y the minor release + numbers. The branches should be created using the following commands:
$ svn copy https://llvm.org/svn/llvm-project/llvm/trunk \ https://llvm.org/svn/llvm-project/llvm/branches/release_XY -$ svn copy https://llvm.org/svn/llvm-project/llvm-gcc-4.2/trunk \ - https://llvm.org/svn/llvm-project/llvm-gcc-4.2/branches/release_XY +$ svn copy https://llvm.org/svn/llvm-project/cfe/trunk \ + https://llvm.org/svn/llvm-project/cfe/branches/release_XY + +$ svn copy https://llvm.org/svn/llvm-project/dragonegg/trunk \ + https://llvm.org/svn/llvm-project/dragonegg/branches/release_XY $ svn copy https://llvm.org/svn/llvm-project/test-suite/trunk \ https://llvm.org/svn/llvm-project/test-suite/branches/release_XY - -$ svn copy https://llvm.org/svn/llvm-project/cfe/trunk \ - https://llvm.org/svn/llvm-project/cfe/branches/release_XY
$ svn co https://llvm.org/svn/llvm-project/llvm/branches/release_XY llvm-X.Y -$ svn co https://llvm.org/svn/llvm-project/llvm-gcc-4.2/branches/release_XY llvm-gcc-4.2-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 +$ svn co https://llvm.org/svn/llvm-project/dragonegg/branches/release_XY dragonegg-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
After creating the LLVM release branch, update the release branches' autoconf and configure.ac versions from 'X.Ysvn' @@ -211,14 +209,14 @@ $ svn co https://llvm.org/svn/llvm-project/cfe/branches/release_XY clang-
Create release candidates for llvm, llvm-gcc, - clang, and the LLVM test-suite by tagging the branch with - the respective release candidate number. For instance, to create Release - Candidate 1 you would issue the following commands:
+Create release candidates for llvm, clang, + dragonegg, and the LLVM test-suite by tagging the branch + with the respective release candidate number. For instance, to + create Release Candidate 1 you would issue the following commands:
@@ -226,17 +224,17 @@ $ svn mkdir https://llvm.org/svn/llvm-project/llvm/tags/RELEASE_XY $ svn copy https://llvm.org/svn/llvm-project/llvm/branches/release_XY \ https://llvm.org/svn/llvm-project/llvm/tags/RELEASE_XY/rc1 -$ svn mkdir https://llvm.org/svn/llvm-project/llvm-gcc-4.2/tags/RELEASE_XY -$ svn copy https://llvm.org/svn/llvm-project/llvm-gcc-4.2/branches/release_XY \ - https://llvm.org/svn/llvm-project/llvm-gcc-4.2/tags/RELEASE_XY/rc1 +$ svn mkdir https://llvm.org/svn/llvm-project/cfe/tags/RELEASE_XY +$ svn copy https://llvm.org/svn/llvm-project/cfe/branches/release_XY \ + https://llvm.org/svn/llvm-project/cfe/tags/RELEASE_XY/rc1 + +$ svn mkdir https://llvm.org/svn/llvm-project/dragonegg/tags/RELEASE_XY +$ svn copy https://llvm.org/svn/llvm-project/dragonegg/branches/release_XY \ + https://llvm.org/svn/llvm-project/dragonegg/tags/RELEASE_XY/rc1 $ svn mkdir https://llvm.org/svn/llvm-project/test-suite/tags/RELEASE_XY $ svn copy https://llvm.org/svn/llvm-project/test-suite/branches/release_XY \ https://llvm.org/svn/llvm-project/test-suite/tags/RELEASE_XY/rc1 - -$ svn mkdir https://llvm.org/svn/llvm-project/cfe/tags/RELEASE_XY -$ svn copy https://llvm.org/svn/llvm-project/cfe/branches/release_XY \ - https://llvm.org/svn/llvm-project/cfe/tags/RELEASE_XY/rc1
$ svn export https://llvm.org/svn/llvm-project/llvm/tags/RELEASE_XY/rc1 llvm-X.Yrc1 -$ svn export https://llvm.org/svn/llvm-project/llvm-gcc-4.2/tags/RELEASE_XY/rc1 llvm-gcc4.2-X.Yrc1 -$ svn export https://llvm.org/svn/llvm-project/test-suite/tags/RELEASE_XY/rc1 llvm-test-X.Yrc1 $ svn export https://llvm.org/svn/llvm-project/cfe/tags/RELEASE_XY/rc1 clang-X.Yrc1 +$ svn export https://llvm.org/svn/llvm-project/dragonegg/tags/RELEASE_XY/rc1 dragonegg-X.Yrc1 +$ svn export https://llvm.org/svn/llvm-project/test-suite/tags/RELEASE_XY/rc1 llvm-test-X.Yrc1 $ tar -cvf - llvm-X.Yrc1 | gzip > llvm-X.Yrc1.src.tar.gz -$ tar -cvf - llvm-test-X.Yrc1 | gzip > llvm-test-X.Yrc1.src.tar.gz -$ tar -cvf - llvm-gcc4.2-X.Yrc1 | gzip > llvm-gcc-4.2-X.Yrc1.src.tar.gz $ tar -cvf - clang-X.Yrc1 | gzip > clang-X.Yrc1.src.tar.gz +$ tar -cvf - dragonegg-X.Yrc1 | gzip > dragonegg-X.Yrc1.src.tar.gz +$ tar -cvf - llvm-test-X.Yrc1 | gzip > llvm-test-X.Yrc1.src.tar.gz
The builds of llvm, llvm-gcc, and clang +
The builds of llvm, clang, and dragonegg must be free of errors and warnings in Debug, Release+Asserts, and Release builds. If all builds are clean, then the release passes Build Qualification.
@@ -284,51 +284,21 @@ $ tar -cvf - clang-X.Yrc1 | gzip > clang-X.Yrc1.src.tar.gBuild Debug, Release+Asserts, and Release versions of llvm on all supported platforms. Directions to build - llvm are - here.
+ llvm are here.Creating the llvm-gcc binary distribution (Release/Optimized) - requires performing the following steps for each supported platform:
- -Build the llvm-gcc front-end by following the directions in - the README.LLVM file. The front-end must be compiled with C, C++, - Objective-C (Mac only), Objective-C++ (Mac only), and Fortran - support.
Boostrapping must be enabled.
Be sure to build with LLVM_VERSION_INFO=X.Y, where X - is the major and Y is the minor release numbers.
Copy the installation directory to a directory named for the specific - target. For example on Red Hat Enterprise Linux, the directory would be - named llvm-gcc4.2-2.6-x86-linux-RHEL4. Archive and compress the - new directory.
Creating the clang binary distribution (Debug/Release+Asserts/Release) requires performing the following steps for @@ -338,8 +308,8 @@ $ tar -cvf - clang-X.Yrc1 | gzip > clang-X.Yrc1.src.tar.g
The table below specifies which compilers are used for each Arch/OS - combination when qualifying the build of llvm, llvm-gcc, - and clang.
+ combination when qualifying the build of llvm, clang, + and dragonegg.Architecture | OS | compiler |
---|---|---|
x86-32 | Mac OS 10.5 | gcc 4.0.1 |
x86-32 | Linux | gcc 4.2.X, gcc 4.3.X |
x86-32 | FreeBSD | gcc 4.2.X |
x86-32 | mingw | gcc 3.4.5 |
x86-64 | Mac OS 10.5 | gcc 4.0.1 |
x86-64 | Linux | gcc 4.2.X, gcc 4.3.X |
x86-64 | FreeBSD | gcc 4.2.X |
Architecture | OS | compiler |
x86-32 | Mac OS 10.5 | gcc 4.0.1 |
x86-32 | Linux | gcc 4.2.X, gcc 4.3.X |
x86-32 | FreeBSD | gcc 4.2.X |
x86-32 | mingw | gcc 3.4.5 |
x86-64 | Mac OS 10.5 | gcc 4.0.1 |
x86-64 | Linux | gcc 4.2.X, gcc 4.3.X |
x86-64 | FreeBSD | gcc 4.2.X |
A release is qualified when it has no regressions from the previous release (or baseline). Regressions are related to correctness first and performance @@ -388,36 +359,21 @@ Building the Release
LLVM is qualified when it has a clean test run without a front-end. And it - has no regressions when using either llvm-gcc or clang with - the test-suite from the previous release.
+ has no regressions when using either clang or dragonegg + with the test-suite from the previous release.LLVM-GCC is qualified when front-end specific tests in the - llvm regression test suite all pass and there are no regressions in - the test-suite.
+We do not use the GCC DejaGNU test suite as release criteria.
- -Clang is qualified when front-end specific tests in the llvm dejagnu test suite all pass, clang's own test suite passes @@ -426,26 +382,27 @@ Building the Release
Architecture | OS | llvm-gcc baseline | clang baseline | tests |
---|---|---|---|---|
x86-32 | Linux | last release | last release | llvm dejagnu, clang tests, test-suite (including spec) |
x86-32 | FreeBSD | none | last release | llvm dejagnu, clang tests, test-suite |
x86-32 | mingw | last release | none | QT |
x86-64 | Mac OS 10.X | last release | last release | llvm dejagnu, clang tests, test-suite (including spec) |
x86-64 | Linux | last release | last release | llvm dejagnu, clang tests, test-suite (including spec) |
x86-64 | FreeBSD | none | last release | llvm dejagnu, clang tests, test-suite |
Architecture | OS | clang baseline | tests | |
x86-32 | Linux | last release | llvm dejagnu, clang tests, test-suite (including spec) | |
x86-32 | FreeBSD | last release | llvm dejagnu, clang tests, test-suite | |
x86-32 | mingw | none | QT | |
x86-64 | Mac OS 10.X | last release | llvm dejagnu, clang tests, test-suite (including spec) | |
x86-64 | Linux | last release | llvm dejagnu, clang tests, test-suite (including spec) | |
x86-64 | FreeBSD | last release | llvm dejagnu, clang tests, test-suite |
Once all testing has been completed and appropriate bugs filed, the release candidate tarballs are put on the website and the LLVM community is @@ -453,14 +410,12 @@ Qualification Details
Ask LLVM developers to submit the test suite report and make check @@ -481,9 +436,9 @@ Qualification Details
Below are the rules regarding patching the release branch:
@@ -505,22 +460,18 @@ Qualification DetailsThe final stages of the release process involves tagging the "final" release branch, updating documentation that refers to the release, and updating the demo page.
-Review the documentation and ensure that it is up to date. The "Release Notes" must be updated to reflect new features, bug fixes, new known issues, @@ -532,9 +483,9 @@ Qualification Details
Tag the final release sources using the following procedure:
@@ -543,33 +494,33 @@ Qualification DetailsThe LLVM demo page must be updated to use the new release. This consists of - using the new llvm-gcc binary and building LLVM.
- -The website must be updated before the release announcement is sent out. Here is what to do:
@@ -579,8 +530,8 @@ $ svn copy https://llvm.org/svn/llvm-project/cfe/branches/release_XY \Have Chris send out the release announcement when everything is finished.