dllwrap, windres and dlltools use mktemp, which should be avoided
[binutils-gdb.git] / binutils / README-how-to-make-a-release
index 2fdea008545da6ef8c8e1268011cd7cb8dae8555..9fcebf5f0a4b335ee7a8c2fe6b0b47951676c5e5 100644 (file)
@@ -35,7 +35,8 @@ Approx time to complete from here: 2 hours ....
      in the gold directory - it has its own release numbering.
 
      Likewise for the ChangeLog files in: bfd, binutils, config, cpu,
-     elfcpp, gas, gold, gprof, include, ld, libctf, opcodes and toplevel.
+     elfcpp, gas, gold, gprof, include, ld, libctf, libiberty, opcodes
+     and toplevel.
 
      Add a note of the name of the new branch to binutils/BRANCHES.
 
@@ -43,8 +44,8 @@ Approx time to complete from here: 2 hours ....
 
   4. Create the release branch using:
 
-       git branch binutils-2_37-branch
-        git push origin binutils-2_37-branch
+       git branch binutils-2_40-branch
+        git push origin binutils-2_40-branch
 
      If you get a message like:
      
@@ -54,7 +55,7 @@ Approx time to complete from here: 2 hours ....
 
   5. Make sure that the branch is there.  IE check out the branch sources:
   
-        git clone ssh://sourceware.org/git/binutils-gdb.git -b binutils-2_37-branch 2.37
+        git clone ssh://sourceware.org/git/binutils-gdb.git -b binutils-2_40-branch 2.40
 
      If you get a message about being in a "detached head" state, something
      has gone wrong...
@@ -76,25 +77,31 @@ Approx time to complete from here: 2 hours ....
      ask Joel Brobecker <brobecker AT adacore DOT com>.
 
   7. Rename the current HEAD version entry in Bugzilla, and create a
-     new one.  E.g. rename "2.37 (HEAD)" to 2.37, and create
-     "2.38 (HEAD)":
+     new one.  E.g. rename "2.38 (HEAD)" to 2.38, and create
+     "2.39 (HEAD)":
      
         https://sourceware.org/bugzilla/editversions.cgi?product=binutils
 
   8. Update bfd/version.m4 on HEAD to indicate that is now a snapshot
-     of the next release:
+     of the next release and the BRANCH to indicated that it is almost
+     ready for the release.
+
+     So if the release is going to be 2.40 then the version number on
+     the BRANCH should be set to 2.39.90 - ie almost, but not quite 2.40,
+     and the version number on the MAINLINE should be set to 2.40.50 -
+     ie half way to 2.41 release.
+
+     So the branch bfd/version.m4 has:
      
-       m4_define([BFD_VERSION], [2.37.50])
+       m4_define([BFD_VERSION], [2.39.90])
        
-     Update the release number in bfd/version.m4 for the BRANCH.
-     The branch only needs the point value set to 90 as the release
-     has not actually happened yet.
+     and the mainline has:
 
-       m4_define([BFD_VERSION], [2.36.90])
+       m4_define([BFD_VERSION], [2.40.50])
 
      Regenerate various files on both branch and HEAD by configuring
-     with "--enable-maintainer-mode --enable-gold" and then building
-     with "make all-binutils all-gas all-gold all-gprof all-ld"
+     with "--enable-maintainer-mode --enable-gold --enable-shared" and then building
+     with "make all-binutils all-gas all-gold all-gprof all-gprofng all-ld"
 
      Add ChangeLog entries for the updated files.  Commit the changes.
      Make sure that this includes the .pot files as well as the
@@ -110,16 +117,16 @@ Approx time to complete from here: 2 hours ....
          
      b. Create a source tarball of the BRANCH sources:
 
-          ./src-release -x binutils
+          ./src-release.sh -x binutils
 
      c. Build a test target using this tarball.
 
-           cp binutils-2.36.90.tar.xz /dev/shm
+           cp binutils-2.39.90.tar.xz /dev/shm
           pushd /dev/shm
-          tar xvf binutils-2.36.90.tar.xz
+          tar xvf binutils-2.39.90.tar.xz
           mkdir build
           cd build
-          ../binutils-2.36.90/configure --quiet --enable-gold
+          ../binutils-2.39.90/configure --quiet --enable-gold
           make
           popd
 
@@ -127,8 +134,8 @@ Approx time to complete from here: 2 hours ....
 
      d. Upload the pre-release snapshot to the sourceware FTP site:
 
