diff --git a/web/devel/creating-a-release.org b/web/devel/creating-a-release.org index a974fdd..f84f352 100644 --- a/web/devel/creating-a-release.org +++ b/web/devel/creating-a-release.org @@ -1,249 +1,249 @@ #+TITLE: GnuPG Hacking - Creating a Release #+STARTUP: showall indent #+SETUPFILE: "share/setup.inc" * Creating a Release This is a description of the steps necessary to build a software release of GnuPG and related software. ** Overview of the Build System FIXME ** Stuff required A Unix system, preferable Debian because that is what we use for our development. ** Release Planning If you are planning a new release and strings have changed you should send a notification to all translators, so that they have time to update their translations. The script ~build-aux/mail-to-translators~ in the gnupg-repo might be useful for this. You need to edit it to actually send out something. ** Step by Step *** Make sure that all new PO files are checked in. *** Decide whether you want to update the automake standard files These are mainly the files ~config.guess~ and ~config.sub~. In -general these files should be the same for all package. Do not update +general these files should be the same for all packages. Do not update them for each release because having consistent files in all packages can avoid bug reports due to different cpu-vendor-os strings Commit these changes. *** Update the translation files Run: : make -C po update-po This merges the latest changes into the po files and disable entries which do not anymore match. The latter is important for example to avoid mismatches in printf format strings. You should then commit the changes using a subject of "po: Auto update". *** Update the LT version This affects only library packages. The libtool version (LT version) is updated only right before a release. The configure.ac file has comments on how to update them. Note that libraries which come with language bindings may have several independent LT version. FIXME: Describe why and how they are to be updated. *** Write NEWS entries Remember to set the release date in the NEWS file. For libraries it is suggested to note the LT version as well. Use the format "Cz/Ay/Rz" to give the Current/Age/Release numbers. *** Check README and doc files You may for example want to update the version information and make sure that they still have correct information. Files you should look at are for example: - README - AUTHORS - src/versioninfo.rc.in (Windows) *** Commit all changes with a subject of "Release m.n.o." This is the final commit which has all changes for the version. Do not push this commit. *** Create a signed tag with the name "foo-m.n.o". The git tag needs to be signed. We use hardware tokens to hold the signing key. The command to do this is : git tag -u KEYID foo-m.n.o You will be asked for a message. Put a funny message or better the main feature of this release into the commit log message. Do not push this tag. In case you need to restart the release process, you should first remove the tag (=git tag -d foo-m.n.o=) and then also revert the last commit. *** Recreate the configure script : ./autogen.sh --force The option =--force= is required for the git magic in configure.ac to work properly. This calls autoconf and automake and does some M4 magic to encode the the version number and information from Git into the new configure script. Note that the created =configure= script may not be tracked by Git. *** Build a release tarball This is easy: : ./configure --enable-maintainer-mode : make distcheck it is suggested to run the latter inside Emacs so that the compile log can be viewed for errors. FIXME: Explain why and how to use a VPATH build. *** Build and test the release This is best done on a different machine. Make sure to also build the Windows version so that you won't run into a surprise when building a Windows versions later. Keep a test build available for later. *** Sign the tarball Also store the created .swdb file away. *** Copy the tarball to a staging area *** Update the webpages At least the file swdb.mac needs an update. This is done using the saved swdb. *** Prepare for the next release - Add a new headline to NEWS. - Bump the version number in configure.ac up (Do not bump the LT version, though) - Commit with a subject "Post release updates" or similar. *** Push all changes Do not forget to push also the tags. In case you run into a conflict you need to start from scratch. That is removing the last two commits from your local copy, removing the tag, merge the changes, and to to the first step. Make sure that the version and LT version numbers are correct for the second try. To avoid this problem it is often better to work on a release branch and later merge the changes back to master. *** Copy the files from the staging area to the FTP server *** Update the online docs Using the final test build run a "make -C doc online". *** Write an announcement. ** Notes on some packages Here are some gotchas for certain packages *** GnuPG - Check that https://savannah.gnu.org/projects/gnupg is up to date. This is a simple page which merely points to gnupg.org, though. *** GnuPG Windows Installer To build a GnuPG >= 2.1 installer you need to change to a working directory, for example: : cd ~/b-w32/speedo then cleanup and unpack the GnuPG source: : rm -r PLAY PLAY-release : tar xjf /foo/bar/gnupg-m.n.o.tar.gz run a script which does about everything: : make -f gnupg-m.n.o/build-aux/speedo.mk w32-release finally you should sign the created installer using: : make -f gnupg-m.n.o/build-aux/speedo.mk w32-sign-installer and also sign them using your release key: : gpg -sbvu MYKEY gnupg-w32-m.n.o_YYYYMMDD.tar.xz : gpg -sbvu MYKEY gnupg-w32-m.n.o_YYYYMMDD.exe You will end up with these files: - gnupg-w32-m.n.o_YYYYMMDD.tar.xz - gnupg-w32-m.n.o_YYYYMMDD.tar.xz.sig - gnupg-w32-m.n.o_YYYYMMDD.exe - gnupg-w32-m.n.o_YYYYMMDD.exe.sig - gnupg-w32-m.n.o_YYYYMMDD.exe.swdb Use the swdb file to update the swdb.mac and distribute tye other files (after testing). *** Libgcrypt *** GPGME - As of version 1.9 build problems in "make distcheck" for the Python bindings may turn up. The workaround is to use a fresh build directory. ** Pitfalls Sometimes you may run into problems without seeing the actual problem. Here is a list of such things *** Permission problem moving "xx.new.po" to "xx.po" If during "make distcheck" you get an error about a permission problem moving foo.new.po to foo.po; this is caused by a check whether the po files can be re-created. Now if the first tarball has been created in a different top directory and if there exists a no distributed file with the string "GNU gnupg" (e.g. a log file from running make) you end up with different comments in the po files. Check out /usr/lib/gettext/project-id for that silliness. As a hack we added this string into configure.ac. diff --git a/web/swdb.mac b/web/swdb.mac index 903dd57..1d806dc 100644 --- a/web/swdb.mac +++ b/web/swdb.mac @@ -1,216 +1,216 @@ # Version information # Please run make in this directory after changing this file. # # Primary FTP server base directory # #+macro: ftp_base ftp://ftp.gnupg.org/gcrypt #+macro: ftp_loc_base /ftp/gcrypt # # GnuPG-2.2 # -#+macro: gnupg22_ver 2.2.15 -#+macro: gnupg22_date 2019-03-26 -#+macro: gnupg22_size 6548k -#+macro: gnupg22_sha1 1909afdad3cf29583126c471298da290399270f4 -#+macro: gnupg22_sha2 cb8ce298d7b36558ffc48aec961b14c830ff1783eef7a623411188b5e0f5d454 +#+macro: gnupg22_ver 2.2.16 +#+macro: gnupg22_date 2019-05-28 +#+macro: gnupg22_size 6542k +#+macro: gnupg22_sha1 f956c8cebee3a6ddb2ce6e6e058d474d056dd9e0 +#+macro: gnupg22_sha2 6cbe8d454bf5dc204621eed3016d721b66298fa95363395bb8eeceb1d2fd14cb #+macro: gnupg22_branch STABLE-BRANCH-2-2 -#+macro: gnupg22_w32_ver 2.2.15_20190326 -#+macro: gnupg22_w32_date 2019-03-26 -#+macro: gnupg22_w32_size 4078k -#+macro: gnupg22_w32_sha1 f5f7eeadfdf6ad971b5313f045083b4f95ace07b -#+macro: gnupg22_w32_sha2 24d003adaacdbb16047a3e08fdb40b855f7ecdedc28435c767c88493260d6b25 +#+macro: gnupg22_w32_ver 2.2.16_20190528 +#+macro: gnupg22_w32_date 2019-05-28 +#+macro: gnupg22_w32_size 4183k +#+macro: gnupg22_w32_sha1 caf09d6e0e47d87675f1805409a503ce0cf93a4e +#+macro: gnupg22_w32_sha2 7d917439061cc0310ffda8e8ad1059f0431eac31df624708b9eeb28faddaaf5c # # GnuPG 2.0 (end-of-life) # #+macro: gnupg20_ver 2.0.31 #+macro: gnupg20_date 2017-12-29 #+macro: gnupg20_size 4324k #+macro: gnupg20_sha1 a7d5021a6a39dd67942e00a1239e37063edb00f0 #+macro: gnupg20_sha2 095558cfbba52fba582963e97b0c016889570b4712d6b871abeef2cf93e62293 #+macro: gnupg20_branch STABLE-BRANCH-2-0 # # GnuPG-1 # #+macro: gnupg1_ver 1.4.23 #+macro: gnupg1_date 2018-06-11 #+macro: gnupg1_size 3661k #+macro: gnupg1_sha1 13747486ed5ff707f796f34f50f4c3085c3a6875 #+macro: gnupg1_sha2 c9462f17e651b6507848c08c430c791287cd75491f8b5a8b50c6ed46b12678ba # #+macro: gnupg1_w32cli_ver 1.4.23 #+macro: gnupg1_w32cli_size 2376k #+macro: gnupg1_w32cli_sha1 d4c9962179d36a140be72c34f34e557b56c975b5 # # Gpg4win # #+macro: gpg4win_ver 3.1.7 #+macro: gpg4win_date 2019-03-28 #+macro: gpg4win_src_size 5298k #+macro: gpg4win_src_sha1 8e5311fe3e8201ebf7a102d7952d147701a5dac3 #+macro: gpg4win_src_sha2 1bc9ea9f2703cfe6878885507bb8d35a5a98cbda69ebe6bdbe909dd11d764e7f #+macro: gpg4win_exe_size 28188k #+macro: gpg4win_exe_sha1 bd1d8a11b71dc8ef4ea856ffac0440d9005a9c40 #+macro: gpg4win_exe_sha2 ba2c4ac4cf9a44e19611f86ece4bafa71a5ef02553a1652a73b9037c74608b69 #+macro: gpg4win_isrc_size 227660k #+macro: gpg4win_isrc_sha1 63644661a59ada50d33edbf986c4357e39fb8857 #+macro: gpg4win_isrc_sha2 d559a128bb983bb4241c4c1ac1657bcc8d3eea180af4166bd4a12eaad4f4f399 # # GPA # #+macro: gpa_ver 0.10.0 #+macro: gpa_date 2018-10-16 #+macro: gpa_size 745k #+macro: gpa_sha1 61475989acd12de8b7daacd906200e8b4f519c5a #+macro: gpa_sha2 95dbabe75fa5c8dc47e3acf2df7a51cee096051e5a842b4c9b6d61e40a6177b1 # # PINENTRY # #+macro: pinentry_ver 1.1.0 #+macro: pinentry_date 2017-12-03 #+macro: pinentry_size 456k #+macro: pinentry_sha1 693bdf9f48dfb3e040d92f50b1bb464e268b9fb0 #+macro: pinentry_sha2 68076686fa724a290ea49cdf0d1c0c1500907d1b759a3bcbfbec0293e8f56570 # # GPGME # #+macro: gpgme_ver 1.13.0 #+macro: gpgme_date 2019-03-26 #+macro: gpgme_size 1777k #+macro: gpgme_sha1 4653b273fd2820ba4d5f382474b3e79a9367beb9 #+macro: gpgme_sha2 d4b23e47a9e784a63e029338cce0464a82ce0ae4af852886afda410f9e39c630 # # LIBGCRYPT # #+macro: libgcrypt_ver 1.8.4 #+macro: libgcrypt_date 2018-10-26 #+macro: libgcrypt_size 2920k #+macro: libgcrypt_sha1 4a8ef9db6922f3a31992aca5640b4198a69b58fc #+macro: libgcrypt_sha2 f638143a0672628fde0cad745e9b14deb85dffb175709cacc1f4fe24b93f2227 # # LIBKSBA # #+macro: libksba_ver 1.3.5 #+macro: libksba_date 2016-08-22 #+macro: libksba_size 606k #+macro: libksba_sha1 a98385734a0c3f5b713198e8d6e6e4aeb0b76fde #+macro: libksba_sha2 41444fd7a6ff73a79ad9728f985e71c9ba8cd3e5e53358e70d5f066d35c1a340 # # DirMngr (not any longer needed) # #+macro: dirmngr_ver 1.1.1 #+macro: dirmngr_date 2013-04-26 #+macro: dirmngr_size 554k #+macro: dirmngr_sha1 e708d4aa5ce852f4de3f4b58f4e4f221f5e5c690 # # LIBGPG-ERROR (aka GPGRT) # #+macro: libgpg_error_ver 1.36 #+macro: libgpg_error_date 2019-03-19 #+macro: libgpg_error_size 898k #+macro: libgpg_error_sha1 5245ce38b198cecd57775fb3c7b7328ec1a2a615 #+macro: libgpg_error_sha2 babd98437208c163175c29453f8681094bcaf92968a15cafb1a276076b33c97c #+macro: gpgrt_ver 1.36 #+macro: gpgrt_date 2019-03-19 #+macro: gpgrt_size 898k #+macro: gpgrt_sha1 5245ce38b198cecd57775fb3c7b7328ec1a2a615 #+macro: gpgrt_sha2 babd98437208c163175c29453f8681094bcaf92968a15cafb1a276076b33c97c # # LIBASSUAN # #+macro: libassuan_ver 2.5.3 #+macro: libassuan_date 2019-02-11 #+macro: libassuan_size 558k #+macro: libassuan_sha1 6d81bf42fa91ed2894df8b65764ce899e39776f8 #+macro: libassuan_sha2 91bcb0403866b4e7c4bc1cc52ed4c364a9b5414b3994f718c70303f7f765e702 # # NTBTLS # #+macro: ntbtls_ver 0.1.2 #+macro: ntbtls_date 2017-09-19 #+macro: ntbtls_size 334k #+macro: ntbtls_sha1 05cf57cd8400b338b94bdce7287397c24315ac49 #+macro: ntbtls_sha2 8240db84e50c2351b19eb8064bdfd4d25e3c157d37875c62e335df237d7bdce7 # # nPth # #+macro: npth_ver 1.6 #+macro: npth_date 2018-07-16 #+macro: npth_size 293k #+macro: npth_sha1 f9d63e9747b027e4e404fe3c20c73c73719e1731 #+macro: npth_sha2 1393abd9adcf0762d34798dc34fdcf4d0d22a8410721e76f1e3afcd1daa4e2d1 # # GpgEX # #+macro: gpgex_ver 1.0.6 #+macro: gpgex_date 2018-04-10 #+macro: gpgex_size 297k #+macro: gpgex_sha1 443270219d542f97b6f124d2101ae8d803c6dbe2 #+macro: gpgex_sha2 d69898d1022400bd09bb684080edc95be554af736ae9c014df73543f34f7481b # # GpgOL # #+macro: gpgol_ver 2.3.3 #+macro: gpgol_date 2019-03-26 #+macro: gpgol_size 782k #+macro: gpgol_sha1 06d57c39b70fada4a69539205cc93cbe7add21a9 #+macro: gpgol_sha2 2a25388d58ae7d5630c0f2211dcfb40d18f4f058765721df424b0240c4dec9f0 # # ADNS # #+macro: adns_ver 1.4-g10-7 #+macro: adns_date 2015-11-20 #+macro: adns_sha1 d2e089d98d3faed6cad009477cc0bc030b35c646 # # zlib (mirrored at our server) # #+macro: zlib_ver 1.2.8 #+macro: zlib_sha1_gz a4d316c404ff54ca545ea71a27af7dbc29817088 # # bzip2 (mirrored and stripped down version) # #+macro: bzip2_ver 1.0.6-g10 #+macro: bzip2_sha1_gz 6e38be3377340a21a1f13ff84b5e6adce97cd1d4 # # SQLite (mirrored at our server) # #+macro: sqlite_ver 3280000 #+macro: sqlite_sha1_gz 01b9d8fc77085e144dddc87456c9783e53d09a53 # --- end of swdb.mac ---