harfbuzz/RELEASING.md

113 lines
3.9 KiB
Markdown
Raw Normal View History

2017-10-01 16:05:24 +00:00
HarfBuzz release walk-through checklist:
1. Open gitk and review changes since last release.
2017-10-23 17:10:21 +00:00
* `git diff $(git describe | sed 's/-.*//').. src/*.h` prints all public API
changes.
Document them in NEWS. All API and API semantic changes should be clearly
marked as API additions, API changes, or API deletions. Document
2018-06-12 23:32:04 +00:00
deprecations. Ensure all new API / deprecations are in listed correctly in
docs/harfbuzz-sections.txt
2017-10-23 17:10:21 +00:00
If there's a backward-incompatible API change (including deletions for API
used anywhere), that's a release blocker. Do NOT release.
2. Based on severity of changes, decide whether it's a minor or micro release
number bump,
3. Search for REPLACEME on the repository and replace it with the chosen version
for the release.
2017-10-23 17:10:21 +00:00
4. Make sure you have correct date and new version at the top of NEWS file,
2017-10-23 17:10:21 +00:00
5. Bump version in configure.ac line 3,
6. Do "make distcheck", if it passes, you get a tarball.
2017-10-01 16:05:24 +00:00
Otherwise, fix things and commit them separately before making release,
2018-08-09 04:54:08 +00:00
Note: Check src/hb-version.h and make sure the new version number is
there. Sometimes, it does not get updated. If that's the case,
"touch configure.ac" and rebuild. Also check that there is no hb-version.h
in your build/src file. Typically it will fail the distcheck if there is.
That's what happened to 2.0.0 going out with 1.8.0 hb-version.h... So, that's
a clue.
2017-10-23 17:10:21 +00:00
7. "make release-files". Enter your GPG password. This creates a sha256 hash
2017-10-23 17:10:21 +00:00
and signs it.
2018-07-11 13:27:37 +00:00
8. Now that you have release files, commit NEWS, configure.ac, and src/hb-version.h,
2018-06-05 22:17:39 +00:00
as well as any REPLACEME changes you made. The commit message is simply the
release number. Eg. "1.4.7"
2017-10-23 17:10:21 +00:00
9. Tag the release and sign it: Eg. "git tag -s 1.4.7 -m 1.4.7". Enter your
2017-10-23 17:10:21 +00:00
GPG password again.
10. Build win32 bundle.
2017-10-23 17:10:21 +00:00
a. Put contents of [this](https://drive.google.com/open?id=0B3_fQkxDZZXXbWltRGd5bjVrUDQ) on your `~/.local/i686-w64-mingw32`,
2018-06-05 22:20:23 +00:00
b. Run `../mingw32.sh --with-uniscribe` script to configure harfbuzz with mingw
in a subdirector (eg. winbuild/),
2017-10-23 17:10:21 +00:00
c. make
2018-06-05 22:20:23 +00:00
d. Back in the parent directory, run `./UPDATE.sh`(available below) to build win32
bundle.
2017-10-23 17:10:21 +00:00
11. Copy all artefacts to users.freedesktop.org and move them into
2017-10-23 17:10:21 +00:00
`/srv/www.freedesktop.org/www/software/harfbuzz/release` There should be four
files. Eg.:
2017-10-01 16:05:24 +00:00
```
-rw-r--r-- 1 behdad eng 1592693 Jul 18 11:25 harfbuzz-1.4.7.tar.bz2
-rw-r--r-- 1 behdad eng 89 Jul 18 11:34 harfbuzz-1.4.7.tar.bz2.sha256
-rw-r--r-- 1 behdad eng 339 Jul 18 11:34 harfbuzz-1.4.7.tar.bz2.sha256.asc
-rw-r--r-- 1 behdad eng 2895619 Jul 18 11:34 harfbuzz-1.4.7-win32.zip
```
2017-10-23 17:10:21 +00:00
12. While doing that, quickly double-check the size of the .tar.bz2 and .zip
2017-10-23 17:10:21 +00:00
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.
13. Push the commit and tag out: "git push --follow-tags". Make sure it's
2017-10-23 17:10:21 +00:00
pushed both to freedesktop repo and github.
14. Go to GitHub release page [here](https://github.com/harfbuzz/harfbuzz/releases),
2017-10-23 17:10:21 +00:00
edit the tag, upload artefacts and NEWS entry and save.
2017-10-01 16:05:24 +00:00
## UPDATE.sh
```bash
#!/bin/bash
v=$1
if test "x$v" = x; then
echo "usage: UPDATE.sh micro-version"
exit 1
fi
dir_prefix=harfbuzz-1.4.
dir_suffix=-win32
dir=$dir_prefix$v$dir_suffix
dir_old=$dir_prefix$((v-1))$dir_suffix
if test -d "$dir"; then
echo "New dir $dir exists; not overwriting"
exit 1
fi
if ! test -d "$dir_old"; then
echo "Old dir $dir_old does NOT exist; aborting"
exit 1
fi
set -ex
cp -a "$dir_old" "$dir.tmp"
rm -f "$dir.tmp"/GDX32.dll
rm -f "$dir.tmp"/usp10.dll
cp ../winbuild/src/.libs/libharfbuzz-0.dll{,.def} $dir.tmp/
cp ../winbuild/util/.libs/hb-{shape,view}.exe $dir.tmp/
i686-w64-mingw32-strip $dir.tmp/{hb-shape.exe,hb-view.exe,libharfbuzz-0.dll}
mv $dir.tmp $dir
zip -r $dir.zip $dir
echo Bundle $dir.zip ready
```