-          scp binutils-2.36.90.tar.xz sourceware.org:~ftp/pub/binutils/snapshots
-          ssh sourceware.org sha256sum ~ftp/pub/binutils/snapshots/binutils-2.36.90.tar.xz
+          scp binutils-2.39.90.tar.xz sourceware.org:/var/ftp/pub/binutils/snapshots
+          ssh sourceware.org sha256sum ~ftp/pub/binutils/snapshots/binutils-2.39.90.tar.xz
 
      e. Clean up the source directory again.
 
@@ -141,11 +148,11 @@ Approx time to complete from here: 2 hours ....
 ------------------------------------------------------------------------
 Dear Translation Project
 
-  The <NEW_VERSION> release branch has been created for the GNU binutils.
+  The 2.40 release branch has been created for the GNU Binutils project.
 
   A snapshot of the branch sources can be found here:
 
-    https://sourceware.org/pub/binutils/snapshots/binutils-<OLD_VERSION>.90.tar.xz
+    https://sourceware.org/pub/binutils/snapshots/binutils-2.39.90.tar.xz
 
   We hope to make the official release of the sources on the <DATE>
   although that could change if there are important bugs that need to
@@ -161,7 +168,7 @@ Hi Everyone,
 
   The <NEW_VERSION> branch has now been created:
 
-     git clone git://sourceware.org/git/binutils-gdb.git -b binutils-<NEW_VERSION>-branch <NEW_VERSION>
+     git clone git://sourceware.org/git/binutils-gdb.git -b binutils-<NEW_VERSION>-branch
 
   A snapshot of the sources is also available here:
 
@@ -196,16 +203,34 @@ When the time comes to actually make the release....
       patch files (.reg .orig *~) left over.
 
          cd <branch>
-        git clean -dfx .
+        git clean -fdx
+
+  21. a. Update the release number in bfd/version.m4 on the release
+         branch to a whole new minor version number, without a point
+         value.  Eg "2.39.90" becomes "2.40".
+
+      b. Change bfd/development.sh to set all values to "false".
+
+      c. Regenerate the configure and makefiles.  And *info* files.
+
+            make all-gas all-ld all-binutils all-gprof all-gold all-gprofng
+           make info
+           
+      d. Create a ChangeLog from the git refs for all of the commits
+         from when changelog entries were no longer required:
 
-  21. Update the release number in bfd/version.m4 on the release
-      branch to a whole new minor version number, without a point
-      value.  Eg "2.35.90" becomes "2.36".  Change bfd/development.sh
-      to set all values to "false".  Regenerate the configure and
-      makefiles.  And *info* files.  Add ChangeLog entries for the
-      updates and add a  "this-is-the-2.3x-release" comment and
-      commit.
+           gitlog-to-changelog --since=2021-07-03 > ChangeLog.git
+           git add ChangeLog.git
 
+         The gitlog-to-changelog script is part of the sources
+        of the "config" project.
+       
+      e. Add ChangeLog entries for all of the updates and add a
+         "this-is-the-2.38-release" comment and commit.
+
+           git commit
+          git push
+          
   22. Check that your file creation mask will create the
       correct file permissions.  Eg:
 
@@ -222,68 +247,84 @@ When the time comes to actually make the release....
       DEVO_SUPPORT variable in the src-release.sh script.  If they are
       needed then add them.
 
-       Create the release tarballs:
+      Create the release tarballs:
   
             ./src-release.sh -b -g -l -x binutils
 
   24. Check that the files in the tarballs have the correct
-      permissions.  (FIXME: How to do this ?)
+      permissions.
+
+           tar tvf binutils-*.tar.bz2 | grep -e "---"
+
+      Also check that the man files are not empty.  (cf PR 28144).
+
+           tar tvf binutils-*.tar.xz | grep -e "\.1"
 
   25. Sanity check the release on x86_64-pc-linux-gnu by building and
       running the testsuites (gas, gold, binutils and ld).  Make the
-      source directory read-only before building.  Also test
-      "make install".  If necessary fix any problems.
+      source directory read-only before building.  (Note - the gprofng
+      sources need a writeable doc/ directory.  This is a bug that needs
+      to be fixed).
+      Also test "make install".
+      If necessary fix any problems.
 
-        cd /dev/shm
+        pushd /dev/shm
        mkdir delme
        cd delme
-       tar xvf <path-to-sources>/binutils-2.X.tar.xz
-       chmod -R -w binutils-2.X
+       tar xvf <path-to-sources>/binutils-2.*.tar.lz
+       chmod -R -w binutils-2.*
+       chmod +w binutils-2.*/gprofng/doc
        mkdir build
        cd build
