Ying Wang | 0543663 | 2013-04-05 16:01:00 -0700 | [diff] [blame] | 1 | Here are most of the steps we (maintainers) follow when making a release. |
| 2 | |
| 3 | * Start from a clean, up-to-date git directory on "master": |
| 4 | |
| 5 | make -k maintainer-clean || { ./configure && make maintainer-clean; } |
| 6 | git checkout master |
| 7 | git pull origin master |
| 8 | |
| 9 | * Ensure that the latest stable versions of autoconf, automake, etc. |
| 10 | are in your PATH. See the buildreq list in bootstrap.conf for |
| 11 | the complete list of tools. |
| 12 | |
| 13 | * Ensure that you have no uncommitted diffs. This should produce no |
| 14 | output: |
| 15 | |
| 16 | git diff |
| 17 | |
| 18 | * Ensure that you've pushed all changes that belong in the release: |
| 19 | |
| 20 | git push origin master |
| 21 | |
| 22 | * Check that the NixOS/Hydra autobuilder is reporting all is well: |
| 23 | |
| 24 | http://hydra.nixos.org/jobset/gnu/bison-master |
| 25 | |
| 26 | * Run the following command to download any new translations: |
| 27 | |
| 28 | ./bootstrap && ./configure |
| 29 | |
| 30 | * Pre-release testing: ensure that the following command succeeds: |
| 31 | |
| 32 | make check syntax-check distcheck |
| 33 | |
| 34 | * To (i) set the date, version number, and release TYPE on line 3 of |
| 35 | NEWS, (ii) commit that, and (iii) tag the release, run |
| 36 | |
| 37 | # "TYPE" must be stable, beta or alpha |
| 38 | make release-commit RELEASE='X.Y TYPE' |
| 39 | |
| 40 | * Run the following to create release tarballs. Your choice selects the |
| 41 | corresponding upload-to destination in the emitted gnupload command. |
| 42 | The different destinations are specified in cfg.mk. See the definitions |
| 43 | of gnu_ftp_host-{alpha,beta,stable}. |
| 44 | |
| 45 | make release RELEASE='X.Y TYPE' |
| 46 | |
| 47 | * Test the tarball. Copy it to a few odd-ball systems and ensure that |
| 48 | it builds and passes all tests. |
| 49 | |
| 50 | * While that's happening, write the release announcement that you will |
| 51 | soon post. Start with the template, $HOME/announce-bison-X.Y |
| 52 | that was just created by that "make" command. |
| 53 | |
| 54 | Once all the builds and tests have passed, |
| 55 | |
| 56 | * Run the gnupload command that was suggested by your "make release" |
| 57 | run above, or run |
| 58 | |
| 59 | make upload RELEASE='X.Y TYPE' |
| 60 | |
| 61 | * Wait a few minutes (maybe up to 30?) and then use the release URLs to |
| 62 | download all tarball/signature pairs and use gpg --verify to ensure |
| 63 | that they're all valid. |
| 64 | |
| 65 | * Push the NEWS-updating changes and the new tag: |
| 66 | |
| 67 | v=$(cat .prev-version) |
| 68 | git push origin master tag v$v |
| 69 | |
| 70 | * Announce it on Savannah first, so you can include the savannah.org |
| 71 | announcement link in the email message. |
| 72 | |
| 73 | Go to the news-submission form: |
| 74 | |
| 75 | https://savannah.gnu.org/news/submit.php?group=bison |
| 76 | |
| 77 | If it does not work, then enable "News" for the project via this link: |
| 78 | |
| 79 | https://savannah.gnu.org/project/admin/editgroupfeatures.php?group=bison |
| 80 | |
| 81 | Write something like the following: |
| 82 | |
| 83 | Subject: bison-X.Y released [stable] |
| 84 | +verbatim+ |
| 85 | ...paste the announcement here... |
| 86 | -verbatim- |
| 87 | |
| 88 | Then go here to approve it: |
| 89 | |
| 90 | https://savannah.gnu.org/news/approve.php?group=bison |
| 91 | |
| 92 | * Send the announcement email message. |
| 93 | |
| 94 | * After each non-alpha release, run |
| 95 | |
| 96 | make web-manual-update |
| 97 | |
| 98 | to update the on-line manual accessible at |
| 99 | |
| 100 | http://www.gnu.org/software/bison/manual/ |