365 lines
13 KiB
Plaintext
365 lines
13 KiB
Plaintext
README for MAKING BINUTILS RELEASES
|
||
|
||
This is a collection of notes on how to perform a binutils release. A
|
||
lot of this information can also be found in the maintain.texi file in
|
||
the gnulib project:
|
||
|
||
https://www.gnu.org/software/gnulib/
|
||
|
||
It is useful to have a cloned copy of the sources of this project as
|
||
it also contains an upload script used to install tarballs on the GNU
|
||
FTP server.
|
||
|
||
Make sure that you have upload authority on sourceware and fencepost.
|
||
Beware - this is an involved process and can take weeks to complete.
|
||
See the maintain.texi file for details on how to obtain these
|
||
permissions.
|
||
|
||
-------------------------------------------------
|
||
How to perform a release.
|
||
-------------------------------------------------
|
||
|
||
1. Send an email out warning contributors about the forthcoming
|
||
branch. Set a date for the branch (weekends are better because
|
||
they are less busy).
|
||
|
||
2. When the branch date is near: Update the libiberty and config
|
||
directories and the top level configure files.
|
||
|
||
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.
|
||
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
|
||
|
||
5. Update "BINUTILS_BRANCH" in gdbadmin's crontab:
|
||
|
||
Log in as gdbadmin on sourceware.org, and then:
|
||
|
||
$ cd crontab
|
||
$ vi crontab
|
||
[change BINUTILS_BRANCH]
|
||
$ cvs ci crontab
|
||
$ crontab crontab
|
||
|
||
If you do not have access to this account, please feel free to
|
||
ask Joel Brobecker <brobecker AT adacore DOT com>.
|
||
|
||
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)":
|
||
|
||
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.
|
||
|
||
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.
|
||
|
||
9. Create an initial prerelease:
|
||
|
||
a. Change the version on the branch (bfd/version.m4), regenerate
|
||
the files, and check this in.
|
||
|
||
b. Create a source tarball of the branch sources:
|
||
|
||
./src-release -x binutils
|
||
|
||
c. Build a test target using this tarball.
|
||
|
||
d. Upload the prerelease snapshot to the FTP:
|
||
|
||
scp ../binutils-$version.tar.xz sourceware.org:~ftp/pub/binutils/snapshots
|
||
ssh sourceware.org md5sum ~ftp/pub/binutils/snapshots/binutils-$version.tar.xz
|
||
|
||
10. Send it to the Translation Project:
|
||
|
||
http://translationproject.org/html/maintainers.html
|
||
|
||
Sending mail for one of the POT files is sufficient.
|
||
|
||
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:
|
||
|
||
git clone git://sourceware.org/git/binutils-gdb.git -b binutils-2_XX-branch 2.XX
|
||
|
||
A snapshot of the sources is also available here:
|
||
|
||
ftp://sourceware.org/pub/binutils/snapshots/binutils-2.XX.0.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.
|
||
------------------------------------------------------------------------
|
||
|
||
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. Make sure that the branch sources still build, test and install
|
||
correctly.
|
||
|
||
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.29.90" becomes "2.30". Change bfd/development.sh
|
||
to set the value to "false". Regenerate the configure and
|
||
makefiles. Add changelog entries for the updates and add a
|
||
"this-is-the-2.XX-release" commit and commit. Make sure to
|
||
include the .gmo files.
|
||
|
||
22. Check that your file creation mask will create the
|
||
correct file permissions. Eg:
|
||
|
||
umask 022
|
||
|
||
23. Create the release tarballs:
|
||
|
||
./src-release -b -g -l -x binutils
|
||
|
||
24. Check that the files in the tarballs have the correct
|
||
permissions. FIXME: The tarballs will contain spurious
|
||
autom4te.cache directories which could be removed to reduce
|
||
their size.
|
||
|
||
25. Sanity check the release on x86_64-pc-linux-gnu by building and
|
||
running the testsuite. Make the source directory read-only
|
||
before building. Also test "make install". If necessary fix
|
||
any problems.
|
||
|
||
26. Tag the branch with the new release number:
|
||
|
||
git tag -a binutils-2_XX
|
||
[optional: add "-u XXXXX" to sign with a gpg key]
|
||
git push origin binutils-2_XX
|
||
|
||
NB/ If you do sign the binaries make sure to use a key
|
||
that has been published with the FSF.
|
||
|
||
27. Clean up the source tree. (Use "git status" to find new
|
||
files, and remove them).
|
||
|
||
28. Edit bfd/development.sh on the branch and set
|
||
"development=true". Also bump the version by adding a trailing
|
||
.0, so that the date suffix keeps the version lower than the
|
||
trunk version. Regenerate files. Commit these changes.
|
||
|
||
29. Upload the tarballs to ftp.gnu.org.
|
||
|
||
gnupload --to ftp.gnu.org:binutils binutils-X.XX.tar.*
|
||
|
||
The gnupload script is in the gnulib/build-aux directory.
|
||
|
||
Check for an email response from the upload. If necessary
|
||
fix any problems.
|
||
|
||
30. Upload the tarballs (and signatures) to sourceware.org:
|
||
|
||
sftp sourceware.org
|
||
cd /sourceware/ftp/pub/binutils/releases
|
||
put binutils-X.XX.tar.*
|
||
chmod 644 binutils-X.XX.tar.*
|
||
quit
|
||
|
||
FIXME: Should the signatures (created by the gnupload script in
|
||
step 29) be uploaded as well ?
|
||
|
||
31. Update web pages. For sourceware.org:
|
||
|
||
Create a new documentation folder on the sourceware.org web
|
||
pages as /sourceware/www/sourceware/htdocs/binutils/docs-X.XX.
|
||
Make the html documentation locally with the "make html" command
|
||
and then upload and rename the directories as needed. Create an
|
||
index.html file and then edit the docs link to point to the new
|
||
docs-X.XX directory.
|
||
|
||
Update the sourceware.org site to point to the new documentation
|
||
and mention the new version.
|
||
|
||
For the www.gnu.org site you have to email webmasters@gnu.org
|
||
and ask them to make the change(s).
|
||
|
||
32. Send emails to binutils@sourceware.org, info-gnu@gnu.org and
|
||
David Edelsohn <dje.gcc@gmail.com> announcing the new release.
|
||
Sign the email and include the checksum.
|
||
(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 of the 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:
|
||
|
||
<extract info from the NEWS files>
|
||
|
||
Our thanks go out to all of the binutils contributors, past and
|
||
present, for helping to make this release possible.
|
||
|
||
--------------------------------------------------------------------------
|
||
|
||
-------------------------------------------------
|
||
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
|
||
translations updated and the documentation uploaded. So the procedure
|
||
looks like this:
|
||
|
||
0. Decide that a point release is necessary.
|
||
|
||
Usually this only happens when a sufficient number of serious
|
||
bugs have been found and fixed since the previous release, and a
|
||
new official release is not imminent.
|
||
|
||
1. Tell the community that a point release is happening. Ask
|
||
maintainers to ensure that their ports are up to date on the
|
||
release branch. Ask the community if there are any bug fixes
|
||
which are missing from the branch. Allow some time for the
|
||
responses to this step.
|
||
|
||
2. Make sure that the branch sources build, test and install
|
||
correctly.
|
||
|
||
2.5 Prepare a list of the bugs which have been fixed. This
|
||
will be needed for step 8.
|
||
|
||
3. In the branch sources:
|
||
|
||
a. Update the minor release number in bfd/version.m4.
|
||
b. Edit bfd/development.sh and set "development=false".
|
||
c. Regenerate the configure files.
|
||
d. Commit the updates along with a "this-is-the-2.XX.X-release"
|
||
note in all of the changelogs.
|
||
e. Tag the branch with the new release number:
|
||
|
||
git tag -a binutils-2_XX_X
|
||
[optional: add "-u XXXXX" to sign with a gpg key]
|
||
git push origin binutils-2_XX_X
|
||
|
||
f. Check that your file creation mask will create the
|
||
correct file permissions. Eg:
|
||
|
||
umask 022
|
||
|
||
g. Create the release tarballs:
|
||
./src-release -b -g -l -x binutils
|
||
|
||
h. 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.
|
||
|
||
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.*
|
||
|
||
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.*
|
||
quit
|
||
|
||
FIXME: Should the signatures (created by the gnupload script in
|
||
step 5) be uploaded as well ?
|
||
|
||
7. Update web pages. For sourceware.org:
|
||
|
||
* Log on to sourceware.org
|
||
* Go /www/htdocs/binutils
|
||
* Edit index.html
|
||
|
||
For the www.gnu.org site you have to email webmasters@gnu.org
|
||
and ask them to make the change(s).
|
||
|
||
8. Send an emails to the binutils list, info-gnu@gnu.org and
|
||
David Edelsohn <dje.gcc@gmail.com> 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:
|
||
|
||
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
|
||
fixes but no new features.
|
||
|
||
Our thanks go out to all of the binutils contributors, past and
|
||
present, for helping to make this release possible.
|
||
|
||
Here is a list of the bugs that have been fixed:
|
||
xx
|
||
xx
|
||
xx
|
||
xx
|
||
--------------------------------------------------------------------------
|
||
|
||
|
||
Copyright (C) 2017-2018 Free Software Foundation, Inc.
|
||
|
||
Copying and distribution of this file, with or without modification,
|
||
are permitted in any medium without royalty provided the copyright
|
||
notice and this notice are preserved.
|