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