-       ../binutils-2.X/configure --enable-gold --prefix=`pwd`/install --enable-plugins
-       make all-gas all-gold all-ld all-binutils all-gprof
+       ../binutils-2.*/configure --quiet --enable-gold --prefix=`pwd`/install --enable-plugins --enable-shared
+       make all-gas all-gold all-ld all-binutils all-gprof all-gprofng
        make check-gas check-binutils check-ld check-gold
-        make install-gas install-gold install-ld install-binutils
+        make install-gas install-gold install-ld install-binutils install-gprofng
 
         # Needed for step 29...
-        make html
+        make html pdf
+
+        popd
 
   26. Tag the branch with the new release number:
+       [optional: add "-u XXXXX" to sign with a gpg key]
+       enter a tag message such as: "Official GNU Binutils 2.3x release"
+
+           git tag -a binutils-2_40 -u DD9E3C4F      <=== Be careful to get the tag right
 
-            git tag -a binutils-2_3x
-             [optional: add "-u XXXXX" to sign with a gpg key]
-             enter a tag message such as: "Official Binutils 2.3x release"
-             
         NB/ If you do sign the binaries make sure to use a key
        that has been published with the FSF.
 
         Then push the release:
        
-           git push origin binutils-2_3x
+           git push origin binutils-2_40
 
-        If you get an error message along the lines of "Invalid revision range ..." you can ignore it.
+        If you get an error message along the lines of:
+       "Invalid revision range ..." you can ignore it.
 
-  27. Upload the tarballs to ftp.gnu.org.
+  27.  Upload the tarballs to ftp.gnu.org.
 
-       gnupload --to ftp.gnu.org:binutils binutils-2.3x.tar.*
+            gnupload --to ftp.gnu.org:binutils binutils-2.3*.tar.*
 
-      The gnupload script is in the gnulib/build-aux directory.
+        Be prepared to provide the password for the key, if you
+       signed the binaries.
+      
+        The gnupload script is in the gnulib/build-aux directory.
 
-      Check for an email response from the upload.  If necessary
-      fix any problems.
+        Check for an email response from the upload.  If necessary
+        fix any problems.
 
   28. Upload the tarballs (and signatures) to sourceware.org:
 
        sftp sourceware.org
          cd /sourceware/ftp/pub/binutils/releases
-        put binutils-2.3x.tar.*
-        chmod 644 binutils-2.3x.tar.*
+        put binutils-2.3*.tar.*
+        chmod 644 binutils-2.3*.tar.*
         quit
 
-      FIXME: Are the signatures (created by the gnupload script in step 27) needed ?
-      [The above commands upload them and nobody has complained, so suggest that they
-      are retained].
+      FIXME: Are the signatures (created by the gnupload script in step 27)
+      needed ?  [The above commands upload them and nobody has complained,
+      so suggest that they are retained].
 
   29. Update web pages.  For sourceware.org:
 
@@ -309,25 +350,45 @@ When the time comes to actually make the release....
         put index.html
 
       Make the html documentation locally with the "make html" command
-      and then upload and rename the directories as needed.  (sftp
-      does not appear to support recursive uploads however, so the
-      directories had to be made by hand, as shown above).
+      (see step 25 above).  Then upload and rename the directories as
+      needed.  (sftp does not appear to support recursive uploads
+      however, so the directories had to be made by hand, as shown above).
 
          cd as
-        lcd <build-dir>/gas/doc/as.html
-        put *      {be patient - this takes a long time...}
-        cd ../bfd
-        lcd ../../../bfd/doc/bfd.html
+        lcd <build-dir>/gas/doc/as
+        put *                {be patient - this takes a long time...}
+        lcd ..
+        cd ..
+        put as.html
+        put as.pdf
+        cd bfd
+        lcd ../../bfd/doc/bfd
         put *
-        cd ../binutils
-        lcd ../../../binutils/doc/binutils.html
+        cd ..
+        lcd ..
+        put bfd.html
+        put bfd.pdf
+        cd binutils
+        lcd ../../binutils/binutils      <=== NB/ Path not like others
         put *
-        cd ../gprof
-        lcd ../../../gprof/gprof.html
+        cd ..
+        lcd ../doc
+        put binutils.html
+        put binutils.pdf
+        cd gprof
+        lcd ../../gprof/doc/gprof
         put *
