# To make real stable releases or devel snapshots, use either: # make release-check # or make release-publish TAR_OPTIONS = --owner=0 --group=0 RELEASE_UPLOAD_HOST = clutter-project.org RELEASE_UPLOAD_USER = clutter RELEASE_UPLOAD_DIR = $(RELEASE_UPLOAD_USER)@$(RELEASE_UPLOAD_HOST):~$(RELEASE_UPLOAD_USER)/upload-source RELEASE_URL_BASE = http://source.clutter-project.org/sources/clutter RELEASE_URL = $(RELEASE_URL_BASE)/$(CLUTTER_MAJOR_VERSION).$(CLUTTER_MINOR_VERSION) RELEASE_ANNOUNCE_LIST = clutter-announce@clutter-project.org RELEASE_ANNOUNCE_CC = gnome-announce-list@gnome.org RELEASE_DOC_URL = http://docs.clutter-project.org/docs/ tar_file = $(distdir).tar.bz2 sha256_file = $(distdir).sha256sum $(sha256_file): $(tar_file) $(AM_V_GEN)sha256sum $^ > $@ release-tag: @if test "x$(CLUTTER_RELEASE_STATUS)" = "xgit"; then \ echo "Cannot tag a Git version; please, update the Clutter version" >&2; \ else \ if test -d "$(top_srcdir)/.git"; then \ echo "Tagging release $(CLUTTER_VERSION)..." ; \ $(top_srcdir)/build/missing --run git tag \ -s \ -m "Clutter $(CLUTTER_VERSION) ($(CLUTTER_RELEASE_STATUS))" \ $(CLUTTER_VERSION) ; \ else \ echo A git checkout is required to tag a release >&2; \ fi \ fi release-check: release-verify-even-micro release-verify-sane-changelogs release-verify-news TAR_OPTIONS="$(TAR_OPTIONS)" $(MAKE) $(AM_MAKEFLAGS) distcheck release-verify-news: @echo -n "Checking that the NEWS file has been updated..." @if ! grep -q "$(CLUTTER_VERSION)" $(top_srcdir)/NEWS; then \ (echo "Ouch." && \ echo "The version in the NEWS file does not match $(CLUTTER_VERSION)." && \ echo "This probably means you haven't updated the NEWS file." && \ false); else :; fi @echo "Good." release-verify-sane-changelogs: changelogs @echo -n "Checking that the ChangeLog files are sane..." @if grep -q "is required to generate" $(CHANGELOGS); then \ (echo "Ouch." && \ echo "Some of the ChangeLogs are not generated correctly." && \ echo "Remove ChangeLog* and make changelogs" && false); else :; fi @echo "Good." release-verify-even-micro: @echo -n "Checking that $(VERSION) has an even micro component..." @test "$(CLUTTER_MICRO_VERSION)" = "`echo $(CLUTTER_MICRO_VERSION)/2*2 | bc`" || \ (echo "Ouch." && \ echo "The version micro component '$(CLUTTER_MICRO_VERSION)' is not an even number." && \ echo "The version in configure.ac must be incremented before a new release." && \ false) @echo "Good." release-upload: $(sha256_file) @echo "Uploading to $(RELEASE_UPLOAD_HOST)..." @scp $(tar_file) $(RELEASE_UPLOAD_DIR) @echo "Uploading to master.gnome.org..." @scp $(tar_file) master.gnome.org: @echo "Running ftpadmin install..." @ssh master.gnome.org ftpadmin install $(tar_file) @mv -f $(sha256_file) $(top_builddir)/build/$(sha256_file) @echo "Done." release-message: @echo " Release URL: $(RELEASE_URL)/$(tar_file)" @echo "Release checksum: $(RELEASE_URL)/$(sha256_file)" @echo "Send an email to: $(RELEASE_ANNOUNCE_LIST)" @echo " Cc: $(RELEASE_ANNOUNCE_CC)" @echo " Subject: Clutter $(CLUTTER_VERSION) ($(CLUTTER_RELEASE_STATUS))" @echo " Contents:" @echo "--- CUT HERE ---" @echo "Good news, everyone!" @echo "" @echo "A new Clutter $(CLUTTER_RELEASE_STATUS) is now available at:" @echo "" @echo " http://source.clutter-project.org/sources/clutter/$(CLUTTER_MAJOR_VERSION).$(CLUTTER_MINOR_VERSION)/" @echo " http://download.gnome.org/sources/clutter/$(CLUTTER_MAJOR_VERSION).$(CLUTTER_MINOR_VERSION)/" @echo "" @echo "SHA256 Checksum:" @echo "" @cat $(top_builddir)/build/$(sha256_file) @echo "" @echo "Additionally, a git clone of the source tree:" @echo " git clone git://git.gnome.org/clutter" @echo "" @echo "will include a signed $(CLUTTER_VERSION) tag which points to a commit named:" @echo " `git cat-file tag $(CLUTTER_VERSION) | $(GREP) ^object | $(SED) -e 's,object ,,'`" @echo "" @echo "which can be verified with:" @echo " git verify-tag $(CLUTTER_VERSION)" @echo "" @echo "and can be checked out with a command such as:" @echo " git checkout -b build $(CLUTTER_VERSION)" @echo "" @echo "Clutter is a library for creating compelling, dynamic and portable graphical" @echo "user interfaces. Clutter is released under the terms of the GNU Lesser" @echo "General Public License, version 2.1 or (at your option) later." @echo "" @echo "Clutter depends on:" @echo " GLib ≥ @GLIB_REQ_VERSION@" @echo " JSON-GLib ≥ @JSON_GLIB_REQ_VERSION@" @echo " Cairo ≥ @CAIRO_REQ_VERSION@" @echo " Pango ≥ @PANGO_REQ_VERSION@" @echo " Atk ≥ @ATK_REQ_VERSION@" @echo " OpenGL ≥ 1.3 (or 1.2 + multi-texturing), OpenGL|ES 1.1 or 2.0" @echo " GLX, WGL, Quartz, or an EGL implementation" @echo "" @echo "Clutter also has platform-specific dependencies; for more information, see" @echo "the README file included in the release." @echo "" @echo "Documentation:" @echo " Clutter: $(RELEASE_DOC_URL)/clutter/$(CLUTTER_MAJOR_VERSION).$(CLUTTER_MINOR_VERSION)/" @echo " Cogl: $(RELEASE_DOC_URL)/cogl/$(CLUTTER_MAJOR_VERSION).$(CLUTTER_MINOR_VERSION)/" @echo " Cally: $(RELEASE_DOC_URL)/cally/$(CLUTTER_MAJOR_VERSION).$(CLUTTER_MINOR_VERSION)/" @echo " Cookbook: $(RELEASE_DOC_URL)/clutter-cookbook/$(CLUTTER_API_VERSION)/" @echo "" @echo "Release Notes:" @echo " - This version is API and ABI compatible with the current stable" @echo " release of Clutter." @echo " - Installing the contents of this release will overwrite the files" @echo " from the installation of the current release of Clutter." @echo " - Bugs should be reported on the Clutter Bugzilla product, at:" @echo " http://bugzilla.gnome.org/enter_bug.cgi?product=clutter" @echo "" @$(SED) -n '1bend;/^Clutter /q;:end;2,$$p' $(top_srcdir)/NEWS | $(GREP) -v '^======' @echo "" @echo "Have fun with Clutter!" @echo "--- CUT HERE ---" release-publish: release-check $(MAKE) $(AM_MAKEFLAGS) release-tag $(MAKE) $(AM_MAKEFLAGS) release-upload $(MAKE) $(AM_MAKEFLAGS) release-message .PHONY: \ release-check \ release-message \ release-publish \ release-tag \ release-upload \ release-verify-even-micro \ release-verify-sane-changelogs