build: Generate the release announcement
[profile/ivi/clutter.git] / build / autotools / Makefile.am.release
1 # To make real stable releases or devel snapshots, use either:
2 #       make release-check
3 # or    make release-publish
4
5 TAR_OPTIONS = --owner=0 --group=0
6
7 RELEASE_UPLOAD_HOST = clutter-project.org
8 RELEASE_UPLOAD_USER = clutter
9 RELEASE_UPLOAD_DIR  = $(RELEASE_UPLOAD_USER)@$(RELEASE_UPLOAD_HOST):~$(RELEASE_UPLOAD_USER)/upload-source
10
11 RELEASE_URL_BASE = http://source.clutter-project.org/sources/clutter
12 RELEASE_URL      = $(RELEASE_URL_BASE)/$(CLUTTER_MAJOR_VERSION).$(CLUTTER_MINOR_VERSION)
13
14 RELEASE_ANNOUNCE_LIST = clutter-announce@clutter-project.org
15 RELEASE_ANNOUNCE_CC   = gnome-announce-list@gnome.org
16
17 tar_file    = $(distdir).tar.bz2
18 sha256_file = $(distdir).sha256sum
19
20 $(sha256_file): $(tar_file)
21         $(AM_V_GEN)sha256sum $^ > $@
22
23 release-tag:
24         @if test "x$(CLUTTER_RELEASE_STATUS)" = "xgit"; then \
25           echo "Cannot tag a Git version; please, update the Clutter version" >&2; \
26         else \
27           if test -d "$(top_srcdir)/.git"; then \
28             echo "Tagging release $(CLUTTER_VERSION)..." ; \
29             $(top_srcdir)/build/missing --run git tag \
30                 -s \
31                 -m "Clutter $(CLUTTER_VERSION) ($(CLUTTER_RELEASE_STATUS))" \
32                 $(CLUTTER_VERSION) ; \
33           else \
34             echo A git checkout is required to tag a release >&2; \
35           fi \
36         fi
37
38 release-check: release-verify-even-micro release-verify-sane-changelogs release-verify-news
39         TAR_OPTIONS="$(TAR_OPTIONS)" $(MAKE) $(AM_MAKEFLAGS) distcheck
40
41 release-verify-news:
42         @echo -n "Checking that the NEWS file has been updated..."
43         @if ! grep -q "$(CLUTTER_VERSION)" $(top_srcdir)/NEWS; then \
44           (echo "Ouch." && \
45            echo "The version in the NEWS file does not match $(CLUTTER_VERSION)." && \
46            echo "This probably means you haven't updated the NEWS file." && \
47            false); else :; fi
48         @echo "Good."
49
50 release-verify-sane-changelogs: changelogs
51         @echo -n "Checking that the ChangeLog files are sane..."
52         @if grep -q "is required to generate" $(CHANGELOGS); then \
53           (echo "Ouch." && \
54            echo "Some of the ChangeLogs are not generated correctly." && \
55            echo "Remove ChangeLog* and make changelogs" && false); else :; fi
56         @echo "Good."
57
58 release-verify-even-micro:
59         @echo -n "Checking that $(VERSION) has an even micro component..."
60         @test "$(CLUTTER_MICRO_VERSION)" = "`echo $(CLUTTER_MICRO_VERSION)/2*2 | bc`" || \
61           (echo "Ouch." && \
62            echo "The version micro component '$(CLUTTER_MICRO_VERSION)' is not an even number." && \
63            echo "The version in configure.ac must be incremented before a new release." && \
64            false)
65         @echo "Good."
66
67 release-upload: $(sha256_file)
68         @echo "Uploading to $(RELEASE_UPLOAD_HOST)..."
69         @scp $(tar_file) $(RELEASE_UPLOAD_DIR)
70         @echo "Uploading to master.gnome.org..."
71         @scp $(tar_file) master.gnome.org:
72         @echo "Running ftpadmin install..."
73         @ssh master.gnome.org ftpadmin install $(tar_file)
74         @mv -f $(sha256_file) $(top_builddir)/build/$(sha256_file)
75         @echo "Done."
76
77 release-message:
78         @echo "     Release URL: $(RELEASE_URL)/$(tar_file)"
79         @echo "Release checksum: $(RELEASE_URL)/$(sha256_file)"
80         @echo "Send an email to: $(RELEASE_ANNOUNCE_LIST)"
81         @echo "              Cc: $(RELEASE_ANNOUNCE_CC)"
82         @echo "         Subject: Clutter $(CLUTTER_VERSION) ($(CLUTTER_RELEASE_STATUS))"
83         @echo "        Contents:"
84         @echo "--- CUT HERE ---"
85         @echo "Good news, everyone!"
86         @echo ""
87         @echo "A new Clutter $(CLUTTER_RELEASE_STATUS) is now available at:"
88         @echo ""
89         @echo "  $(RELEASE_URL)/$(tar_file)"
90         @echo ""
91         @echo "SHA256 Checksum:"
92         @echo ""
93         @cat $(top_builddir)/build/$(sha256_file)
94         @echo ""
95         @echo "Additionally, a git clone of the source tree:"
96         @echo "  git clone git://git.gnome.org/clutter"
97         @echo ""
98         @echo "will include a signed $(CLUTTER_VERSION) tag which points to a commit named:"
99         @echo "  `git cat-file tag $(CLUTTER_VERSION) | grep ^object | sed -e 's,object ,,'`"
100         @echo ""
101         @echo "which can be verified with:"
102         @echo "  git verify-tag $(CLUTTER_VERSION)"
103         @echo ""
104         @echo "and can be checked out with a command such as:"
105         @echo "  git checkout -b build $(CLUTTER_VERSION)"
106         @echo ""
107         @echo "Clutter is a library for creating compelling, dynamic and portable graphical"
108         @echo "user interfaces. Clutter is released under the terms of the GNU Lesser"
109         @echo "General Public License, version 2.1 or (at your option) later."
110         @echo ""
111         @echo "Clutter depends on:"
112         @echo "  GLib ≥ @GLIB_REQ_VERSION@"
113         @echo "  JSON-GLib ≥ @JSON_GLIB_REQ_VERSION@"
114         @echo "  Cairo ≥ @CAIRO_REQ_VERSION@"
115         @echo "  Pango ≥ @PANGO_REQ_VERSION@"
116         @echo "  Atk ≥ @ATK_REQ_VERSION@"
117         @echo "  OpenGL ≥ 1.3 (or 1.2 + multi-texturing), OpenGL|ES 1.1 or 2.0"
118         @echo "  GLX, WGL, Quartz, or an EGL implementation"
119         @echo ""
120         @echo "Clutter also has platform-specific dependencies; for more information, see"
121         @echo "the README file at:"
122         @echo "  http://git.gnome.org/browse/clutter/tree/README.in"
123         @echo ""
124         @echo "Documentation:"
125         @echo "   Clutter: $(CLUTTER_DOCS_URL)/clutter/$(CLUTTER_MAJOR_VERSION).$(CLUTTER_MINOR_VERSION)/"
126         @echo "      Cogl: $(CLUTTER_DOCS_URL)/cogl/$(CLUTTER_MAJOR_VERSION).$(CLUTTER_MINOR_VERSION)/"
127         @echo "     Cally: $(CLUTTER_DOCS_URL)/cally/$(CLUTTER_MAJOR_VERSION).$(CLUTTER_MINOR_VERSION)/"
128         @echo "  Cookbook: $(CLUTTER_DOCS_URL)/clutter-cookbook/$(CLUTTER_API_VERSION)/"
129         @echo ""
130         @echo "Release Notes:"
131         @echo "  - This version is API and ABI compatible with the current stable"
132         @echo "    release of Clutter."
133         @echo "  - Installing the contents of this release will overwrite the files"
134         @echo "    from the installation of the current release of Clutter."
135         @echo "  - Bugs should be reported on the Clutter Bugzilla product, at:"
136         @echo "    http://bugzilla.gnome.org/enter_bug.cgi?product=clutter"
137         @echo ""
138         @$(SED) -n '1bend;/^Clutter /q;:end;2,$$p' $(top_srcdir)/NEWS
139         @echo ""
140         @echo "Have fun with Clutter!"
141         @echo "--- CUT HERE ---"
142
143 release-publish: release-check
144         $(MAKE) $(AM_MAKEFLAGS) release-tag
145         $(MAKE) $(AM_MAKEFLAGS) release-upload
146         $(MAKE) $(AM_MAKEFLAGS) release-message
147         
148 .PHONY: \
149         release-check \
150         release-message \
151         release-publish \
152         release-tag \
153         release-upload \
154         release-verify-even-micro \
155         release-verify-sane-changelogs