X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=binutils%2FREADME-how-to-make-a-release;h=9fcebf5f0a4b335ee7a8c2fe6b0b47951676c5e5;hb=f4492fb683013d7de6f4788df6deb24fed8671b4;hp=d378c2c01995ad8fd82bf97995015fd83789a0fb;hpb=94c2436bb8aaafc4f85130755c63c11b985df6d2;p=binutils-gdb.git diff --git a/binutils/README-how-to-make-a-release b/binutils/README-how-to-make-a-release index d378c2c0199..9fcebf5f0a4 100644 --- a/binutils/README-how-to-make-a-release +++ b/binutils/README-how-to-make-a-release @@ -24,25 +24,46 @@ How to perform a release. they are less busy). 2. When the branch date is near: Update the libiberty and config - directories and the top level configure files. + directories and the top level Makefile and configure files. Also + consider updating the toplevel libtool files. + + +Approx time to complete from here: 2 hours .... 3. When branch day arrives add markers for the upcoming release to - gas, ld, gold and binutils NEWS files. - [If using the make-prerelease.sh script, check that - common.sh has the right values]. - [make-prelease.sh command i] - [make-prelease.sh command C] - Likewise for all of the ChangeLog files. + the NEWS files in gas, ld, and binutils. No need to update NEWS + 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, libiberty, opcodes + and toplevel. + Add a note of the name of the new branch to binutils/BRANCHES. + Commit these changes. - [make-prerelease.sh command C] 4. Create the release branch using: - git tag -a binutils-2_30-branch [e.g. for the 2.30 branch...] - git push --tags origin binutils-2_30-branch + git branch binutils-2_40-branch + git push origin binutils-2_40-branch + + If you get a message like: + + remote: fatal: Invalid revision range 0000000000000000000000000000000000000000..f974f26cb16cc6fe3946f163c787a05e713fb77b + + It appears that this can be ignored... + + 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_40-branch 2.40 + + If you get a message about being in a "detached head" state, something + has gone wrong... + + Keep the checked out sources - they are going to be needed in future + steps. - 5. Update "BINUTILS_BRANCH" in gdbadmin's crontab: + 6. Update "BINUTILS_BRANCH" in gdbadmin's crontab: Log in as gdbadmin on sourceware.org, and then: @@ -55,99 +76,414 @@ How to perform a release. If you do not have access to this account, please feel free to ask Joel Brobecker . - 6. Update bfd/configure and bfd/configure.ac on HEAD to indicate - snapshot of the following release. - [make-prerelease.sh command hv + C] - 7. Rename the current HEAD version entry in Bugzilla, and create a - new one. E.g. rename "2.30 (HEAD)" to 2.30, and create "2.31 - (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 the release number in bfd/version.m4 for the mainline and - the branch. The mainline should have the minor number - incremented, but the branch only needs the point value set to 90 - as the release has not actually happened yet. + 8. Update bfd/version.m4 on HEAD to indicate that is now a snapshot + 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.39.90]) + + and the mainline has: + + m4_define([BFD_VERSION], [2.40.50]) Regenerate various files on both branch and HEAD by configuring - with --enable-maintainer-mode. NB/ Remember to build gold and - gprof. Commit the changes. Make sure that this includes the - .pot files as well as the configure and makefiles. + 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" - 9. Create an initial prerelease: + Add ChangeLog entries for the updated files. Commit the changes. + Make sure that this includes the .pot files as well as the + configure and makefiles. - a. Change the version on the branch (bfd/version.m4), regenerate - the files, and check this in. + 9. Create an initial pre-release: - b. Create a source tarball of the branch sources: + a. Remove any auto-generated files, in order to force the + src-release script to rebuild them. + + cd + git clean -fdx + + 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. - d. Upload the prerelease snapshot to the FTP: + cp binutils-2.39.90.tar.xz /dev/shm + pushd /dev/shm + tar xvf binutils-2.39.90.tar.xz + mkdir build + cd build + ../binutils-2.39.90/configure --quiet --enable-gold + make + popd + + If there are problems, fix them. - scp ../binutils-$version.tar.xz sourceware.org:~ftp/pub/binutils/snapshots - ssh sourceware.org md5sum ~ftp/pub/binutils/snapshots/binutils-$version.tar.xz + d. Upload the pre-release snapshot to the sourceware FTP site: - 10. Send it to the Translation Project: + 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 - http://translationproject.org/html/maintainers.html + e. Clean up the source directory again. - Sending mail for one of the POT files is sufficient. + git clean -fdx + + 10. Tell the Translation Project where to find the new tarball. + + qv: https://translationproject.org/html/maintainers.html + +------------------------------------------------------------------------ +Dear Translation Project + + 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-2.39.90.tar.xz + + We hope to make the official release of the sources on the + although that could change if there are important bugs that need to + be fixed before the release. +------------------------------------------------------------------------ 11. Announce the availability of the snapshot and the branch on the binutils mailing list. Set a date for when the release will actually happen. Something like: - ------------------------------------------------------------------------ - Hi Everyone, - - The 2.XX branch has now been created: + +------------------------------------------------------------------------ +Hi Everyone, + + The branch has now been created: - git clone git://sourceware.org/git/binutils-gdb.git -b binutils-2_XX-branch 2.XX + git clone git://sourceware.org/git/binutils-gdb.git -b binutils--branch - A snapshot of the sources is also available here: + A snapshot of the sources is also available here: - ftp://sourceware.org/pub/binutils/snapshots/binutils-2.XX.0.tar.xz + https://sourceware.org/pub/binutils/snapshots/binutils-.90.tar.xz - Please could all patches for the branch be run by me. - The rules for the branch are: - - * No new features. - * Target specific bug fixes are OK. - * Generic bug fixes are OK if they are important and widely tested. - * Documentation updates/fixes are OK. - * Translation updates are OK. - * Fixes for testsuite failures are OK. - - Ideally I would like to make the release happen in two weeks time, - i.e. Saturday 27th Jan. Which I hope will be enough time for everyone - to get their final fixes in. - ------------------------------------------------------------------------ + Please could all patches for the branch be run by me. + The rules for the branch are: + + * No new features. + * Target specific bug fixes are OK. + * Generic bug fixes are OK if they are important and widely tested. + * Documentation updates/fixes are OK. + * Translation updates are OK. + * Fixes for testsuite failures are OK. + + Ideally I would like to make the release happen in two weeks time, + i.e. . Which I hope will be enough time for everyone + to get their final fixes in. +------------------------------------------------------------------------ 12. Build various different toolchains, test them and nag maintainers to fix any testsuite failures for their architectures... +============================================================================== When the time comes to actually make the release.... - 20. 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.29.90" becomes "2.30". Change bfd/development.sh - to set the value to "false". - + 20. Make sure that the branch sources still build, test and install + correctly. Make sure that the sources are clean, without any + patch files (.reg .orig *~) left over. -xxx -- fill in stuff here -- xxx + cd + 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. -------------------------------------------------- -How to perform a point release. -------------------------------------------------- + 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: + + 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: + + % umask + 22 + + Remove any spurious autom4te.cache files left over from the + reconfiguring: + + git clean -fdx + + 23. Note - check to see if any new files have been added to the top + level of the source directory, but which are not in the + DEVO_SUPPORT variable in the src-release.sh script. If they are + needed then add them. + + Create the release tarballs: + + ./src-release.sh -b -g -l -x binutils + + 24. Check that the files in the tarballs have the correct + 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. (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. + + pushd /dev/shm + mkdir delme + cd delme + tar xvf /binutils-2.*.tar.lz + chmod -R -w binutils-2.* + chmod +w binutils-2.*/gprofng/doc + mkdir build + cd build + ../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 install-gprofng + + # Needed for step 29... + 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 + + 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_40 + + 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. + + gnupload --to ftp.gnu.org:binutils binutils-2.3*.tar.* + + 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. + + 28. Upload the tarballs (and signatures) to sourceware.org: + + sftp sourceware.org + cd /sourceware/ftp/pub/binutils/releases + 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]. + + 29. Update web pages. For sourceware.org: + + Create a new documentation folder on the sourceware.org web + pages as /sourceware/www/sourceware/htdocs/binutils/docs-2.3x. + + sftp sourceware.org + cd /sourceware/www/sourceware/htdocs/binutils + mkdir docs-2.3x + cd docs-2.3x + mkdir as + mkdir bfd + mkdir binutils + mkdir gprof + mkdir ld + cd ../docs-2.3(x-1) + get index.html + + Update the (local copy of the) index.html file to point to the + new documentation and mention the new version and then upload it. + + cd ../docs-2.3x + put index.html + + Make the html documentation locally with the "make html" command + (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 /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 .. + lcd .. + put bfd.html + put bfd.pdf + cd binutils + lcd ../../binutils/binutils <=== NB/ Path not like others + put * + cd .. + lcd ../doc + put binutils.html + put binutils.pdf + cd gprof + lcd ../../gprof/doc/gprof + put * + 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. + + cd ../.. + get index.html + [edit] + put index.html + rm docs + ln -s docs-2.3x docs + quit + + Check that the new web page is correct: + + https://sourceware.org/binutils/ + + For the www.gnu.org site you have to email webmasters@gnu.org + and ask them to make the change(s): +--------------------------------------- +Hi FSF Webmasters, + + Please could the GNU Binutils webpage at: + +https://www.gnu.org/software/binutils/binutils.html + + be updated to indicate that there is now a newer version available + (2.3x). I have already updated the related page on the sourceware + website so this might be useful as a template: + +https://sourceware.org/binutils/ + + Thanks very much. + +Cheers +-------------------------------------- + + 30. Send emails to binutils@sourceware.org, info-gnu@gnu.org and + David Edelsohn announcing the new release. + Sign the email and include the checksum: + + sha256sum binutils-2.3*.tar.* + + (The email to Davis is so that he can update the GNU Toolchain + social media). Something like this: + ----------------------------------------------------------------------- + Hi Everyone, + + We are pleased to announce that version 2.3x of the GNU Binutils project + sources have been released and are now available for download at: + + https://ftp.gnu.org/gnu/binutils + https://sourceware.org/pub/binutils/releases/ + + checksums: xxxx + + This release contains numerous bug fixes, and also the + following new features: + + + + 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. + + ----------------------------------------------------------------------- + + 31. Clean up the source tree: + + git clean -fdx . + + 32. Edit bfd/development.sh on the branch and set the development flag + to "true". (Leave the experimental flag set to "false"). Also bump + the version in bfd/version.m4 by adding a trailing .0, so that the + date suffix keeps the version lower than the trunk version. + Regenerate files. Commit these changes. + + 33. Email the binutils list telling everyone that the 2.3x branch + is now open for business as usual and that patches no longer + need special approval. + + 34. Examine the bfd/config.bfd file in the mainline sources and move + any pending obsolete targets into the definitely obsolete + section. Create a changelog entry and commit. + + + + +-------------------------------------------------------------------------- +How to perform a POINT release. +-------------------------------------------------------------------------- A point release is easier than a normal release since a lot of the work has already been done. The branch has been created, the @@ -175,60 +511,63 @@ looks like this: 3. In the branch sources: a. Update the minor release number in bfd/version.m4. - b. Edit bfd/development.sh and set "development=false". + b. Edit bfd/development.sh, set "development=false". c. Regenerate the configure files. - d. Commit the updates along with a "this-is-the-2.XX.X-release" + d. Remove spurious autom4te.cache files: + + git clean -fdx + + 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_XX_X + git tag -a binutils-2_3x_y [optional: add "-u XXXXX" to sign with a gpg key] - git push origin binutils-2_XX_X + 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. - k. Clean up the source tree. (Use "git status" to find new - files, and remove them). - - FIXME: The tarballs will contain spurious autom4te.cache - directories which could be removed to reduce their size. + 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-X.XX.X.tar.* + gnupload --to ftp.gnu.org:binutils binutils-*.tar.* The gnupload script is in the gnulib/build-aux directory. 6. Upload the tarballs to sourceware.org: sftp sourceware.org - cd /ftp/pub/binutils/releases - put binutils-X.XX.X.tar.* - chmod 644 binutils-X.XX.X.tar.* + cd /sourceware/ftp/pub/binutils/releases + put binutils-*.tar.* + chmod 644 binutils-*.tar.* quit - FIXME: Should the signatures (created by the gnupload script in - step 5) be uploaded as well ? + It is OK to upload the signatures as well. 7. Update web pages. For sourceware.org: * Log on to sourceware.org - * Go /www/htdocs/binutils - * Edit index.html + * Go to /sourceware/www/sourceware/htdocs/binutils + * 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). @@ -237,16 +576,17 @@ looks like this: David Edelsohn announcing the new release. (The email to Davis is so that he can update the GNU Toolchain social media). Something like this: + ------------------------------------------------------------------------ Hi Everyone, - We are pleased to announce that version 2.XX.X of the Binutils project - sources have been released and are now available for download at: + We are pleased to announce that version 2.3x.y of the GNU Binutils + project sources have been released and are now available for download at: https://ftp.gnu.org/gnu/binutils https://sourceware.org/pub/binutils/releases/ - This is a point release over the previous 2.XX version, containing bug + This is a point release over the previous 2.3x version, containing bug fixes but no new features. Our thanks go out to all of the binutils contributors, past and @@ -259,8 +599,15 @@ Hi Everyone, xx -------------------------------------------------------------------------- + 9. Create a new Bugzilla entry for the point release. + + https://sourceware.org/bugzilla/editversions.cgi?product=binutils + + And a new milestone too: + + https://sourceware.org/bugzilla/editmilestones.cgi?product=binutils -Copyright (C) 2017-2018 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