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