Skip to content
nicowilliams edited this page Jan 1, 2015 · 4 revisions
  • When tagging for a release, make sure to autoreconf after tagging, or after fetching new tags, otherwise ./configure will have the wrong version baked in, and then so will the resulting Makefile.

  • Keep a distinct, clean workspace just for release building.

$ cd ~/workspaces # or whatever

$ git clone <your-dev-repo> jq-rel
$ cd jq-rel
$ git checkout -f master
$ git clean -fx
$ git pull -u
$ git pull --tags
$ autoreconf -fi
$ ./configure ... && make dist
$ tar xvf $(git describe --tags --match 'jq-*').tar.gz
$ cd $(git describe --tags --match 'jq-*')
$ ./configure ... && make -j16 check
$ # If checks pass, then you can release, if not fix bugs, repeat this
  • Install mingw and/or other cross-compilation toolkits and then use scripts/crosscompile to build for other platforms. E.g.:

$ make distclean

$ PATH=<path-to-mingw>/mingw-w64-x86_64/bin:$PATH scripts/crosscompile win64 --target=win64-x86_64 --host=x86_64-w64-mingw32 --with-oniguruma=<path-to-cross-compiled-oniguruma>
$ find build/win64

Building a cross-compiled Oniguruma is very similar:

$ PATH=<path-to-cross-compilation-tools>/bin:$PATH ./configure --target=... --host=...

$ PATH=<path-to-cross-compilation-tools>/bin:$PATH make -j16 LDFLAGS=-all-static clean all install DESTDIR=...
  • Rename each executable something like jq-<OS>-<arch> or jq-<OS>-<arch>.exe as appropriate.

  • When a release is ready, tag it, create the release in github, add the source tarball made by make dist, add the executables to the release, save, review, publish.

Clone this wiki locally