mirror of
https://salsa.debian.org/ha-team/libqb
synced 2025-08-26 05:57:31 +00:00

... that is preserved by design, see: http://pubs.opengroup.org/onlinepubs/9699919799/utilities/make.html#tag_20_76_13_05 > string1 = [string2] > [...] > where string2 is defined as all characters, if any, after the > <equals-sign>, up to a comment character ( '#' ) or an unescaped > <newline>. Any <blank> characters immediately before or after the > <equals-sign> shall be ignored. Signed-off-by: Jan Pokorný <jpokorny@redhat.com>
101 lines
2.3 KiB
Makefile
101 lines
2.3 KiB
Makefile
# 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
|