Home | History | Annotate | Line # | Download | only in binutils
README-how-to-make-a-release revision 1.1
      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  christos      directories and the top level configure files.
     28  1.1  christos 
     29  1.1  christos   3. When branch day arrives add markers for the upcoming release to
     30  1.1  christos      gas, ld, gold and binutils NEWS files.
     31  1.1  christos        [If using the make-prerelease.sh script, check that
     32  1.1  christos         common.sh has the right values].
     33  1.1  christos        [make-prelease.sh command i]
     34  1.1  christos      Likewise for all of the ChangeLog files.
     35  1.1  christos      Add a note of the name of the new branch to binutils/BRANCHES.
     36  1.1  christos      Commit these changes.
     37  1.1  christos        [make-prerelease.sh command C]
     38  1.1  christos 
     39  1.1  christos   4. Create the release branch using:
     40  1.1  christos 
     41  1.1  christos 	git tag -a binutils-2_30-branch   [e.g. for the 2.30 branch...]
     42  1.1  christos         git push --tags origin binutils-2_30-branch
     43  1.1  christos 
     44  1.1  christos   5. Update "BINUTILS_BRANCH" in gdbadmin's crontab:
     45  1.1  christos 
     46  1.1  christos      Log in as gdbadmin on sourceware.org, and then:
     47  1.1  christos 
     48  1.1  christos         $ cd crontab
     49  1.1  christos         $ vi crontab
     50  1.1  christos         [change BINUTILS_BRANCH]
     51  1.1  christos         $ cvs ci crontab
     52  1.1  christos         $ crontab crontab
     53  1.1  christos 
     54  1.1  christos      If you do not have access to this account, please feel free to
     55  1.1  christos      ask Joel Brobecker <brobecker AT adacore DOT com>.
     56  1.1  christos 
     57  1.1  christos   6. Update bfd/configure and bfd/configure.ac on HEAD to indicate
     58  1.1  christos      snapshot of the following release.
     59  1.1  christos        [make-prerelease.sh command hv + C]
     60  1.1  christos 
     61  1.1  christos   7. Rename the current HEAD version entry in Bugzilla, and create a
     62  1.1  christos      new one.  E.g. rename "2.30 (HEAD)" to 2.30, and create "2.31
     63  1.1  christos      (HEAD)":
     64  1.1  christos      
     65  1.1  christos         https://sourceware.org/bugzilla/editversions.cgi?product=binutils
     66  1.1  christos 
     67  1.1  christos   8. Update the release number in bfd/version.m4 for the mainline and
     68  1.1  christos      the branch.  The mainline should have the minor number
     69  1.1  christos      incremented, but the branch only needs the point value set to 90
     70  1.1  christos      as the release has not actually happened yet.
     71  1.1  christos 
     72  1.1  christos      Regenerate various files on both branch and HEAD by configuring
     73  1.1  christos      with --enable-maintainer-mode.  NB/ Remember to build gold and
     74  1.1  christos      gprof.  Commit the changes.  Make sure that this includes the
     75  1.1  christos      .pot files as well as the configure and makefiles.
     76  1.1  christos 
     77  1.1  christos   9. Create an initial prerelease:
     78  1.1  christos 
     79  1.1  christos      a. Change the version on the branch (bfd/version.m4), regenerate
     80  1.1  christos         the files, and check this in.
     81  1.1  christos 
     82  1.1  christos      b. Create a source tarball of the branch sources:
     83  1.1  christos 
     84  1.1  christos            ./src-release -x binutils
     85  1.1  christos 
     86  1.1  christos      c. Build a test target using this tarball.
     87  1.1  christos 
     88  1.1  christos      d. Upload the prerelease snapshot to the FTP:
     89  1.1  christos 
     90  1.1  christos           scp ../binutils-$version.tar.xz sourceware.org:~ftp/pub/binutils/snapshots
     91  1.1  christos           ssh sourceware.org md5sum ~ftp/pub/binutils/snapshots/binutils-$version.tar.xz
     92  1.1  christos 
     93  1.1  christos   10. Send it to the Translation Project:
     94  1.1  christos 
     95  1.1  christos         http://translationproject.org/html/maintainers.html
     96  1.1  christos 
     97  1.1  christos       Sending mail for one of the POT files is sufficient.
     98  1.1  christos 
     99  1.1  christos   11. Announce the availability of the snapshot and the branch on the
    100  1.1  christos       binutils mailing list.  Set a date for when the release will
    101  1.1  christos       actually happen.  Something like:
    102  1.1  christos         ------------------------------------------------------------------------
    103  1.1  christos         Hi Everyone, 
    104  1.1  christos        
    105  1.1  christos           The 2.XX branch has now been created:
    106  1.1  christos 
    107  1.1  christos              git clone git://sourceware.org/git/binutils-gdb.git -b binutils-2_XX-branch 2.XX
    108  1.1  christos 
    109  1.1  christos           A snapshot of the sources is also available here:
    110  1.1  christos 
    111  1.1  christos             ftp://sourceware.org/pub/binutils/snapshots/binutils-2.XX.0.tar.xz
    112  1.1  christos 
    113  1.1  christos           Please could all patches for the branch be run by me.
    114  1.1  christos           The rules for the branch are:
    115  1.1  christos         
    116  1.1  christos             * No new features.
    117  1.1  christos             * Target specific bug fixes are OK.
    118  1.1  christos             * Generic bug fixes are OK if they are important and widely tested.
    119  1.1  christos             * Documentation updates/fixes are OK.
    120  1.1  christos             * Translation updates are OK.
    121  1.1  christos             * Fixes for testsuite failures are OK.
    122  1.1  christos         
    123  1.1  christos           Ideally I would like to make the release happen in two weeks time,
    124  1.1  christos           i.e. Saturday 27th Jan.  Which I hope will be enough time for everyone
    125  1.1  christos           to get their final fixes in.
    126  1.1  christos         ------------------------------------------------------------------------
    127  1.1  christos 
    128  1.1  christos   12. Build various different toolchains, test them and nag
    129  1.1  christos       maintainers to fix any testsuite failures for their
    130  1.1  christos       architectures...
    131  1.1  christos 
    132  1.1  christos 
    133  1.1  christos When the time comes to actually make the release....
    134  1.1  christos 
    135  1.1  christos 
    136  1.1  christos   20. Make sure that the branch sources still build, test and install 
    137  1.1  christos       correctly.
    138  1.1  christos 
    139  1.1  christos   21. Update the release number in bfd/version.m4 on the release
    140  1.1  christos       branch to a whole new minor version number, without a point
    141  1.1  christos       value.  Eg "2.29.90" becomes "2.30".  Change bfd/development.sh
    142  1.1  christos       to set the value to "false".  Regenerate the configure and
    143  1.1  christos       makefiles.  Add changelog entries for the updates and add a
    144  1.1  christos       "this-is-the-2.XX-release" commit and commit.  Make sure to
    145  1.1  christos       include the .gmo files.
    146  1.1  christos 
    147  1.1  christos   22. Check that your file creation mask will create the
    148  1.1  christos       correct file permissions.  Eg:
    149  1.1  christos 
    150  1.1  christos 	    umask 022
    151  1.1  christos 
    152  1.1  christos   23. Create the release tarballs:
    153  1.1  christos   
    154  1.1  christos             ./src-release -b -g -l -x binutils
    155  1.1  christos 
    156  1.1  christos   24. Check that the files in the tarballs have the correct
    157  1.1  christos       permissions.  FIXME: The tarballs will contain spurious
    158  1.1  christos       autom4te.cache directories which could be removed to reduce
    159  1.1  christos       their size.
    160  1.1  christos 
    161  1.1  christos   25. Sanity check the release on x86_64-pc-linux-gnu by building and
    162  1.1  christos       running the testsuite.  Make the source directory read-only
    163  1.1  christos       before building.  Also test "make install".  If necessary fix
    164  1.1  christos       any problems.
    165  1.1  christos 
    166  1.1  christos   26. Tag the branch with the new release number:
    167  1.1  christos 
    168  1.1  christos             git tag -a binutils-2_XX
    169  1.1  christos 	      [optional: add "-u XXXXX" to sign with a gpg key]
    170  1.1  christos 	    git push origin binutils-2_XX
    171  1.1  christos 
    172  1.1  christos         NB/ If you do sign the binaries make sure to use a key
    173  1.1  christos 	that has been published with the FSF.
    174  1.1  christos 
    175  1.1  christos   27. Clean up the source tree.  (Use "git status" to find new
    176  1.1  christos       files, and remove them).
    177  1.1  christos 
    178  1.1  christos   28. Edit bfd/development.sh on the branch and set
    179  1.1  christos       "development=true".  Also bump the version by adding a trailing 
    180  1.1  christos       .0, so that the date suffix keeps the version lower than the
    181  1.1  christos       trunk version.  Regenerate files.  Commit these changes.
    182  1.1  christos 
    183  1.1  christos   29. Upload the tarballs to ftp.gnu.org.
    184  1.1  christos 
    185  1.1  christos        gnupload --to ftp.gnu.org:binutils binutils-X.XX.tar.*
    186  1.1  christos 
    187  1.1  christos       The gnupload script is in the gnulib/build-aux directory.
    188  1.1  christos 
    189  1.1  christos       Check for an email response from the upload.  If necessary
    190  1.1  christos       fix any problems.
    191  1.1  christos 
    192  1.1  christos   30. Upload the tarballs (and signatures) to sourceware.org:
    193  1.1  christos 
    194  1.1  christos        sftp sourceware.org
    195  1.1  christos          cd /sourceware/ftp/pub/binutils/releases
    196  1.1  christos  	 put binutils-X.XX.tar.*
    197  1.1  christos  	 chmod 644 binutils-X.XX.tar.*
    198  1.1  christos 	 quit
    199  1.1  christos 
    200  1.1  christos       FIXME: Should the signatures (created by the gnupload script in
    201  1.1  christos       step 29) be uploaded as well ?
    202  1.1  christos 
    203  1.1  christos   31. Update web pages.  For sourceware.org:
    204  1.1  christos 
    205  1.1  christos       Create a new documentation folder on the sourceware.org web
    206  1.1  christos       pages as /sourceware/www/sourceware/htdocs/binutils/docs-X.XX.
    207  1.1  christos       Make the html documentation locally with the "make html" command
    208  1.1  christos       and then upload and rename the directories as needed.  Create an
    209  1.1  christos       index.html file and then edit the docs link to point to the new
    210  1.1  christos       docs-X.XX directory.
    211  1.1  christos       
    212  1.1  christos       Update the sourceware.org site to point to the new documentation
    213  1.1  christos       and  mention the new version.  
    214  1.1  christos 
    215  1.1  christos       For the www.gnu.org site you have to email webmasters (a] gnu.org
    216  1.1  christos       and ask them to make the change(s).
    217  1.1  christos 
    218  1.1  christos   32. Send emails to binutils (a] sourceware.org, info-gnu (a] gnu.org and
    219  1.1  christos       David Edelsohn <dje.gcc (a] gmail.com> announcing the new release.
    220  1.1  christos       Sign the email and include the checksum.
    221  1.1  christos       (The email to Davis is so that he can update the GNU Toolchain
    222  1.1  christos       social media).  Something like this:
    223  1.1  christos       ------------------------------------------------------------------------
    224  1.1  christos         Hi Everyone,
    225  1.1  christos 
    226  1.1  christos         We are pleased to announce that version 2.XX of the Binutils project
    227  1.1  christos         sources have been released and are now available for download at:
    228  1.1  christos 
    229  1.1  christos           https://ftp.gnu.org/gnu/binutils
    230  1.1  christos           https://sourceware.org/pub/binutils/releases/
    231  1.1  christos 
    232  1.1  christos           checksums: xxxx
    233  1.1  christos 
    234  1.1  christos        This release contains numerous bug fixes, and also the
    235  1.1  christos        following new features:
    236  1.1  christos 
    237  1.1  christos           <extract info from the NEWS files>
    238  1.1  christos 
    239  1.1  christos        Our thanks go out to all of the binutils contributors, past and
    240  1.1  christos        present, for helping to make this release possible.
    241  1.1  christos 
    242  1.1  christos       --------------------------------------------------------------------------
    243  1.1  christos 
    244  1.1  christos -------------------------------------------------
    245  1.1  christos How to perform a point release.
    246  1.1  christos -------------------------------------------------
    247  1.1  christos 
    248  1.1  christos A point release is easier than a normal release since a lot of the
    249  1.1  christos work has already been done.  The branch has been created, the
    250  1.1  christos translations updated and the documentation uploaded.  So the procedure
    251  1.1  christos looks like this:
    252  1.1  christos 
    253  1.1  christos   0. Decide that a point release is necessary.
    254  1.1  christos 
    255  1.1  christos      Usually this only happens when a sufficient number of serious
    256  1.1  christos      bugs have been found and fixed since the previous release, and a
    257  1.1  christos      new official release is not imminent.
    258  1.1  christos 
    259  1.1  christos   1. Tell the community that a point release is happening.  Ask
    260  1.1  christos      maintainers to ensure that their ports are up to date on the
    261  1.1  christos      release branch.  Ask the community if there are any bug fixes
    262  1.1  christos      which are missing from the branch.  Allow some time for the
    263  1.1  christos      responses to this step.
    264  1.1  christos 
    265  1.1  christos   2. Make sure that the branch sources build, test and install
    266  1.1  christos      correctly.
    267  1.1  christos 
    268  1.1  christos   2.5 Prepare a list of the bugs which have been fixed.  This
    269  1.1  christos       will be needed for step 8.
    270  1.1  christos 
    271  1.1  christos   3. In the branch sources:
    272  1.1  christos 
    273  1.1  christos        a. Update the minor release number in bfd/version.m4.
    274  1.1  christos        b. Edit bfd/development.sh and set "development=false".
    275  1.1  christos        c. Regenerate the configure files.
    276  1.1  christos        d. Commit the updates along with a "this-is-the-2.XX.X-release"
    277  1.1  christos           note in all of the changelogs.
    278  1.1  christos        e. Tag the branch with the new release number:
    279  1.1  christos 
    280  1.1  christos             git tag -a binutils-2_XX_X
    281  1.1  christos 	      [optional: add "-u XXXXX" to sign with a gpg key]
    282  1.1  christos 	    git push origin binutils-2_XX_X
    283  1.1  christos 
    284  1.1  christos        f. Check that your file creation mask will create the
    285  1.1  christos           correct file permissions.  Eg:
    286  1.1  christos 
    287  1.1  christos 	    umask 022
    288  1.1  christos 
    289  1.1  christos        g. Create the release tarballs:
    290  1.1  christos             ./src-release -b -g -l -x binutils
    291  1.1  christos 
    292  1.1  christos        h. Check that the files in the tarballs have the correct
    293  1.1  christos           permissions.
    294  1.1  christos 
    295  1.1  christos        i. Edit bfd/development.sh and set "development=true".
    296  1.1  christos        j. Commit this change into the git repository.
    297  1.1  christos        k. Clean up the source tree.  (Use "git status" to find new
    298  1.1  christos            files, and remove them).
    299  1.1  christos 
    300  1.1  christos      FIXME: The tarballs will contain spurious autom4te.cache
    301  1.1  christos      directories which could be removed to reduce their size.
    302  1.1  christos 
    303  1.1  christos   4. [If paranoid - upload the tarballs to one of the FTP servers and
    304  1.1  christos       ask people to test it before going on to step 5].
    305  1.1  christos 
    306  1.1  christos   5. Upload the tarballs to ftp.gnu.org.
    307  1.1  christos 
    308  1.1  christos        gnupload --to ftp.gnu.org:binutils binutils-X.XX.X.tar.*
    309  1.1  christos 
    310  1.1  christos      The gnupload script is in the gnulib/build-aux directory.
    311  1.1  christos 
    312  1.1  christos   6. Upload the tarballs to sourceware.org:
    313  1.1  christos 
    314  1.1  christos        sftp sourceware.org
    315  1.1  christos          cd /ftp/pub/binutils/releases
    316  1.1  christos  	 put binutils-X.XX.X.tar.*
    317  1.1  christos  	 chmod 644 binutils-X.XX.X.tar.*
    318  1.1  christos 	 quit
    319  1.1  christos 
    320  1.1  christos     FIXME: Should the signatures (created by the gnupload script in
    321  1.1  christos     step 5) be uploaded as well ?
    322  1.1  christos 
    323  1.1  christos   7. Update web pages.  For sourceware.org:
    324  1.1  christos 
    325  1.1  christos       * Log on to sourceware.org
    326  1.1  christos       * Go /www/htdocs/binutils
    327  1.1  christos       * Edit index.html
    328  1.1  christos 
    329  1.1  christos       For the www.gnu.org site you have to email webmasters (a] gnu.org
    330  1.1  christos       and ask them to make the change(s).
    331  1.1  christos 
    332  1.1  christos   8. Send an emails to the binutils list, info-gnu (a] gnu.org and
    333  1.1  christos      David Edelsohn <dje.gcc (a] gmail.com> announcing the new release.
    334  1.1  christos      (The email to Davis is so that he can update the GNU Toolchain
    335  1.1  christos      social media).  Something like this:
    336  1.1  christos ------------------------------------------------------------------------
    337  1.1  christos Hi Everyone,
    338  1.1  christos 
    339  1.1  christos   We are pleased to announce that version 2.XX.X of the Binutils project
    340  1.1  christos   sources have been released and are now available for download at:
    341  1.1  christos 
    342  1.1  christos     https://ftp.gnu.org/gnu/binutils
    343  1.1  christos     https://sourceware.org/pub/binutils/releases/
    344  1.1  christos 
    345  1.1  christos   This is a point release over the previous 2.XX version, containing bug
    346  1.1  christos   fixes but no new features.
    347  1.1  christos 
    348  1.1  christos   Our thanks go out to all of the binutils contributors, past and
    349  1.1  christos   present, for helping to make this release possible.
    350  1.1  christos 
    351  1.1  christos   Here is a list of the bugs that have been fixed:
    352  1.1  christos     xx
    353  1.1  christos     xx
    354  1.1  christos     xx
    355  1.1  christos     xx
    356  1.1  christos --------------------------------------------------------------------------
    357  1.1  christos 
    358  1.1  christos 
    360  1.1  christos Copyright (C) 2017-2018 Free Software Foundation, Inc.
    361  1.1  christos 
    362  1.1  christos Copying and distribution of this file, with or without modification,
    363  1.1  christos are permitted in any medium without royalty provided the copyright
    364                notice and this notice are preserved.
    365