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