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