Introduce scope_exit
[deliverable/binutils-gdb.git] / binutils / README-how-to-make-a-release
CommitLineData
78b2179a 1 README for MAKING BINUTILS RELEASES
a960d29f 2
78b2179a
NC
3This is a collection of notes on how to perform a binutils release. A
4lot of this information can also be found in the maintain.texi file in
5the gnulib project:
6
7 https://www.gnu.org/software/gnulib/
8
9It is useful to have a cloned copy of the sources of this project as
10it also contains an upload script used to install tarballs on the GNU
11FTP server.
12
13Make sure that you have upload authority on sourceware and fencepost.
14Beware - this is an involved process and can take weeks to complete.
15See the maintain.texi file for details on how to obtain these
16permissions.
17
18-------------------------------------------------
19How to perform a release.
20-------------------------------------------------
21
98ab9e96
NC
22 1. Send an email out warning contributors about the forthcoming
23 branch. Set a date for the branch (weekends are better because
24 they are less busy).
a960d29f 25
7ab82037
NC
26 2. When the branch date is near: Update the libiberty and config
27 directories and the top level configure files.
98ab9e96
NC
28
29 3. When branch day arrives add markers for the upcoming release to
f974f26c
NC
30 the NEWS files in gas, ld, gold and binutils.
31
32 Likewise for the ChangeLog files in: bfd, binutils, config, cpu,
33 elfcpp, gas, gold, gprof, include, ld, opcodes and toplevel.
34
9176ac5b 35 Add a note of the name of the new branch to binutils/BRANCHES.
f974f26c 36
9176ac5b 37 Commit these changes.
a960d29f 38
98ab9e96
NC
39 4. Create the release branch using:
40
f48dfe41
NC
41 git branch binutils-2_33-branch
42 git push origin binutils-2_33-branch
43
44 If you get a message like:
45
46 remote: fatal: Invalid revision range 0000000000000000000000000000000000000000..f974f26cb16cc6fe3946f163c787a05e713fb77b
47
48 It appears that this can be ignored...
98ab9e96 49
79d89b55
NC
50 5. Make sure that the branch is there. IE check out the branch sources:
51
f48dfe41 52 git clone ssh://sourceware.org/git/binutils-gdb.git -b binutils-2_33-branch 2.33
79d89b55
NC
53
54 If you get a message about being in a "detached head" state, something
55 has gone wrong...
56
f48dfe41
NC
57 Keep the checked out sources - they are going to be needed in future steps.
58
79d89b55 59 6. Update "BINUTILS_BRANCH" in gdbadmin's crontab:
0dd86f32
JB
60
61 Log in as gdbadmin on sourceware.org, and then:
62
63 $ cd crontab
64 $ vi crontab
65 [change BINUTILS_BRANCH]
66 $ cvs ci crontab
67 $ crontab crontab
68
69 If you do not have access to this account, please feel free to
70 ask Joel Brobecker <brobecker AT adacore DOT com>.
71
79d89b55 72 7. Rename the current HEAD version entry in Bugzilla, and create a
f48dfe41 73 new one. E.g. rename "2.33 (HEAD)" to 2.33, and create "2.34
7ab82037
NC
74 (HEAD)":
75
76 https://sourceware.org/bugzilla/editversions.cgi?product=binutils
98ab9e96 77
71300e2c
NC
78 8. Update bfd/version.m4 on HEAD to indicate that is now a snapshot
79 of the next release:
80
f48dfe41 81 m4_define([BFD_VERSION], [2.33.51])
71300e2c 82
eca4b721 83 Update the release number in bfd/version.m4 for the branch.
71300e2c
NC
84 The branch only needs the point value set to 90 as the release
85 has not actually happened yet.
86
f48dfe41 87 m4_define([BFD_VERSION], [2.32.90])
94c2436b
NC
88
89 Regenerate various files on both branch and HEAD by configuring
f48dfe41
NC
90 with "--enable-maintainer-mode --enable-gold" and then building
91 with "make all-binutils all-gas all-gold all-gprof all-ld"
92
93 Add ChangeLog entries for the updated files. Commit the changes.
94 Make sure that this includes the .pot files as well as the
95 configure and makefiles.
98ab9e96 96
71300e2c 97 8. Create an initial prerelease:
98ab9e96 98
79d89b55 99 a. Create a source tarball of the BRANCH sources:
a960d29f 100
375cd423 101 cd <branch-sources>
19e2900b 102 ./src-release -x binutils
a960d29f 103
71300e2c 104 b. Build a test target using this tarball.
98ab9e96 105
375cd423
NC
106 cp binutils-<version>.tar.xz /dev/shm
107 cd /dev/shm
108 tar xvf binutils-<version>.tar.xz
109 mkdir build
110 cd build
111 ../<version>/configure --quiet --enable-gold
112 make
98ab9e96 113
375cd423
NC
114 If there are problems, fix them.
115
116 c. Upload the prerelease snapshot to the sourceware FTP site:
117
118 cd <branch-sources>
119 scp binutils-<version>.tar.xz sourceware.org:~ftp/pub/binutils/snapshots
120 ssh sourceware.org md5sum ~ftp/pub/binutils/snapshots/binutils-<version>.tar.xz
98ab9e96 121
79d89b55
NC
122 d. Clean up the source directory.
123
375cd423
NC
124 rm binutils-<version> binutils-<version>.tar binutils-<version>.tar.xz
125 rm gas/bfin-lex.c \
126 gas/bfin-parse.c \
127 gas/bfin-parse.h \
128 gas/itbl-lex.c \
129 gas/itbl-parse.c \
130 gas/itbl-parse.h \
131 gas/m68k-parse.c \
132 gas/rl78-parse.c \
133 gas/rl78-parse.h \
134 gas/rx-parse.c \
135 gas/rx-parse.h \
136 gold/yyscript.c \
137 gold/yyscript.h
138 rm -fr proto-toplev
139
79d89b55
NC
140 9. Tell the Translation Project where to find the new tarball. <coordinator@translationproject.org>
141 qv: http://translationproject.org/html/maintainers.html
142
143------------------------------------------------------------------------
144Dear Translation Project
145
146 The 2.31 release branch has been created for the FSF binutils.
147
148 A snapshot of the branch sources can be found here:
a960d29f 149
79d89b55 150 https://sourceware.org/pub/binutils/snapshots/binutils-2.30.90.tar.xz
a960d29f 151
79d89b55
NC
152 We hope to make the official release of the sources on the 8th July
153 although that could change if there are important bugs that need to
154 be fixed before the release.
155------------------------------------------------------------------------
98ab9e96 156
71300e2c 157 10. Announce the availability of the snapshot and the branch on the
98ab9e96 158 binutils mailing list. Set a date for when the release will
7ab82037 159 actually happen. Something like:
79d89b55
NC
160
161------------------------------------------------------------------------
162Hi Everyone,
163
164 The 2.XX branch has now been created:
165
166 git clone git://sourceware.org/git/binutils-gdb.git -b binutils-2_XX-branch 2.XX
167
168 A snapshot of the sources is also available here:
169
170 https://sourceware.org/pub/binutils/snapshots/binutils-2.XX.90.tar.xz
171
172 Please could all patches for the branch be run by me.
173 The rules for the branch are:
174
175 * No new features.
176 * Target specific bug fixes are OK.
177 * Generic bug fixes are OK if they are important and widely tested.
178 * Documentation updates/fixes are OK.
179 * Translation updates are OK.
180 * Fixes for testsuite failures are OK.
181
182 Ideally I would like to make the release happen in two weeks time,
183 i.e. Saturday 27th Jan. Which I hope will be enough time for everyone
184 to get their final fixes in.
185------------------------------------------------------------------------
186
187 11. Build various different toolchains, test them and nag
7ab82037
NC
188 maintainers to fix any testsuite failures for their
189 architectures...
190
98ab9e96 191
94c2436b
NC
192When the time comes to actually make the release....
193
194
9a5db26e 195 20. Make sure that the branch sources still build, test and install
6cb624f8
NC
196 correctly. Make sure that the sources are clean, without any
197 patch files (.reg .orig *~) left over.
198
199 cd <branch>
200 cvsclean | xargs rm
9a5db26e
NC
201
202 21. Update the release number in bfd/version.m4 on the release
94c2436b
NC
203 branch to a whole new minor version number, without a point
204 value. Eg "2.29.90" becomes "2.30". Change bfd/development.sh
44c2eb66 205 to set all values to "false". Regenerate the configure and
e2561448
NC
206 makefiles. And *info* files. Add ChangeLog entries for the
207 updates and add a "this-is-the-2.XX-release" comment and
208 commit. Make sure to include the .gmo files.
9a5db26e
NC
209
210 22. Check that your file creation mask will create the
211 correct file permissions. Eg:
212
6cb624f8
NC
213 % umask
214 22
215
216 Remove any spurious autom4te.cache files left over from the
217 reconfiguring:
218
219 % find . -depth -name autom4te.cache -exec rm -r {} \;
9a5db26e 220
ad96220c
NC
221 23. Note - check to see if any new files have been added to the top
222 level of the source directory, but which are not in the
223 DEVO_SUPPORT variable in the src-release.sh script. If they are
224 needed then add them.
225
226 Create the release tarballs:
9a5db26e 227
6cb624f8 228 ./src-release.sh -b -g -l -x binutils
9a5db26e
NC
229
230 24. Check that the files in the tarballs have the correct
6cb624f8 231 permissions.
9a5db26e
NC
232
233 25. Sanity check the release on x86_64-pc-linux-gnu by building and
234 running the testsuite. Make the source directory read-only
235 before building. Also test "make install". If necessary fix
236 any problems.
237
238 26. Tag the branch with the new release number:
239
240 git tag -a binutils-2_XX
241 [optional: add "-u XXXXX" to sign with a gpg key]
242 git push origin binutils-2_XX
243
a8d6d6ac
NC
244 NB/ If you do sign the binaries make sure to use a key
245 that has been published with the FSF.
246
6cb624f8 247 27. Upload the tarballs to ftp.gnu.org.
9a5db26e 248
a8d6d6ac 249 gnupload --to ftp.gnu.org:binutils binutils-X.XX.tar.*
9a5db26e
NC
250
251 The gnupload script is in the gnulib/build-aux directory.
252
a8d6d6ac
NC
253 Check for an email response from the upload. If necessary
254 fix any problems.
255
6cb624f8 256 28. Upload the tarballs (and signatures) to sourceware.org:
9a5db26e
NC
257
258 sftp sourceware.org
259 cd /sourceware/ftp/pub/binutils/releases
260 put binutils-X.XX.tar.*
261 chmod 644 binutils-X.XX.tar.*
262 quit
263
264 FIXME: Should the signatures (created by the gnupload script in
265 step 29) be uploaded as well ?
266
6cb624f8 267 29. Update web pages. For sourceware.org:
9a5db26e
NC
268
269 Create a new documentation folder on the sourceware.org web
270 pages as /sourceware/www/sourceware/htdocs/binutils/docs-X.XX.
271 Make the html documentation locally with the "make html" command
ad96220c
NC
272 and then upload and rename the directories as needed. (sftp
273 does not appear to support recursive uploads however, so the
274 directories will have to be made by hand). Create an
9a5db26e
NC
275 index.html file and then edit the docs link to point to the new
276 docs-X.XX directory.
277
6cb624f8
NC
278 Update the index.html file in the directory containing the
279 docs-X.XX entries to point to the new documentation and mention
280 the new version.
9a5db26e
NC
281
282 For the www.gnu.org site you have to email webmasters@gnu.org
283 and ask them to make the change(s).
284
6cb624f8 285 30. Send emails to binutils@sourceware.org, info-gnu@gnu.org and
9a5db26e
NC
286 David Edelsohn <dje.gcc@gmail.com> announcing the new release.
287 Sign the email and include the checksum.
288 (The email to Davis is so that he can update the GNU Toolchain
289 social media). Something like this:
290 ------------------------------------------------------------------------
291 Hi Everyone,
292
ad96220c 293 We are pleased to announce that version 2.XX of the GNU Binutils project
9a5db26e
NC
294 sources have been released and are now available for download at:
295
296 https://ftp.gnu.org/gnu/binutils
297 https://sourceware.org/pub/binutils/releases/
298
299 checksums: xxxx
94c2436b 300
9a5db26e
NC
301 This release contains numerous bug fixes, and also the
302 following new features:
78b2179a 303
9a5db26e 304 <extract info from the NEWS files>
94c2436b 305
9a5db26e
NC
306 Our thanks go out to all of the binutils contributors, past and
307 present, for helping to make this release possible.
94c2436b 308
9a5db26e 309 --------------------------------------------------------------------------
94c2436b 310
6cb624f8
NC
311 31. Clean up the source tree. (Use "git status" to find new
312 files, and remove them).
313
314 32. Edit bfd/development.sh on the branch and set
315 "development=true". Also bump the version in bfd/version.m4 by
316 adding a trailing .0, so that the date suffix keeps the version
317 lower than the trunk version. Regenerate files. Commit these
318 changes.
319
320 33. Email the binutils list telling everyone that the 2.31 branch
321 is now open for business as usual and that patched no longer
322 need special approval.
323
78b2179a
NC
324-------------------------------------------------
325How to perform a point release.
326-------------------------------------------------
327
328A point release is easier than a normal release since a lot of the
329work has already been done. The branch has been created, the
330translations updated and the documentation uploaded. So the procedure
331looks like this:
332
333 0. Decide that a point release is necessary.
334
335 Usually this only happens when a sufficient number of serious
336 bugs have been found and fixed since the previous release, and a
337 new official release is not imminent.
338
339 1. Tell the community that a point release is happening. Ask
340 maintainers to ensure that their ports are up to date on the
341 release branch. Ask the community if there are any bug fixes
342 which are missing from the branch. Allow some time for the
343 responses to this step.
344
345 2. Make sure that the branch sources build, test and install
346 correctly.
347
98ab9e96
NC
348 2.5 Prepare a list of the bugs which have been fixed. This
349 will be needed for step 8.
a960d29f 350
ef336cb0 351 3. In the branch sources:
a960d29f 352
ef336cb0 353 a. Update the minor release number in bfd/version.m4.
44c2eb66
L
354 b. Edit bfd/development.sh, set "development=false" and
355 "experimental=false".
ef336cb0 356 c. Regenerate the configure files.
442a6ce8
NC
357 c.1. Remove spurious autom4te.cache files:
358
359 find . -depth -name autom4te.cache -exec rm -r {} \;
360
ef336cb0
NC
361 d. Commit the updates along with a "this-is-the-2.XX.X-release"
362 note in all of the changelogs.
363 e. Tag the branch with the new release number:
364
365 git tag -a binutils-2_XX_X
366 [optional: add "-u XXXXX" to sign with a gpg key]
367 git push origin binutils-2_XX_X
368
8071ec09
NC
369 f. Check that your file creation mask will create the
370 correct file permissions. Eg:
371
372 umask 022
a960d29f 373
8071ec09 374 g. Create the release tarballs:
ef336cb0 375 ./src-release -b -g -l -x binutils
8071ec09
NC
376
377 h. Check that the files in the tarballs have the correct
378 permissions.
a960d29f 379
8071ec09
NC
380 i. Edit bfd/development.sh and set "development=true".
381 j. Commit this change into the git repository.
382 k. Clean up the source tree. (Use "git status" to find new
ef336cb0 383 files, and remove them).
78b2179a 384
ef336cb0
NC
385 4. [If paranoid - upload the tarballs to one of the FTP servers and
386 ask people to test it before going on to step 5].
a960d29f 387
ef336cb0 388 5. Upload the tarballs to ftp.gnu.org.
78b2179a
NC
389
390 gnupload --to ftp.gnu.org:binutils binutils-X.XX.X.tar.*
391
ef336cb0 392 The gnupload script is in the gnulib/build-aux directory.
78b2179a 393
ef336cb0 394 6. Upload the tarballs to sourceware.org:
78b2179a
NC
395
396 sftp sourceware.org
442a6ce8 397 cd /sourceware/ftp/pub/binutils/releases
78b2179a
NC
398 put binutils-X.XX.X.tar.*
399 chmod 644 binutils-X.XX.X.tar.*
400 quit
401
442a6ce8 402 It is OK to upload the signatures as well.
78b2179a 403
ef336cb0 404 7. Update web pages. For sourceware.org:
78b2179a
NC
405
406 * Log on to sourceware.org
442a6ce8 407 * Go to /sourceware/www/sourceware/htdocs/binutils
78b2179a
NC
408 * Edit index.html
409
410 For the www.gnu.org site you have to email webmasters@gnu.org
411 and ask them to make the change(s).
412
ef336cb0
NC
413 8. Send an emails to the binutils list, info-gnu@gnu.org and
414 David Edelsohn <dje.gcc@gmail.com> announcing the new release.
415 (The email to Davis is so that he can update the GNU Toolchain
416 social media). Something like this:
78b2179a
NC
417------------------------------------------------------------------------
418Hi Everyone,
419
442a6ce8
NC
420 We are pleased to announce that version 2.XX.X of the GNU Binutils
421 project sources have been released and are now available for download at:
a960d29f 422
78b2179a
NC
423 https://ftp.gnu.org/gnu/binutils
424 https://sourceware.org/pub/binutils/releases/
425
426 This is a point release over the previous 2.XX version, containing bug
427 fixes but no new features.
428
429 Our thanks go out to all of the binutils contributors, past and
430 present, for helping to make this release possible.
98ab9e96
NC
431
432 Here is a list of the bugs that have been fixed:
433 xx
434 xx
435 xx
436 xx
78b2179a
NC
437--------------------------------------------------------------------------
438
439\f
82704155 440Copyright (C) 2017-2019 Free Software Foundation, Inc.
78b2179a
NC
441
442Copying and distribution of this file, with or without modification,
443are permitted in any medium without royalty provided the copyright
444notice and this notice are preserved.
This page took 0.096018 seconds and 4 git commands to generate.