1 ----------------------------------------------------------------------------- 2 TODO list when doing a Valgrind release (with release number "X.Y.Z") 3 ----------------------------------------------------------------------------- 4 5 There are two kinds of releases: 6 7 - Feature releases: X.Y.0, which can include new features. 8 9 - Bug-fix releases: X.Y.[12...], which only include bug fixes. 10 11 12 First of all: 13 14 - Tell valgrind-developers you want to do a release. Give a timeframe for 15 everyone to check in any final features/bug-fixes they want in the 16 release. 17 18 - Go over the docs, make sure they're up to date. 19 20 - Update version number and date in docs/xml/vg-entities.xml. (Exact 21 release date probably won't be known yet, updating it is in the list below 22 of tasks for the official release.) 23 24 - Make sure __VALGRIND_MAJOR__ and __VALGRIND_MINOR__ are correct 25 for the release. (include/valgrind.h) 26 27 - Write release notes, add to NEWS. Include a list of fixed bugs from 28 Bugzilla. It's unclear how to do this consistently. The approach 29 taken for 3.0.0 was to go to this page in KDE's bugzilla: 30 http://bugs.kde.org/query.cgi 31 and to create a search where 32 "Status and severity" / Status field is set to RESOLVED 33 and 34 "Involved People" / Email, bug-owner contains "jseward" 35 since I believe jseward (a] acm.org is the owner of all bugs. 36 This creates a long list of bugs which does not conveniently stop 37 at the previous release. Work backwards through this list until 38 either (1) you run out of patience, or (2) most of the bugs seem 39 to pertain to previous releases and are now irrelevant. In short 40 this is not a very scientific or robust way to collect up all 41 bugs fixed since last time. 42 43 Suggestion for next release: when a bug is fixed, update NEWS 44 directly => less chance to forget, and NEWS always up to date 45 in SVN. 46 47 - Other files that might need updating: README, README_DEVELOPERS, 48 README_PACKAGERS. 49 50 - Add X.Y.Z and X.Y+1.Z.SVN versions to Bugzilla. 51 52 - Add "wantedX.Y.Z+1" and "wantedX.Y+1.Z" milestones to Bugzilla. 53 54 55 For each release candidate (should do release candidates for feature 56 releases, bug-fix-only releases might not need one): 57 58 - Build. 59 60 - Do pre-release testing: 61 62 * Check it builds and regtests on a vanilla gcc-2.96 / RedHat 7.3 distro. 63 ??? is this really still up to date ??? 64 65 * Check standard build and regtest on the following cpus: 66 x86, sse2 (P4) 67 x86, sse1 (PIII) 68 x86, no sse (eg older VIA C3s, or perhaps even Pentium-MMX) 69 amd64 70 ppc32, altivec 71 ppc32, no altivec (eg old iMac G3s) 72 73 * Check that the regression tests work on all platforms with more self checks: 74 export EXTRA_REGTEST_OPTS="--sanity-level=4 --helgrind:hg-sanity-flags=011111" 75 make regtest 76 77 * check there are no memleaks or similar bugs by running all regtests 78 in an outer/inner setup (see README_DEVELOPERS). 79 80 * Check valgrind-listener works on all archs, also connecting to it 81 from all archs. 82 83 * Check memcheck can run all the insn-set tests. The testsuite 84 only runs those on 'none', but memcheck looks at all primops, and I've 85 been caught out by this before. Basically all the programs in 86 none/tests/{x86,amd64,ppc32}. 87 88 * Check XML output is still readable by Valkyrie and vk_logmerge tools 89 90 * Test with large applications (firefox and OOo 2.0) on all platforms. 91 92 * Run regression tests from gsl-1.6 on all platforms. This is a good, 93 thorough test of FP. Easy, using the scripts auxprogs/gsl16test. 94 95 * s390x: Run regression tests on a z900 machine. That is the oldest 96 supported model and there is no nightly build for it. 97 98 * s390x: Ensure README.s390 is up-to-date and URLs therein are not stale. 99 100 - Change release number in AC_INIT() in configure.in to "X.Y.Z-rcN", where 101 'N' is the release candidate number. 102 103 - Make the tarball ("make dist") and put it on the web somewhere (it doesn't 104 have to be on valgrind.org if another site is easier). 105 106 - Ensure the tarball builds, runs, regtests on the platforms of interest. 107 However redundant this seems, sometimes it can be that a from-the-repo 108 build works whereas a from-the-tarball one doesn't, usually due to some 109 trivial installation problem. 110 111 - Also check the HTML and print docs look sane (eg. links work). And the 112 man pages, esp. that there are no broken references (look for "???"). 113 114 - Announce the release: 115 - Email valgrind-users and valgrind-developers (but not valgrind-announce). 116 - Make clear it's a release candidate. 117 - Make sure you tell everyone where to download from. 118 - Include the release notes in the email (maybe not necessary for release 119 candidates 2+). 120 121 - Wait 2--3 days for feedback. If bugs appear: 122 - Fix them. 123 - Update the bug-fix list in NEWS if necessary. 124 - Do another release candidate. 125 126 127 For the official release: 128 129 - Again, update date in docs/xml/vg-entities.xml for the official release 130 date. 131 132 - Do pre-release testing: 133 - Make sure regtests run ok on all platforms of interest. 134 - Make sure Mozilla and OpenOffice run ok on all platforms of interest. 135 136 - Change release number in AC_INIT() in configure.in to "X.Y.Z". 137 138 - Make the tarball ("make dist"). 139 140 - Check tarball builds, installs, regtests on platforms of interest. 141 If not, fix and repeat until success. 142 143 - Tag the repositories ("VALGRIND_X_Y_Z" and "VEX_X_Y_Z"). Point the Vex 144 external for VALGRIND_X_Y_Z to VEX_X_Y_Z. 145 146 If it's a X.Y.0 release, make "VALGRIND_X_Y_BRANCH" and "VEX_X_Y_BRANCH" 147 branches too. Useful examples (X.Y.0 major release): 148 149 cd valgrind 150 svn copy trunk tags/VALGRIND_3_3_0 151 svn copy trunk branches/VALGRIND_3_3_BRANCH 152 153 cd vex 154 svn copy trunk tags/VEX_3_3_0 155 svn copy trunk branches/VEX_3_3_BRANCH 156 157 cd valgrind 158 cd tags/VALGRIND_3_3_0 159 svn propset svn:externals \ 160 "VEX svn://svn.valgrind.org/vex/tags/VEX_3_3_0" . 161 cd branches/VALGRIND_3_3_BRANCH 162 svn propset svn:externals \ 163 "VEX svn://svn.valgrind.org/vex/branches/VEX_3_3_BRANCH" . 164 165 (X.Y.Z minor release): 166 167 cd vex 168 svn copy branches/VEX_3_6_BRANCH tags/VEX_3_6_1 169 170 cd valgrind 171 svn copy branches/VALGRIND_3_6_BRANCH tags/VALGRIND_3_6_1 172 173 cd tags/VALGRIND_3_6_1 174 svn propset svn:externals \ 175 "VEX svn://svn.valgrind.org/vex/tags/VEX_3_6_1" . 176 177 178 179 - Update website: 180 - Put the tarball up. 181 - Update the docs -- both the tarball'd docs, and the online-readable docs. 182 - Update www.valgrind.org/downloads/current.html. 183 - Update www.valgrind.org/downloads/old.html. 184 - Add a news item to the front page and also to valgrind.org/info/news.html. 185 Include a link to the release notes. Possibly remove any old release 186 notices form the front page. 187 - Update the "release-date" and "release-version" in php/.htconfx. 188 - Other pages that might need updating: downloads/repository.html. 189 190 - Change release number in AC_INIT() in configure.in to "X.Y.Z.SVN", where 191 X.Y.Z is one more than the release just done. 192 193 - Make sure the release notes are present in the NEWS file on the trunk and 194 the branch. 195 196 - Announce the release: 197 - Email valgrind-users, valgrind-developers, and valgrind-announce. 198 - Email Linux Weekly News. 199 - Include the release notes in the email. 200 201 - Go on holiday. 202