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 `./MING32 --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 ## MING32 67 ```bash 68 #!/bin/bash 69 70 target=i686-w64-mingw32 71 72 unset CC 73 unset CXX 74 unset CPP 75 unset LD 76 unset LDFLAGS 77 unset CFLAGS 78 unset CXXFLAGS 79 unset PKG_CONFIG_PATH 80 81 # Removed -static from the following 82 export CFLAGS="-static-libgcc" 83 export CXXFLAGS="-static-libgcc -static-libstdc++" 84 export CPPFLAGS=-I$HOME/.local/$target/include 85 export LDFLAGS=-L$HOME/.local/$target/lib 86 export PKG_CONFIG_LIBDIR=$HOME/.local/$target/lib/pkgconfig 87 export PATH=$HOME/.local/$target/bin:$PATH 88 89 ../configure --build=`../config.guess` --host=$target --prefix=$HOME/.local/$target "$@" 90 ``` 91 92 ## UPDATE.sh 93 ```bash 94 #!/bin/bash 95 96 v=$1 97 98 if test "x$v" = x; then 99 echo "usage: UPDATE.sh micro-version" 100 exit 1 101 fi 102 103 dir_prefix=harfbuzz-1.4. 104 dir_suffix=-win32 105 dir=$dir_prefix$v$dir_suffix 106 dir_old=$dir_prefix$((v-1))$dir_suffix 107 if test -d "$dir"; then 108 echo "New dir $dir exists; not overwriting" 109 exit 1 110 fi 111 if ! test -d "$dir_old"; then 112 echo "Old dir $dir_old does NOT exist; aborting" 113 exit 1 114 fi 115 set -ex 116 cp -a "$dir_old" "$dir.tmp" 117 rm -f "$dir.tmp"/GDX32.dll 118 rm -f "$dir.tmp"/usp10.dll 119 cp ../winbuild/src/.libs/libharfbuzz-0.dll{,.def} $dir.tmp/ 120 cp ../winbuild/util/.libs/hb-{shape,view}.exe $dir.tmp/ 121 i686-w64-mingw32-strip $dir.tmp/{hb-shape.exe,hb-view.exe,libharfbuzz-0.dll} 122 mv $dir.tmp $dir 123 zip -r $dir.zip $dir 124 echo Bundle $dir.zip ready 125 ``` 126