-        cd ../ld
-        lcd ../../ld/ld.html
+        cd ..
+        lcd ../..
+        put gprof.html
+        put gprof.pdf
+        cd ld
+        lcd ../ld/doc/ld
         put *
+        cd ..
+        lcd ../..
+        put ld.html
+        put ld.pdf
         
       Edit the top level binutils index.html file to change the links
       to point to the new documentation.
@@ -368,7 +429,7 @@ Cheers
       David Edelsohn <dje.gcc@gmail.com> announcing the new release.
       Sign the email and include the checksum:
 
-          sha256sum binutils-2.3x.tar.*
+          sha256sum binutils-2.3*.tar.*
 
       (The email to Davis is so that he can update the GNU Toolchain
       social media).  Something like this:
@@ -388,6 +449,12 @@ Cheers
 
           <extract info from the NEWS files>
 
+        For more information see:
+       
+          https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;a=blob_plain;f=gas/NEWS;;hb=refs/tags/binutils-2_39
+          https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;a=blob_plain;f=ld/NEWS;hb=refs/tags/binutils-2_39
+          https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;a=blob_plain;f=binutils/NEWS;hb=refs/tags/binutils-2_39
+
         Our thanks go out to all of the binutils contributors, past and
         present, for helping to make this release possible.
 
@@ -446,39 +513,43 @@ looks like this:
        a. Update the minor release number in bfd/version.m4.
        b. Edit bfd/development.sh, set "development=false".
        c. Regenerate the configure files.
-       c.1. Remove spurious autom4te.cache files:
+       d. Remove spurious autom4te.cache files:
 
-          find . -depth -name autom4te.cache -exec rm -r {} \;
+          git clean -fdx
          
-       d. Commit the updates along with a "this-is-the-2.3x.y-release"
+       e. Commit the updates along with a "this-is-the-2.3x.y-release"
           note in all of the changelogs.
-       e. Tag the branch with the new release number:
+       f. Tag the branch with the new release number:
 
             git tag -a binutils-2_3x_y
              [optional: add "-u XXXXX" to sign with a gpg key]
            git push origin binutils-2_3x_y
 
-       f. Check that your file creation mask will create the
-          correct file permissions.  Eg:
+       g. Check that your file creation mask will create the
+          correct file permissions.  Ie:
 
            umask 022
 
-       g. Create the release tarballs:
+       h. Create the release tarballs:
        
             ./src-release -b -g -l -x binutils
 
-       h. Check that the files in the tarballs have the correct
+       i. Check that the files in the tarballs have the correct
           permissions.
 
-       i. Edit bfd/development.sh and set "development=true".
-       j. Commit this change into the git repository.
+       j. Clean the source tree again
+       
+           git clean -fdx
+         
+       k. Edit bfd/development.sh and set "development=true".
+       l. Commit this change.
 
   4. [If paranoid - upload the tarballs to one of the FTP servers and
       ask people to test it before going on to step 5].
 
   5. Upload the tarballs to ftp.gnu.org.
 
-       gnupload --to ftp.gnu.org:binutils binutils-2.3x.y.tar.*
+       gnupload --to ftp.gnu.org:binutils binutils-*.tar.*
 
      The gnupload script is in the gnulib/build-aux directory.
 
@@ -486,8 +557,8 @@ looks like this:
 
        sftp sourceware.org
          cd /sourceware/ftp/pub/binutils/releases
-        put binutils-2.3x.y.tar.*
-        chmod 644 binutils-2.3x.y.tar.*
+        put binutils-*.tar.*
+        chmod 644 binutils-*.tar.*
         quit
 
     It is OK to upload the signatures as well.
@@ -496,7 +567,7 @@ looks like this:
 
       * Log on to sourceware.org
       * Go to /sourceware/www/sourceware/htdocs/binutils
-      * Edit index.html
+      * Edit index.html and update the latest release number (if this is a latest release)
 
       For the www.gnu.org site you have to email webmasters@gnu.org
       and ask them to make the change(s).
@@ -535,16 +606,8 @@ Hi Everyone,
      And a new milestone too:
 
        https://sourceware.org/bugzilla/editmilestones.cgi?product=binutils
-
- 10. Clean up the source tree.
-       
-            git clean -dfx .
-
- 11. Edit bfd/development.sh on the branch and set the development flag
-     to "true".  Commit this change.
-
 \f
-Copyright (C) 2017-2021 Free Software Foundation, Inc.
+Copyright (C) 2017-2022 Free Software Foundation, Inc.
 
 Copying and distribution of this file, with or without modification,
 are permitted in any medium without royalty provided the copyright