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