llvm.org GIT mirror llvm / 49b9186
Update the release process some more. Lots of good details now. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79488 91177308-0d34-0410-b5e6-96231b3b80d8 Tanya Lattner 10 years ago
1 changed file(s) with 123 addition(s) and 55 deletion(s). Raw diff Collapse all Expand all
9292
9393
  • Release final tasks
  • 9494
    95
  • Update Documentation
  • 9596
  • Tag the LLVM Release Branch
  • 96
  • Update Documentation
  • 9797
  • Update the LLVM Demo Page
  • 9898
  • Update the LLVM Website
  • 9999
  • Announce the Release
  • 128128

    Create the release branch for llvm, llvm-gcc4.2,

    129129 clang, and the test-suite. The branch name will be
    130130 release_XX,where XX is the major and minor release numbers.
    131 Clang will have a different release number than llvm/
    131 Clang will have a different release number than llvm/
    132132 llvm-gcc4 since its first release was years later
    133133 (still deciding if this will be true or not). These branches
    134134 can be created without checking out anything from subversion.
    174174 After creating the LLVM release branch, update the release branches'
    175175 autoconf/configure.ac version from X.Xsvn to just X.X. Update it on mainline
    176176 as well to be the next version (X.X+1svn). Regenerated the configure script
    177 for both. This must be done for both llvm and the test-suite.
    178

    179

    FIXME: Add a note about clang.

    177 for both. This must be done for both llvm and the
    178 test-suite.
    179

    180

    FIXME: Add a note about clang.

    180181

    In addition, the version number of all the Bugzilla components must be

    181182 updated for the next release.
    182183

    186187
    187188
    188189

    189 Create source distributions for LLVM, LLVM GCC, Clang, and the LLVM Test
    190 Suite by exporting the source from Subversion and archiving it. This can be
    191 done with the following commands:
    190 Create source distributions for LLVM, LLVM-GCC,
    191 clang, and the llvm test-suite by exporting the source from
    192 Subversion and archiving it. This can be done with the following commands:
    192193

    193194
    194195
    210211 Building the Release
    211212
    212213
    213 Info about this. Criteria for a successful build.
    214 The build of llvm, llvm-gcc, and clang must be free
    215 of errors and warnings in both debug and release modes. If both debug and
    216 release builds are clean, then the release passes build qualification.
    214217
    215218
    216219
    217220
    218221
    219222

    220 Build both debug and release (optimized) versions of LLVM on all
    221 platforms. Ensure the build is warning and error free on each platform.
    222 Note that when building the LLVM GCC Binary, use a release build of LLVM.
    223 Build both debug and release (optimized) versions of LLVM on all supported
    224 platforms. Direction to build llvm are
    225 here.
    223226

    224227
    225228
    234237
    235238
  • 236239 Build the LLVM GCC front-end by following the directions in the README.LLVM
    237 file. Be sure to build with LLVM_VERSION_INFO=X.X, where X is the major and
    240 file. The frontend must be compiled with c, c++, objc (mac only),
    241 objc++ (mac only) and fortran support.
    242 Be sure to build with LLVM_VERSION_INFO=X.X, where X is the major and
    238243 minor release numbers.
    239244
    240245
    247252
    248253
    249254
    250
    255
    256 Binary Distribution
    251257
    252258

    253259 Creating the Clang binary distribution (release/optimized) requires
    256262
    257263
    258264
  • 259 Instructions how to build it.
    265 Build clang according to the directions
    266 here.
    260267
    268
    269
  • Build both a debug and release version of clang, but the binary
  • 270 will be a release build.
    261271
    262272
  • 263 Instructions on how to package
    273 Package clang (details to follow).
    264274
    265275
    266276
    271281 Details
    272282
    273283

    274 Specify what is used to build llvm, llvm-gcc, clang on each target.
    275

    284 The table below specifies which compilers are used for each arch/os combination
    285 when qualifying the build of llvm, llvm-gcc, clang.
    286

    287
    288

    289
    290
    ArchitectureOScompiler
    291
    x86-32Mac OS 10.5gcc 4.0.1
    292
    x86-32Linuxgcc 4.2.X, gcc 4.3.X
    293
    x86-32FreeBSDgcc ?
    294
    x86-32mingwgcc ?
    295
    x86-64Mac OS 10.5gcc 4.0.1
    296
    x86-64Linuxgcc 4.2.X, gcc 4.3.X
    297
    x86-64FreeBSDgcc?
    298
    299
    300

    301
    276302
    277303
    278304
    281307 Building the Release
    282308
    283309
    284 How to qualify the release.
    310 A release is qualified when it has no regressions from the previous
    311 release (or baseline). Regressions are related to correctness only and not
    312 performance at this time. Regressions are new failures in the set of tests that
    313 are used to qualify each product and do not include anything not in the list.
    285314
    286315
    287316
    289318
    290319
    291320

    292 Details

    321 LLVM is qualified when it has a clean dejagnu test run without a frontend and
    322 it has no regressions when using either llvm-gcc or clang
    323 with the test-suite from the previous release.
    324

    293325
    294326
    295327
    296328
    297329
    298330

    299 Details.

    331 LLVM-GCC is qualified when front-end specific tests in the
    332 llvm dejagnu test suite all pass and there are no regressions in
    333 the test-suite.

    334

    We do not use the gcc dejagnu test suite as release criteria.

    300335
    301336
    302337
    303338
    304339
    305

    306 Details.

    340 Clang is qualified when front-end specific tests in the
    341 llvm dejagnu test suite all pass, clang's own test suite passes
    342 cleanly, and there are no regressions in the test-suite.

    307343
    308344
    309345
    310346
    311347 Qualification Details
    312348
    313

    314 Details>
    349

    >

    350
    ArchitectureOSllvm-gcc baselineclang baseline
    351 tests
    352
    x86-32Mac OS 10.5last releasenonellvm dejagnu, clang tests, test-suite (including spec)
    353
    x86-32Linuxlast releasenonellvm dejagnu, clang tests, test-suite (including spec)
    354
    x86-32FreeBSDnonenonellvm dejagnu, clang tests, test-suite
    355
    x86-32mingwlast releasenoneQT
    356
    x86-64Mac OS 10.5last releasenonellvm dejagnu, clang tests, test-suite (including spec)
    357
    x86-64Linuxlast releasenonellvm dejagnu, clang tests, test-suite (including spec)
    358
    x86-64FreeBSDnonenonellvm dejagnu, clang tests, test-suite
    359

    315360
    316361 317362 322367 tar balls may be put on the website and the LLVM community is notified. Ask that 323368 all LLVM developers test the release in 2 ways:

    324369
      325
    1. Download llvm-X.X, llvm-test-X.X, and the appropriate llvm-gcc4 binary. 326 Run "make check" and the full llvm-test suite (make TEST=nightly report).
    2. 327
    3. Download llvm-X.X, llvm-test-X.X, and the llvm-gcc4 source. Compile 328 everything. Run "make check" and the full llvm-test suite (make TEST=nightly 370
    4. Download llvm-X.X, llvm-test-X.X, and the appropriate llvm-gcc4 371 and/or clang binary. Build LLVM. 372 Run "make check" and the full llvm-test suite (make TEST=nightly report).
    5. 373
    6. Download llvm-X.X, llvm-test-X.X, and the llvm-gcc4 and/or clang source. 374 Compile everything. Run "make check" and the full llvm-test suite (make TEST=nightly 329375 report).
    7. 330376
    331377

    Ask LLVM developers to submit the report and make check results to the list. 332 Verify that there are no regressions from the previous release. For 333 unsupported targets, verify that make check at least is clean.

    378 Attempt to verify that there are no regressions from the previous release. 379 The results are not used to qualify a release, but to spot other potential 380 problems. For unsupported targets, verify that make check at least is 381 clean.

    334382 335

    The first round of pre-release testing will be the longest. During this time, 336 all regressions must be fixed before the second pre-release is created (repeat 337 steps 4-8).

    383

    During the first round of testing time, 384 all regressions must be fixed before the second pre-release is created.

    338385 339

    If this is the second round of testing, this is only to ensure the bug fixes 340 previously merged in have not created new major problems. This is not the time 341 to solve additional and unrelated bugs. If no patches are merged in, the release 342 is determined to be ready and the release manager may move onto the next step.

    386

    If this is the second round of testing, this is only to ensure the bug 387 fixes previously merged in have not created new major problems. This is not 388 the time to solve additional and unrelated bugs. If no patches are merged in, 389 the release is determined to be ready and the release manager may move onto 390 the next step. 391

    343392
    344393 345394 347396
    348397
    349398

    350 Details

    399 Below are the rules regarding patching the release branch.

    400

    401

  • Patches applied to the release branch are only applied by the release 402 manager.
  • 403
  • During the first round of testing, patches that fix regressions or that 404 are small and relatively risk free (verified by the appropriate code owner) 405 are applied to the branch. Code owners are asked to be very conservative in 406 approving patches for the branch and we reserve the right to reject any patch 407 that does not fix a regression as previously defined.
  • 408
  • During the remaining rounds of testing, only patches that fix regressions 409 may be applied.
  • 410 411

    351412
    352413 353414 356417
    357418
    358419

    359 Details

    360
    361 420 The final stages of the release process involving taging the release branch, 421 updating documentation that refers to the release, and updating the demo 422 page.

    423

    FIXME: Add a note if anything needs to be done to the clang website. 424 Eventually the websites will be merged hopefully.

    425 426 427 428 429 430
    431

    432 Review the documentation and ensure that it is up to date. The Release Notes 433 must be updated to reflect bug fixes, new known issues, and changes in the 434 list of supported platforms. The Getting Started Guide should be updated to 435 reflect the new release version number tag avaiable from Subversion and 436 changes in basic system requirements. Merge both changes from mainline into 437 the release branch. 438

    439
    362440 363441 364442 376454 377455 378456 379 380 381
    382

    383 Review the documentation and ensure that it is up to date. The Release Notes 384 must be updated to reflect bug fixes, new known issues, and changes in the 385 list of supported platforms. The Getting Started Guide should be updated to 386 reflect the new release version number tag avaiable from Subversion and 387 changes in basic system requirements. Merge both changes from mainline into 388 the release branch. 389

    390
    457 391458 392459 393460 407474
      408475
    1. Check out the website module from CVS.
    2. 409476
    3. Create a new subdirectory X.X in the releases directory.
    4. 410
    5. Commit the llvm, test-suite, llvm-gcc source, 477
    6. Commit the llvm, test-suite, llvm-gcc source, 478 clang source, clang binaries, 411479 and llvm-gcc binaries in this new directory.
    7. 412480
    8. Copy and commit the llvm/docs and LICENSE.txt 413481 files into this new directory. The docs should be built with BUILD_FOR_WEBSITE=1.