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