mutter/build/autotools/Makefile.am.release
Emmanuele Bassi 280165333d build: Cosmetic fixes for release targets
• Use $(SED) and $(GREP) consistently
• Do not point to the template README.in
• Eliminate the '===' separator in the NEWS extractor
• List all download URIs for the tarballs
2011-04-05 11:24:03 +01:00

158 lines
6.1 KiB
Makefile

# 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_URLS = 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_DOCS_URL)/clutter/$(CLUTTER_MAJOR_VERSION).$(CLUTTER_MINOR_VERSION)/"
@echo " Cogl: $(RELEASE_DOCS_URL)/cogl/$(CLUTTER_MAJOR_VERSION).$(CLUTTER_MINOR_VERSION)/"
@echo " Cally: $(RELEASE_DOCS_URL)/cally/$(CLUTTER_MAJOR_VERSION).$(CLUTTER_MINOR_VERSION)/"
@echo " Cookbook: $(RELEASE_DOCS_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