Release process document improvements.
authorTimothy B. Terriberry <tterribe@xiph.org>
Wed, 19 Sep 2018 01:21:27 +0000 (18:21 -0700)
committerTimothy B. Terriberry <tterribe@xiph.org>
Wed, 19 Sep 2018 01:21:27 +0000 (18:21 -0700)
Fleshed out/clarified some steps from the experience of making the
 0.11 release.

doc/release.txt

index 8fe74d1..43d1dbe 100644 (file)
@@ -4,6 +4,9 @@ Source release:
 
 - Update OP_LT_* API versioning in configure.ac.
 - Check for uncommitted changes to master.
+- Prepare win32 binaries
+  - Do this before tagging the release, as it may require changes which should
+    be committed
 - Tag the release commit with 'git tag -s vN.M'.
   - Include release notes in the tag annotation.
 - Verify 'make distcheck' produces a tarball with
@@ -25,7 +28,11 @@ tag on the github mirror https://github.com/xiph/opusfile/releases
 
 Win32 binaries:
 
-- Assuming the mingw cross toolchain:
+- Install cross-i686-w64-mingw32-gcc and associated binutils.
+  - If you skip this step, libopus will still try to build with the system gcc
+    and then fail to link.
+- Edit mingw/Makefile to point to the latest versions of libogg. opus, openssl
+  (see <https://archive.mozilla.org/pub/opus/>, checksums in SHA256SUMS.txt)
 - run `make -C mingw`
   - Downloads versions of libogg, opus, openssl.
   - Compiles them.
@@ -37,6 +44,8 @@ Win32 binaries:
 - Add api docs to opus-codec.org.
 - mkdir opusfile-${version}-win32
 - Copy AUTHORS COPYING README.md include/opusfile.h to the release dir.
+  - Don't put opusfile.h in an opusfile-${version}-win32/include directory,
+    just put it straight in the release dir.
 - Merge changes between README.md and the version in the last
   binary release. E.g. it's good to include versions of the dependencies,
   release notes, etc.
@@ -44,14 +53,19 @@ Win32 binaries:
 - Copy .libs/libopusfile-0.dll to the release dir.
 - Copy .libs/libopusfile.a to the release dir.
 - Copy .libs/libopusfile.dll.a to the release dir. (May not be needed?)
-- Copy ./lib/libopusurl-0.dll, etc. to the release dir.
-- Copy ./bin/*.dll to the release dir for dependencies.
+- Copy .libs/libopusurl-0.dll to the release dir.
+- Copy .libs/libopusurl.a to the release dir.
+- Copy .libs/libopusurl.dll.a to the release dir. (May not be needed?)
+- Copy mingw/bin/*.dll to the release dir for dependencies.
 - Copy any other dependent dlls, e.g. on Fedora 23 I needed to copy
     /usr/i686-w64-mingw32/sys-root/mingw/bin/libgcc_s_sjlj-1.dll
     /usr/i686-w64-mingw32/sys-root/mingw/bin/libwinpthread-1.dll
+  On Gentoo I needed to copy
+    /usr/lib64/gcc/i686-w64-mingw32/7.3.0/libgcc_s_sjlj-1.dll
+  TODO: It may be possible to avoid this with CFLAGS="-static-libgcc"
 - Copy doc/latex/refman.pdf to opusfile-${version}-win32/opusfile-${version}.pdf
 - Copy examples/.libs/*.exe to the release dir.
-- Strip *.dll *.a *.exe in the release dir.
+- Run "i686-w64-ming32-strip *.dll *.a *.exe" in the release dir.
 - In the release dir, run:
     sha256sum * > SHA256SUMS.txt
     gpg --detach-sign --armor SHA256SUMS.txt