]> git.ipfire.org Git - thirdparty/binutils-gdb.git/blame - binutils/README-how-to-make-a-release
Add Changelog entries and NEWS entries for 2.36 branch
[thirdparty/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 26 2. When the branch date is near: Update the libiberty and config
055bc77a
NC
27 directories and the top level Makefile and configure files. Also
28 consider updating the toplevel libtool files.
98ab9e96
NC
29
30 3. When branch day arrives add markers for the upcoming release to
03d0d46a
NC
31 the NEWS files in gas, ld, and binutils. No need to update NEWS
32 in the gold directory - it has its own release numbering.
f974f26c
NC
33
34 Likewise for the ChangeLog files in: bfd, binutils, config, cpu,
e33f2313 35 elfcpp, gas, gold, gprof, include, ld, libctf, opcodes and toplevel.
f974f26c 36
9176ac5b 37 Add a note of the name of the new branch to binutils/BRANCHES.
f974f26c 38
9176ac5b 39 Commit these changes.
a960d29f 40
98ab9e96
NC
41 4. Create the release branch using:
42
2f4172d6
NC
43 git branch binutils-2_36-branch
44 git push origin binutils-2_36-branch
f48dfe41
NC
45
46 If you get a message like:
47
48 remote: fatal: Invalid revision range 0000000000000000000000000000000000000000..f974f26cb16cc6fe3946f163c787a05e713fb77b
49
50 It appears that this can be ignored...
98ab9e96 51
79d89b55
NC
52 5. Make sure that the branch is there. IE check out the branch sources:
53
2f4172d6 54 git clone ssh://sourceware.org/git/binutils-gdb.git -b binutils-2_36-branch 2.36
79d89b55
NC
55
56 If you get a message about being in a "detached head" state, something
57 has gone wrong...
58
082cbd3b
NC
59 Keep the checked out sources - they are going to be needed in future
60 steps.
f48dfe41 61
79d89b55 62 6. Update "BINUTILS_BRANCH" in gdbadmin's crontab:
0dd86f32
JB
63
64 Log in as gdbadmin on sourceware.org, and then:
65
66 $ cd crontab
67 $ vi crontab
68 [change BINUTILS_BRANCH]
69 $ cvs ci crontab
70 $ crontab crontab
71
72 If you do not have access to this account, please feel free to
73 ask Joel Brobecker <brobecker AT adacore DOT com>.
74
79d89b55 75 7. Rename the current HEAD version entry in Bugzilla, and create a
2f4172d6 76 new one. E.g. rename "2.36 (HEAD)" to 2.36, and create "2.37
7ab82037
NC
77 (HEAD)":
78
79 https://sourceware.org/bugzilla/editversions.cgi?product=binutils
98ab9e96 80
71300e2c
NC
81 8. Update bfd/version.m4 on HEAD to indicate that is now a snapshot
82 of the next release:
83
2f4172d6 84 m4_define([BFD_VERSION], [2.36.50])
71300e2c 85
1b1bb2c6 86 Update the release number in bfd/version.m4 for the BRANCH.
71300e2c
NC
87 The branch only needs the point value set to 90 as the release
88 has not actually happened yet.
89
2f4172d6 90 m4_define([BFD_VERSION], [2.35.90])
94c2436b
NC
91
92 Regenerate various files on both branch and HEAD by configuring
f48dfe41
NC
93 with "--enable-maintainer-mode --enable-gold" and then building
94 with "make all-binutils all-gas all-gold all-gprof all-ld"
95
96 Add ChangeLog entries for the updated files. Commit the changes.
97 Make sure that this includes the .pot files as well as the
98 configure and makefiles.
98ab9e96 99
b248e9ce 100 9. Create an initial pre-release:
98ab9e96 101
04d7fa21
NC
102 a. Remove any auto-generated files, in order to force the
103 src-release script to rebuild them.
104
105 cd <branch-sources>
106 git clean -fdx .
107
108 b. Create a source tarball of the BRANCH sources:
a960d29f 109
04d7fa21 110 ./src-release -x binutils
a960d29f 111
04d7fa21 112 c. Build a test target using this tarball.
98ab9e96 113
b248e9ce 114 cp binutils-<OLD_VERSION>.90.tar.xz /dev/shm
375cd423 115 cd /dev/shm
b248e9ce 116 tar xvf binutils-<OLD_VERSION>.90.tar.xz
375cd423
NC
117 mkdir build
118 cd build
b248e9ce 119 ../binutils-<OLD_VERSION>.90/configure --quiet --enable-gold
375cd423 120 make
98ab9e96 121
375cd423
NC
122 If there are problems, fix them.
123
04d7fa21 124 d. Upload the pre-release snapshot to the sourceware FTP site:
375cd423
NC
125
126 cd <branch-sources>
b248e9ce 127 scp binutils-<OLD_VERSION>.90.tar.xz sourceware.org:~ftp/pub/binutils/snapshots
ce04ca31 128 ssh sourceware.org sha256sum ~ftp/pub/binutils/snapshots/binutils-<OLD_VERSION>.90.tar.xz
98ab9e96 129
04d7fa21
NC
130 e. Clean up the source directory again.
131
132 git clean -fdx .
375cd423 133
b248e9ce 134 10. Tell the Translation Project where to find the new tarball.
082cbd3b 135 <coordinator@translationproject.org>
79d89b55
NC
136 qv: http://translationproject.org/html/maintainers.html
137
138------------------------------------------------------------------------
139Dear Translation Project
140
b248e9ce 141 The <NEW_VERSION> release branch has been created for the GNU binutils.
79d89b55
NC
142
143 A snapshot of the branch sources can be found here:
a960d29f 144
b248e9ce 145 https://sourceware.org/pub/binutils/snapshots/binutils-<OLD_VERSION>.90.tar.xz
a960d29f 146
b248e9ce 147 We hope to make the official release of the sources on the <DATE>
79d89b55
NC
148 although that could change if there are important bugs that need to
149 be fixed before the release.
150------------------------------------------------------------------------
98ab9e96 151
b248e9ce 152 11. Announce the availability of the snapshot and the branch on the
98ab9e96 153 binutils mailing list. Set a date for when the release will
7ab82037 154 actually happen. Something like:
79d89b55
NC
155
156------------------------------------------------------------------------
157Hi Everyone,
158
b248e9ce 159 The <NEW_VERSION> branch has now been created:
79d89b55 160
b248e9ce 161 git clone git://sourceware.org/git/binutils-gdb.git -b binutils-<NEW_VERSION>-branch <NEW_VERSION>
79d89b55
NC
162
163 A snapshot of the sources is also available here:
164
b248e9ce 165 https://sourceware.org/pub/binutils/snapshots/binutils-<OLD_VERSION>.90.tar.xz
79d89b55
NC
166
167 Please could all patches for the branch be run by me.
168 The rules for the branch are:
169
170 * No new features.
171 * Target specific bug fixes are OK.
172 * Generic bug fixes are OK if they are important and widely tested.
173 * Documentation updates/fixes are OK.
174 * Translation updates are OK.
175 * Fixes for testsuite failures are OK.
176
177 Ideally I would like to make the release happen in two weeks time,
b248e9ce 178 i.e. <DATE>. Which I hope will be enough time for everyone
79d89b55
NC
179 to get their final fixes in.
180------------------------------------------------------------------------
181
b248e9ce 182 12. Build various different toolchains, test them and nag
7ab82037
NC
183 maintainers to fix any testsuite failures for their
184 architectures...
185
b248e9ce 186==============================================================================
98ab9e96 187
94c2436b
NC
188When the time comes to actually make the release....
189
190
9a5db26e 191 20. Make sure that the branch sources still build, test and install
6cb624f8
NC
192 correctly. Make sure that the sources are clean, without any
193 patch files (.reg .orig *~) left over.
194
195 cd <branch>
04d7fa21 196 git clean -dfx .
9a5db26e
NC
197
198 21. Update the release number in bfd/version.m4 on the release
94c2436b 199 branch to a whole new minor version number, without a point
bf772a1e 200 value. Eg "2.35.90" becomes "2.36". Change bfd/development.sh
44c2eb66 201 to set all values to "false". Regenerate the configure and
e2561448 202 makefiles. And *info* files. Add ChangeLog entries for the
04d7fa21
NC
203 updates and add a "this-is-the-2.3x-release" comment and
204 commit.
9a5db26e
NC
205
206 22. Check that your file creation mask will create the
207 correct file permissions. Eg:
208
6cb624f8
NC
209 % umask
210 22
211
212 Remove any spurious autom4te.cache files left over from the
213 reconfiguring:
214
cb6ad9bb 215 git clean -fdx
9a5db26e 216
ad96220c
NC
217 23. Note - check to see if any new files have been added to the top
218 level of the source directory, but which are not in the
219 DEVO_SUPPORT variable in the src-release.sh script. If they are
220 needed then add them.
221
222 Create the release tarballs:
9a5db26e 223
6cb624f8 224 ./src-release.sh -b -g -l -x binutils
9a5db26e
NC
225
226 24. Check that the files in the tarballs have the correct
cb6ad9bb 227 permissions. (FIXME: How to do this ?)
9a5db26e
NC
228
229 25. Sanity check the release on x86_64-pc-linux-gnu by building and
082cbd3b
NC
230 running the testsuites (gas, gold, binutils and ld). Make the
231 source directory read-only before building. Also test
232 "make install". If necessary fix any problems.
9a5db26e 233
cb6ad9bb
NC
234 cd /dev/shm
235 mkdir delme
236 cd delme
237 tar xvf <path-to-sources>/binutils-2.X.tar.xz
238 chmod -R -w binutils-2.X
239 mkdir build
240 cd build
bf772a1e 241 ../binutils-2.X/configure --enable-gold --prefix=`pwd`/install --enable-plugins
cb6ad9bb
NC
242 make all-gas all-gold all-ld all-binutils all-gprof
243 make check-gas check-binutils check-ld check-gold
244 make install-gas install-gold install-ld install-binutils
245
bf772a1e
NC
246 # Needed for step 29...
247 make html
248
9a5db26e
NC
249 26. Tag the branch with the new release number:
250
04d7fa21 251 git tag -a binutils-2_3x
9a5db26e 252 [optional: add "-u XXXXX" to sign with a gpg key]
cb6ad9bb
NC
253 enter a tag message such as: "Official Binutils 2.3x release"
254
a8d6d6ac
NC
255 NB/ If you do sign the binaries make sure to use a key
256 that has been published with the FSF.
257
cb6ad9bb
NC
258 Then push the release:
259
260 git push origin binutils-2_3x
261
262 If you get an error message along the lines of "Invalid revision range ..." you can ignore it.
263
6cb624f8 264 27. Upload the tarballs to ftp.gnu.org.
9a5db26e 265
04d7fa21 266 gnupload --to ftp.gnu.org:binutils binutils-2.3x.tar.*
9a5db26e
NC
267
268 The gnupload script is in the gnulib/build-aux directory.
269
a8d6d6ac
NC
270 Check for an email response from the upload. If necessary
271 fix any problems.
272
6cb624f8 273 28. Upload the tarballs (and signatures) to sourceware.org:
9a5db26e
NC
274
275 sftp sourceware.org
276 cd /sourceware/ftp/pub/binutils/releases
04d7fa21
NC
277 put binutils-2.3x.tar.*
278 chmod 644 binutils-2.3x.tar.*
9a5db26e
NC
279 quit
280
cb6ad9bb
NC
281 FIXME: Are the signatures (created by the gnupload script in step 27) needed ?
282 [The above commands upload them and nobody has complained, so suggest that they
283 are retained].
9a5db26e 284
6cb624f8 285 29. Update web pages. For sourceware.org:
9a5db26e
NC
286
287 Create a new documentation folder on the sourceware.org web
04d7fa21 288 pages as /sourceware/www/sourceware/htdocs/binutils/docs-2.3x.
082cbd3b
NC
289
290 sftp sourceware.org
291 cd /sourceware/www/sourceware/htdocs/binutils
04d7fa21
NC
292 mkdir docs-2.3x
293 cd docs-2.3x
cb6ad9bb
NC
294 mkdir as
295 mkdir bfd
296 mkdir binutils
297 mkdir gprof
298 mkdir ld
04d7fa21 299 cd ../docs-2.3(x-1)
082cbd3b
NC
300 get index.html
301
302 Update the (local copy of the) index.html file to point to the
303 new documentation and mention the new version and then upload it.
304
04d7fa21 305 cd ../docs-2.3x
082cbd3b
NC
306 put index.html
307
9a5db26e 308 Make the html documentation locally with the "make html" command
ad96220c
NC
309 and then upload and rename the directories as needed. (sftp
310 does not appear to support recursive uploads however, so the
03d0d46a 311 directories had to be made by hand, as shown above).
082cbd3b
NC
312
313 cd as
cb6ad9bb
NC
314 lcd <build-dir>/gas/doc/as.html
315 put * {be patient - this takes a long time...}
082cbd3b
NC
316 cd ../bfd
317 lcd ../../../bfd/doc/bfd.html
318 put *
319 cd ../binutils
320 lcd ../../../binutils/doc/binutils.html
321 put *
322 cd ../gprof
323 lcd ../../../gprof/gprof.html
324 put *
325 cd ../ld
326 lcd ../../ld/ld.html
327 put *
328
329 Edit the top level binutils index.html file to change the links
cb6ad9bb 330 to point to the new documentation.
082cbd3b 331
bf772a1e 332 cd ../..
04d7fa21 333 get index.html
082cbd3b
NC
334 [edit]
335 put index.html
624a2451
NC
336 rm docs
337 ln -s docs-2.3x docs
082cbd3b
NC
338 quit
339
bf772a1e
NC
340 Check that the new web page is correct:
341
342 https://sourceware.org/binutils/
343
9a5db26e 344 For the www.gnu.org site you have to email webmasters@gnu.org
bf772a1e
NC
345 and ask them to make the change(s):
346---------------------------------------
347Hi FSF Webmasters,
348
349 Please could the GNU Binutils webpage at:
350
351https://www.gnu.org/software/binutils/binutils.html
352
353 be updated to indicate that there is now a newer version available
354 (2.3x). I have already updated the related page on the sourceware
355 website so this might be useful as a template:
356
357https://sourceware.org/binutils/
358
359 Thanks very much.
360
361Cheers
362--------------------------------------
9a5db26e 363
6cb624f8 364 30. Send emails to binutils@sourceware.org, info-gnu@gnu.org and
9a5db26e 365 David Edelsohn <dje.gcc@gmail.com> announcing the new release.
03d0d46a
NC
366 Sign the email and include the checksum:
367
ce04ca31 368 sha256sum binutils-2.3x.tar.*
03d0d46a 369
9a5db26e
NC
370 (The email to Davis is so that he can update the GNU Toolchain
371 social media). Something like this:
082cbd3b 372 -----------------------------------------------------------------------
9a5db26e
NC
373 Hi Everyone,
374
04d7fa21 375 We are pleased to announce that version 2.3x of the GNU Binutils project
9a5db26e
NC
376 sources have been released and are now available for download at:
377
378 https://ftp.gnu.org/gnu/binutils
379 https://sourceware.org/pub/binutils/releases/
380
381 checksums: xxxx
94c2436b 382
cb6ad9bb
NC
383 This release contains numerous bug fixes, and also the
384 following new features:
78b2179a 385
9a5db26e 386 <extract info from the NEWS files>
94c2436b 387
cb6ad9bb
NC
388 Our thanks go out to all of the binutils contributors, past and
389 present, for helping to make this release possible.
94c2436b 390
082cbd3b 391 -----------------------------------------------------------------------
94c2436b 392
04d7fa21
NC
393 31. Clean up the source tree:
394
395 git clean -fdx .
082cbd3b
NC
396
397 32. Edit bfd/development.sh on the branch and set the development flag
398 to "true". (Leave the experimental flag set to "false"). Also bump
399 the version in bfd/version.m4 by adding a trailing .0, so that the
400 date suffix keeps the version lower than the trunk version.
401 Regenerate files. Commit these changes.
6cb624f8 402
04d7fa21 403 33. Email the binutils list telling everyone that the 2.3x branch
bf772a1e 404 is now open for business as usual and that patches no longer
6cb624f8 405 need special approval.
2012bf01 406
cb6ad9bb
NC
407 34. Examine the bfd/config.bfd file in the mainline sources and move
408 any pending obsolete targets into the definitely obsolete
409 section. Create a changelog entry and commit.
a315d390
NC
410
411
412
413
cb6ad9bb 414--------------------------------------------------------------------------
a315d390 415How to perform a POINT release.
cb6ad9bb 416--------------------------------------------------------------------------
78b2179a
NC
417
418A point release is easier than a normal release since a lot of the
419work has already been done. The branch has been created, the
420translations updated and the documentation uploaded. So the procedure
421looks like this:
422
423 0. Decide that a point release is necessary.
424
425 Usually this only happens when a sufficient number of serious
426 bugs have been found and fixed since the previous release, and a
427 new official release is not imminent.
428
429 1. Tell the community that a point release is happening. Ask
430 maintainers to ensure that their ports are up to date on the
431 release branch. Ask the community if there are any bug fixes
432 which are missing from the branch. Allow some time for the
433 responses to this step.
434
435 2. Make sure that the branch sources build, test and install
436 correctly.
437
98ab9e96
NC
438 2.5 Prepare a list of the bugs which have been fixed. This
439 will be needed for step 8.
a960d29f 440
ef336cb0 441 3. In the branch sources:
a960d29f 442
ef336cb0 443 a. Update the minor release number in bfd/version.m4.
04d7fa21 444 b. Edit bfd/development.sh, set "development=false".
ef336cb0 445 c. Regenerate the configure files.
442a6ce8
NC
446 c.1. Remove spurious autom4te.cache files:
447
448 find . -depth -name autom4te.cache -exec rm -r {} \;
449
04d7fa21 450 d. Commit the updates along with a "this-is-the-2.3x.y-release"
ef336cb0
NC
451 note in all of the changelogs.
452 e. Tag the branch with the new release number:
453
04d7fa21 454 git tag -a binutils-2_3x_y
ef336cb0 455 [optional: add "-u XXXXX" to sign with a gpg key]
04d7fa21 456 git push origin binutils-2_3x_y
ef336cb0 457
8071ec09
NC
458 f. Check that your file creation mask will create the
459 correct file permissions. Eg:
460
461 umask 022
a960d29f 462
8071ec09 463 g. Create the release tarballs:
04d7fa21 464
ef336cb0 465 ./src-release -b -g -l -x binutils
8071ec09
NC
466
467 h. Check that the files in the tarballs have the correct
468 permissions.
a960d29f 469
8071ec09
NC
470 i. Edit bfd/development.sh and set "development=true".
471 j. Commit this change into the git repository.
78b2179a 472
ef336cb0
NC
473 4. [If paranoid - upload the tarballs to one of the FTP servers and
474 ask people to test it before going on to step 5].
a960d29f 475
ef336cb0 476 5. Upload the tarballs to ftp.gnu.org.
78b2179a 477
04d7fa21 478 gnupload --to ftp.gnu.org:binutils binutils-2.3x.y.tar.*
78b2179a 479
ef336cb0 480 The gnupload script is in the gnulib/build-aux directory.
78b2179a 481
ef336cb0 482 6. Upload the tarballs to sourceware.org:
78b2179a
NC
483
484 sftp sourceware.org
442a6ce8 485 cd /sourceware/ftp/pub/binutils/releases
04d7fa21
NC
486 put binutils-2.3x.y.tar.*
487 chmod 644 binutils-2.3x.y.tar.*
78b2179a
NC
488 quit
489
442a6ce8 490 It is OK to upload the signatures as well.
78b2179a 491
ef336cb0 492 7. Update web pages. For sourceware.org:
78b2179a
NC
493
494 * Log on to sourceware.org
442a6ce8 495 * Go to /sourceware/www/sourceware/htdocs/binutils
78b2179a
NC
496 * Edit index.html
497
498 For the www.gnu.org site you have to email webmasters@gnu.org
499 and ask them to make the change(s).
500
ef336cb0
NC
501 8. Send an emails to the binutils list, info-gnu@gnu.org and
502 David Edelsohn <dje.gcc@gmail.com> announcing the new release.
503 (The email to Davis is so that he can update the GNU Toolchain
504 social media). Something like this:
03d0d46a 505
78b2179a
NC
506------------------------------------------------------------------------
507Hi Everyone,
508
04d7fa21 509 We are pleased to announce that version 2.3x.y of the GNU Binutils
442a6ce8 510 project sources have been released and are now available for download at:
a960d29f 511
78b2179a
NC
512 https://ftp.gnu.org/gnu/binutils
513 https://sourceware.org/pub/binutils/releases/
514
04d7fa21 515 This is a point release over the previous 2.3x version, containing bug
78b2179a
NC
516 fixes but no new features.
517
518 Our thanks go out to all of the binutils contributors, past and
519 present, for helping to make this release possible.
98ab9e96
NC
520
521 Here is a list of the bugs that have been fixed:
522 xx
523 xx
524 xx
525 xx
78b2179a 526--------------------------------------------------------------------------
a315d390
NC
527
528 9. Create a new Bugzilla entry for the point release.
529
530 https://sourceware.org/bugzilla/editversions.cgi?product=binutils
531
532 And a new milestone too:
533
534 https://sourceware.org/bugzilla/editmilestones.cgi?product=binutils
535
536 10. Clean up the source tree.
03d0d46a
NC
537
538 git clean -dfx .
78b2179a 539
a315d390 540 11. Edit bfd/development.sh on the branch and set the development flag
4786fbf3
NC
541 to "true". Commit this change.
542
78b2179a 543\f
250d07de 544Copyright (C) 2017-2021 Free Software Foundation, Inc.
78b2179a
NC
545
546Copying and distribution of this file, with or without modification,
547are permitted in any medium without royalty provided the copyright
548notice and this notice are preserved.