blob: 34f64988ffc6b82df6de07252ea54db116e6473c [file] [log] [blame] [view]
ebraminio933a81d2017-10-01 19:35:24 +03301HarfBuzz release walk-through checklist:
2
31. Open gitk and review changes since last release.
4 * `git diff $(git describe | sed 's/-.*//').. src/*.h` prints all public API changes.
5
6 Document them in NEWS, All API and API semantic changes should be clearly
7 marked as API additions, API changes, or API deletions.
8 If there's a backward-incompatible API change (including deletions for API used anywhere),
9 that's a release blocker. Do NOT release. Document deprecations.
102. Based on severity of changes, decide whether it's a minor or micro release number bump,
113. Make sure you have correct date and new version at the top of NEWS file,
124. Bump version in configure.ac line 3,
135. Do "make distcheck", if it passes, you get a tarball.
14 Otherwise, fix things and commit them separately before making release,
156. "make release-files". Enter your GPG password again. This creates a sha256 hash and signs it.
167. Now that you have a tarball built, commit NEWS and configure.ac changes. The commit message
17 is simply the release number. Eg. "1.4.7"
188. Tag the release and sign it: Eg. "git tag -s 1.4.7 -m 1.4.7". Enter your GPG password.
199. Build win32 bundle.
20 1. Put contents of [this](https://drive.google.com/open?id=0B3_fQkxDZZXXbWltRGd5bjVrUDQ) on your `~/.local/i686-w64-mingw32`
21 2. Run `./MING32 --with-uniscribe` script (available below) to config harfbuzz with mingw
22 3. make
23 4. `./UPDATE.sh` (available below)
2410. Copy all artefacts to users.freedesktop.org and move them into `/srv/www.freedesktop.org/www/software/harfbuzz/release`
25 There should be four files. Eg.:
26 ```
27-rw-r--r-- 1 behdad eng 1592693 Jul 18 11:25 harfbuzz-1.4.7.tar.bz2
28-rw-r--r-- 1 behdad eng 89 Jul 18 11:34 harfbuzz-1.4.7.tar.bz2.sha256
29-rw-r--r-- 1 behdad eng 339 Jul 18 11:34 harfbuzz-1.4.7.tar.bz2.sha256.asc
30-rw-r--r-- 1 behdad eng 2895619 Jul 18 11:34 harfbuzz-1.4.7-win32.zip
31```
3211. While doing that, quickly double-check the size of the .tar.bz2 and .zip files against their previous releases to make sure nothing bad happened. They should be in the ballpark, perhaps slightly larger. Sometimes they do shrink, that's not by itself a stopper.
3312. Push the commit and tag out: "git push --follow-tags". Make sure it's pushed both to freedesktop repo and github.
3413. Upload artefacts and NEWS entry on the github release.
35
36
37## MING32
38```bash
39#!/bin/bash
40
41target=i686-w64-mingw32
42
43unset CC
44unset CXX
45unset CPP
46unset LD
47unset LDFLAGS
48unset CFLAGS
49unset CXXFLAGS
50unset PKG_CONFIG_PATH
51
52# Removed -static from the following
53export CFLAGS="-static-libgcc"
54export CXXFLAGS="-static-libgcc -static-libstdc++"
55export CPPFLAGS=-I$HOME/.local/$target/include
56export LDFLAGS=-L$HOME/.local/$target/lib
57export PKG_CONFIG_LIBDIR=$HOME/.local/$target/lib/pkgconfig
58export PATH=$HOME/.local/$target/bin:$PATH
59
60../configure --build=`~/script/config.guess` --host=$target --prefix=/home/behdad/.local/$target "$@"
61```
62
63## UPDATE.sh
64```bash
65#!/bin/bash
66
67v=$1
68
69if test "x$v" = x; then
70 echo "usage: UPDATE.sh micro-version"
71 exit 1
72fi
73
74dir_prefix=harfbuzz-1.4.
75dir_suffix=-win32
76dir=$dir_prefix$v$dir_suffix
77dir_old=$dir_prefix$((v-1))$dir_suffix
78if test -d "$dir"; then
79 echo "New dir $dir exists; not overwriting"
80 exit 1
81fi
82if ! test -d "$dir_old"; then
83 echo "Old dir $dir_old does NOT exist; aborting"
84 exit 1
85fi
86set -ex
87cp -a "$dir_old" "$dir.tmp"
88rm -f "$dir.tmp"/GDX32.dll
89rm -f "$dir.tmp"/usp10.dll
90cp ../winbuild/src/.libs/libharfbuzz-0.dll{,.def} $dir.tmp/
91cp ../winbuild/util/.libs/hb-{shape,view}.exe $dir.tmp/
92i686-w64-mingw32-strip $dir.tmp/{hb-shape.exe,hb-view.exe,libharfbuzz-0.dll}
93mv $dir.tmp $dir
94zip -r $dir.zip $dir
95echo Bundle $dir.zip ready
96```