summaryrefslogtreecommitdiff
path: root/Makefile.am
blob: 88ff897bee07c208b2a6b49b300d9ce97f3e8e31 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
SUBDIRS = pixman demos test

pkgconfigdir=$(libdir)/pkgconfig
pkgconfig_DATA=pixman-1.pc

$(pkgconfig_DATA): pixman-1.pc.in

snapshot:
	distdir="$(distdir)-`date '+%Y%m%d'`"; \
	test -d "$(srcdir)/.git" && distdir=$$distdir-`cd "$(srcdir)" && git rev-parse HEAD | cut -c 1-6`; \
	$(MAKE) $(AM_MAKEFLAGS) distdir="$$distdir" dist

GPGKEY=6FF7C1A8
USERNAME=$$USER
RELEASE_OR_SNAPSHOT = $$(if test "x$(PIXMAN_VERSION_MINOR)" = "x$$(echo "$(PIXMAN_VERSION_MINOR)/2*2" | bc)" ; then echo release; else echo snapshot; fi)
RELEASE_CAIRO_HOST =	$(USERNAME)@cairographics.org
RELEASE_CAIRO_DIR =	/srv/cairo.freedesktop.org/www/$(RELEASE_OR_SNAPSHOT)s
RELEASE_CAIRO_URL = 	http://cairographics.org/$(RELEASE_OR_SNAPSHOT)s
RELEASE_XORG_URL =	http://xorg.freedesktop.org/archive/individual/lib
RELEASE_XORG_HOST =	$(USERNAME)@xorg.freedesktop.org
RELEASE_XORG_DIR =	/srv/xorg.freedesktop.org/archive/individual/lib
RELEASE_ANNOUNCE_LIST = cairo-announce@cairographics.org, xorg-announce@lists.freedesktop.org, pixman@lists.freedesktop.org

EXTRA_DIST =				\
	Makefile.win32			\
	Makefile.win32.common

tar_gz = $(PACKAGE)-$(VERSION).tar.gz
tar_bz2 = $(PACKAGE)-$(VERSION).tar.bz2

sha1_tgz = $(tar_gz).sha1
md5_tgz = $(tar_gz).md5

sha1_tbz2 = $(tar_bz2).sha1
md5_tbz2 = $(tar_bz2).md5

gpg_file = $(sha1_tgz).asc

$(sha1_tgz): $(tar_gz)
	sha1sum $^ > $@

$(md5_tgz): $(tar_gz)
	md5sum $^ > $@

$(sha1_tbz2): $(tar_bz2)
	sha1sum $^ > $@

$(md5_tbz2): $(tar_bz2)
	md5sum $^ > $@

$(gpg_file): $(sha1_tgz)
	@echo "Please enter your GPG password to sign the checksum."
	gpg --armor --sign $^ 

HASHFILES = $(sha1_tgz) $(sha1_tbz2) $(md5_tgz) $(md5_tbz2)

release-verify-newer:
	@echo -n "Checking that no $(VERSION) release already exists at $(RELEASE_XORG_HOST)..."
	@ssh $(RELEASE_XORG_HOST) test ! -e $(RELEASE_XORG_DIR)/$(tar_gz) \
		|| (echo "Ouch." && echo "Found: $(RELEASE_XORG_HOST):$(RELEASE_XORG_DIR)/$(tar_gz)" \
		&& echo "Refusing to try to generate a new release of the same name." \
		&& false)
	@ssh $(RELEASE_CAIRO_HOST) test ! -e $(RELEASE_CAIRO_DIR)/$(tar_gz) \
		|| (echo "Ouch." && echo "Found: $(RELEASE_CAIRO_HOST):$(RELEASE_CAIRO_DIR)/$(tar_gz)" \
		&& echo "Refusing to try to generate a new release of the same name." \
		&& false)
	@echo "Good."

release-remove-old:
	$(RM) $(tar_gz) $(tar_bz2) $(HASHFILES) $(gpg_file)

ensure-prev:
	@if [[ "$(PREV)" == "" ]]; then							\
		echo ""							          &&	\
		echo "You must set the PREV variable on the make command line to" &&	\
		echo "the last version."				  	  &&	\
		echo ""								  &&	\
		echo "For example:"						  &&	\
		echo "      make PREV=0.7.3"				  	  &&	\
		echo ""								  &&	\
		false;									\
	fi

release-check: ensure-prev release-verify-newer release-remove-old distcheck

release-tag:
	git tag -u $(GPGKEY) -m "$(PACKAGE) $(VERSION) release" $(PACKAGE)-$(VERSION)

release-upload: release-check $(tar_gz) $(tar_bz2) $(sha1_tgz) $(sha1_tbz2) $(md5_tgz) $(gpg_file)
	scp $(tar_gz) $(sha1_tgz) $(gpg_file) $(RELEASE_CAIRO_HOST):$(RELEASE_CAIRO_DIR)
	scp $(tar_gz) $(tar_bz2) $(RELEASE_XORG_HOST):$(RELEASE_XORG_DIR)
	ssh $(RELEASE_CAIRO_HOST) "rm -f $(RELEASE_CAIRO_DIR)/LATEST-$(PACKAGE)-[0-9]* && ln -s $(tar_gz) $(RELEASE_CAIRO_DIR)/LATEST-$(PACKAGE)-$(VERSION)"

RELEASE_TYPE = $$(if test "x$(PIXMAN_VERSION_MINOR)" = "x$$(echo "$(PIXMAN_VERSION_MINOR)/2*2" | bc)" ; then echo "stable release in the" ; else echo "development snapshot leading up to a stable"; fi)

release-publish-message: $(HASHFILES) ensure-prev
	@echo "Please follow the instructions in RELEASING to push stuff out and"
	@echo "send out the announcement mails.  Here is the excerpt you need:"
	@echo ""
	@echo "Lists:  $(RELEASE_ANNOUNCE_LIST)"
	@echo "Subject: [ANNOUNCE] $(PACKAGE) release $(VERSION) now available"
	@echo "============================== CUT HERE =============================="
	@echo "A new $(PACKAGE) release $(VERSION) is now available. This is a $(RELEASE_TYPE)"
	@echo ""
	@echo "tar.gz:"
	@echo "	$(RELEASE_CAIRO_URL)/$(tar_gz)"
	@echo "	$(RELEASE_XORG_URL)/$(tar_gz)"
	@echo ""
	@echo "tar.bz2:"
	@echo "	$(RELEASE_XORG_URL)/$(tar_bz2)"
	@echo ""
	@echo "Hashes:"
	@echo -n "	MD5:  "
	@cat $(md5_tgz)
	@echo -n "	MD5:  "
	@cat $(md5_tbz2)
	@echo -n "	SHA1: "
	@cat $(sha1_tgz)
	@echo -n "	SHA1: "
	@cat $(sha1_tbz2)
	@echo ""
	@echo "GPG signature:"
	@echo "	$(RELEASE_CAIRO_URL)/$(gpg_file)"
	@echo "	(signed by `git config --get user.name` <`git config --get user.email`>)"
	@echo ""
	@echo "Git:"
	@echo "	git://git.freedesktop.org/git/pixman"
	@echo "	tag: $(PACKAGE)-$(VERSION)"
	@echo ""
	@echo "Log:"
	@git log --no-merges "$(PACKAGE)-$(PREV)".."$(PACKAGE)-$(VERSION)" | git shortlog | awk '{ printf "\t"; print ; }' | cut -b1-80
	@echo "============================== CUT HERE =============================="
	@echo ""

release-publish: release-upload release-tag release-publish-message

.PHONY: release-upload release-publish release-publish-message release-tag