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