Text Blame History Raw

to build official release tarballs, handle tagging and publish.

gpgsignkey = A70D4537 # signing key

project = libqb

deliverables = $(project)-$(version).sha256 \ $(project)-$(version).tar.gz \ $(project)-$(version).tar.xz

.PHONY: all all: tag tarballs sign # first/last skipped per release/gpgsignkey respectively

.PHONY: checks checks: ifeq (,$(version)) @echo ERROR: need to define version= @exit 1 endif @if [ ! -d .git ]; then \ echo This script needs to be executed from top level cluster git tree; \ exit 1; \ fi

.PHONY: setup setup: checks ./autogen.sh ./configure make maintainer-clean

.PHONY: tag tag: setup ./tag-$(version)

tag-$(version): ifeq (,$(release)) @echo Building test release $(version), no tagging echo '$(version)' > .tarball-version else # following will be captured by git-version-gen automatically git tag -a -m "v$(version) release" v$(version) HEAD @touch $@ endif

.PHONY: tarballs tarballs: tag ./autogen.sh ./configure make distcheck

.PHONY: sha256 sha256: $(project)-$(version).sha256

NOTE: dependency backtrack may fail trying to sign missing tarballs otherwise

$(deliverables): tarballs

$(project)-$(version).sha256: # checksum anything from deliverables except for in-prep checksums file sha256sum $(deliverables:$@=) | sort -k2 > $@

.PHONY: sign ifeq (,$(gpgsignkey)) sign: $(deliverables) @echo No GPG signing key defined else sign: $(deliverables:=.asc) endif

NOTE: cannot sign multiple files at once

$(project)-$(version).%.asc: $(project)-$(version).% gpg --default-key "$(strip $(gpgsignkey))" \ --detach-sign \ --armor \ $<

.PHONY: publish publish: ifeq (,$(release)) @echo Building test release $(version), no publishing! else @echo CHANGEME git push --follow-tags origin @echo : Since the switch to publishing non-generated, customized and signed @echo : upstream tarballs solely to GitHub, we cannot simply use scp anymore. @echo : TODO: investigate automation using GH API, directly or not: @echo : https://developer.github.com/v3/repos/releases/#upload-a-release-asset @echo : http://github3py.readthedocs.io/en/latest/repos.html#github3.repos.release.Release.upload_asset @echo : NOTE: precaution needs to be taken so as NOT TO LEAK the API token! endif

.PHONY: clean clean: rm -rf $(project)- tag- .tarball-version