From 96db215ed3bb79915bfb5b9e037d116c83876a8d Mon Sep 17 00:00:00 2001 From: Emmanuele Bassi Date: Sun, 3 Oct 2010 14:53:14 +0100 Subject: [PATCH] build: Automate the release process --- Makefile.am | 12 +++-- build/autotools/Makefile.am | 1 + build/autotools/Makefile.am.release | 68 +++++++++++++++++++++++++++++ 3 files changed, 77 insertions(+), 4 deletions(-) create mode 100644 build/autotools/Makefile.am.release diff --git a/Makefile.am b/Makefile.am index 338cf3803..7abedfc66 100644 --- a/Makefile.am +++ b/Makefile.am @@ -6,10 +6,6 @@ SUBDIRS = build clutter tests doc po ACLOCAL_AMFLAGS = -I build/autotools -.PHONY: test-report full-report -test-report full-report: - $(MAKE) -C tests/conform $(@) - EXTRA_DIST = \ ChangeLog.pre-git-import \ $(NULL) @@ -31,6 +27,14 @@ MAINTAINERCLEANFILES = \ $(NULL) include $(top_srcdir)/build/autotools/Makefile.am.changelog +include $(top_srcdir)/build/autotools/Makefile.am.release +# proxy rule for gcov gcov: @( cd clutter && $(MAKE) $(AM_MAKEFLAGS) $@ ) || exit $$? + +# proxy rules for tests +test-report full-report: + $(MAKE) -C tests/conform $(@) + +.PHONY: gcov test-report full-report diff --git a/build/autotools/Makefile.am b/build/autotools/Makefile.am index 9e3da3ae8..c30c32274 100644 --- a/build/autotools/Makefile.am +++ b/build/autotools/Makefile.am @@ -7,6 +7,7 @@ EXTRA_DIST = \ Makefile.am.changelog \ Makefile.am.gcov \ Makefile.am.gitignore \ + Makefile.am.release \ introspection.m4 \ gtk-doc.m4 \ as-compiler-flag.m4 \ diff --git a/build/autotools/Makefile.am.release b/build/autotools/Makefile.am.release new file mode 100644 index 000000000..792be5575 --- /dev/null +++ b/build/autotools/Makefile.am.release @@ -0,0 +1,68 @@ +# 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-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 + TAR_OPTIONS="$(TAR_OPTIONS)" $(MAKE) $(AM_MAKEFLAGS) distcheck + +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: $(distdir).tar.bz2 + @scp $(distdir).tar.bz2 $(RELEASE_UPLOAD_DIR) + +release-message: + @echo "Release URL: $(RELEASE_URL)/$(distdir).tar.bz2" + @echo "Release checksum: $(RELEASE_URL)/$(disdir).sha256sum" + +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