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