]> git.proxmox.com Git - mirror_kronosnet.git/blob - build-aux/release.mk
[crypto] fix log information
[mirror_kronosnet.git] / build-aux / release.mk
1 #
2 # Copyright (C) 2012-2019 Red Hat, Inc. All rights reserved.
3 #
4 # Author: Fabio M. Di Nitto <fabbione@kronosnet.org>
5 #
6 # This software licensed under GPL-2.0+
7 #
8
9 # to build official release tarballs, handle tagging and publish.
10
11 # example:
12 # make -f build-aux/release.mk all version=0.9 release=yes publish
13
14 gpgsignkey = 1F22889A
15
16 project = kronosnet
17
18 deliverables = $(project)-$(version).sha256 \
19 $(project)-$(version).tar.bz2 \
20 $(project)-$(version).tar.gz \
21 $(project)-$(version).tar.xz
22
23 .PHONY: all
24 all: tag tarballs sign # first/last skipped per release/gpgsignkey respectively
25
26
27 .PHONY: checks
28 checks:
29 ifeq (,$(version))
30 @echo ERROR: need to define version=
31 @exit 1
32 endif
33 @if [ ! -d .git ]; then \
34 echo This script needs to be executed from top level cluster git tree; \
35 exit 1; \
36 fi
37
38
39 .PHONY: setup
40 setup: checks
41 ./autogen.sh
42 ./configure
43 make maintainer-clean
44
45
46 .PHONY: tag
47 tag: setup ./tag-$(version)
48
49 tag-$(version):
50 ifeq (,$(release))
51 @echo Building test release $(version), no tagging
52 echo '$(version)' > .tarball-version
53 else
54 # following will be captured by git-version-gen automatically
55 git tag -a -m "v$(version) release" v$(version) HEAD
56 @touch $@
57 endif
58
59
60 .PHONY: tarballs
61 tarballs: tag
62 ./autogen.sh
63 ./configure
64 #make distcheck (disabled.. needs root)
65 make dist
66
67
68 .PHONY: sha256
69 sha256: $(project)-$(version).sha256
70
71 # NOTE: dependency backtrack may fail trying to sign missing tarballs otherwise
72 # (actually, only when signing tarballs directly, but doesn't hurt anyway)
73 $(deliverables): tarballs
74
75 $(project)-$(version).sha256:
76 # checksum anything from deliverables except for in-prep checksums file
77 sha256sum $(deliverables:$@=) | sort -k2 > $@
78
79
80 .PHONY: sign
81 ifeq (,$(gpgsignkey))
82 sign: $(deliverables)
83 @echo No GPG signing key defined
84 else
85 sign: $(deliverables:=.asc)
86 endif
87
88 # NOTE: cannot sign multiple files at once
89 $(project)-$(version).%.asc: $(project)-$(version).%
90 gpg --default-key "$(gpgsignkey)" \
91 --detach-sign \
92 --armor \
93 $<
94
95
96 .PHONY: publish
97 publish:
98 ifeq (,$(release))
99 @echo Building test release $(version), no publishing!
100 else
101 @echo : pushing tags
102 @git push --follow-tags origin
103 @echo : publishing files
104 @scp $(deliverables) $(deliverables:=.asc) www.kronosnet.org:kronosnet/releases/.
105 endif
106
107
108 .PHONY: clean
109 clean:
110 rm -rf $(project)-* tag-* .tarball-version