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