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.
     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