Home | History | Annotate | Download | only in harfbuzz_ng
      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.  Ensure all new API / deprecations are in listed correctly in
     11      docs/harfbuzz-sections.txt.  If release added new API, add entry for new
     12      API index at the end of docs/harfbuzz-docs.xml.
     13 
     14      If there's a backward-incompatible API change (including deletions for API
     15      used anywhere), that's a release blocker.  Do NOT release.
     16 
     17 2. Based on severity of changes, decide whether it's a minor or micro release
     18    number bump,
     19 
     20 3. Search for REPLACEME on the repository and replace it with the chosen version
     21    for the release.
     22 
     23 4. Make sure you have correct date and new version at the top of NEWS file,
     24 
     25 5. Bump version in configure.ac line 3,
     26 
     27 6. Do "make distcheck", if it passes, you get a tarball.
     28    Otherwise, fix things and commit them separately before making release,
     29    Note: Check src/hb-version.h and make sure the new version number is
     30    there.  Sometimes, it does not get updated.  If that's the case,
     31    "touch configure.ac" and rebuild.  Also check that there is no hb-version.h
     32    in your build/src file. Typically it will fail the distcheck if there is.
     33    That's what happened to 2.0.0 going out with 1.8.0 hb-version.h...  So, that's
     34    a clue.
     35 
     36 7. "make release-files".  Enter your GPG password.  This creates a sha256 hash
     37    and signs it.
     38 
     39 8. Now that you have release files, commit NEWS, configure.ac, and src/hb-version.h,
     40    as well as any REPLACEME changes you made.  The commit message is simply the
     41    release number.  Eg. "1.4.7"
     42 
     43 9. Tag the release and sign it: Eg. "git tag -s 1.4.7 -m 1.4.7".  Enter your
     44    GPG password again.
     45 
     46 10. Build win32 bundle.
     47 
     48    a. Put contents of [this](https://drive.google.com/open?id=0B3_fQkxDZZXXbWltRGd5bjVrUDQ) on your `~/.local/i686-w64-mingw32`,
     49 
     50    b. Run `../mingw32.sh --with-uniscribe` script to configure harfbuzz with mingw
     51    in a subdirector (eg. winbuild/),
     52 
     53    c. make
     54 
     55    d. Back in the parent directory, run `./UPDATE.sh`(available below) to build win32
     56       bundle.
     57 
     58 11. Copy all artefacts to users.freedesktop.org and move them into
     59     `/srv/www.freedesktop.org/www/software/harfbuzz/release` There should be four
     60     files.  Eg.:
     61  ```
     62 -rw-r--r--  1 behdad eng 1592693 Jul 18 11:25 harfbuzz-1.4.7.tar.bz2
     63 -rw-r--r--  1 behdad eng      89 Jul 18 11:34 harfbuzz-1.4.7.tar.bz2.sha256
     64 -rw-r--r--  1 behdad eng     339 Jul 18 11:34 harfbuzz-1.4.7.tar.bz2.sha256.asc
     65 -rw-r--r--  1 behdad eng 2895619 Jul 18 11:34 harfbuzz-1.4.7-win32.zip
     66 ```
     67 
     68 12. While doing that, quickly double-check the size of the .tar.bz2 and .zip
     69     files against their previous releases to make sure nothing bad happened.
     70     They should be in the ballpark, perhaps slightly larger.  Sometimes they
     71     do shrink, that's not by itself a stopper.
     72 
     73 13. Push the commit and tag out: "git push --follow-tags".  Make sure it's
     74     pushed both to freedesktop repo and github.
     75 
     76 14. Go to GitHub release page [here](https://github.com/harfbuzz/harfbuzz/releases),
     77     edit the tag, upload artefacts and NEWS entry and save.
     78 
     79 
     80 ## UPDATE.sh
     81 ```bash
     82 #!/bin/bash
     83 
     84 v=$1
     85 
     86 if test "x$v" = x; then
     87 	echo "usage: UPDATE.sh micro-version"
     88 	exit 1
     89 fi
     90 
     91 dir_prefix=harfbuzz-1.4.
     92 dir_suffix=-win32
     93 dir=$dir_prefix$v$dir_suffix
     94 dir_old=$dir_prefix$((v-1))$dir_suffix
     95 if test -d "$dir"; then
     96 	echo "New dir $dir exists; not overwriting"
     97 	exit 1
     98 fi
     99 if ! test -d "$dir_old"; then
    100 	echo "Old dir $dir_old does NOT exist; aborting"
    101 	exit 1
    102 fi
    103 set -ex
    104 cp -a "$dir_old" "$dir.tmp"
    105 rm -f "$dir.tmp"/GDX32.dll
    106 rm -f "$dir.tmp"/usp10.dll
    107 cp ../winbuild/src/.libs/libharfbuzz-0.dll{,.def} $dir.tmp/
    108 cp ../winbuild/util/.libs/hb-{shape,view}.exe $dir.tmp/
    109 i686-w64-mingw32-strip $dir.tmp/{hb-shape.exe,hb-view.exe,libharfbuzz-0.dll}
    110 mv $dir.tmp $dir
    111 zip -r $dir.zip $dir
    112 echo Bundle $dir.zip ready
    113 ```
    114