diff options
Diffstat (limited to 'maintainer')
-rw-r--r-- | maintainer/maint.mk | 39 |
1 files changed, 30 insertions, 9 deletions
diff --git a/maintainer/maint.mk b/maintainer/maint.mk index 3fe6cce63..e46b6db24 100644 --- a/maintainer/maint.mk +++ b/maintainer/maint.mk @@ -107,10 +107,16 @@ GIT = git EXTRA_DIST += lib/gnupload -base_version_rx = ^[1-9][0-9]*\.[0-9][0-9]* -stable_major_version_rx = $(base_version_rx)$$ -stable_minor_version_rx = $(base_version_rx)\.[0-9][0-9]*$$ -beta_version_rx = $(base_version_rx)(\.[0-9][0-9]*)?[bdfhjlnprtvxz]$$ +# First component of a version number (mandatory). +rx-0 = ^[1-9][0-9]* +# Later components of a version number (optional). +rx-1 = \.[0-9][0-9]* +# Used in recipes to decide which kind of release we are. +stable_major_version_rx = $(rx-0)\.0$$ +stable_minor_version_rx = $(rx-0)$(rx-1)$$ +stable_micro_version_rx = $(rx-0)$(rx-1)$(rx-1)$$ +beta_version_rx = $(rx-0)($(rx-1)){1,2}[bdfhjlnprtvxz]$$ +alpha_version_rx = $(rx-0)($(rx-1)){1,2}[acegikmoqsuwy]$$ match_version = echo "$(VERSION)" | $(EGREP) >/dev/null # Check that we don't have uncommitted or unstaged changes. @@ -131,14 +137,28 @@ determine_release_type = \ dest=ftp; \ elif $(match_version) '$(stable_minor_version_rx)'; then \ release_type='Minor release'; \ + announcement_type='minor release'; \ + dest=ftp; \ + elif $(match_version) '$(stable_micro_version_rx)'; then \ + release_type='Micro release'; \ announcement_type='maintenance release'; \ dest=ftp; \ elif $(match_version) '$(beta_version_rx)'; then \ release_type='Beta release'; \ announcement_type='test release'; \ dest=alpha; \ + elif $(match_version) '$(alpha_version_rx)'; then \ + echo "$@: improper version '$(VERSION)' for a release" >&2; \ + if test -n '$(strip $(DEVEL_SNAPSHOT))'; then \ + echo "$@: continuing anyway since DEVEL_SNAPSHOT is set" >&2; \ + release_type='Development snapshot'; \ + announcement_type='development snapshot'; \ + dest=alpha; \ + else \ + exit 1; \ + fi; \ else \ - echo "$@: invalid version '$(VERSION)' for a release" >&2; \ + echo "$@: invalid version number '$(VERSION)'" >&2; \ exit 1; \ fi @@ -146,7 +166,7 @@ determine_release_type = \ print-release-type: @$(determine_release_type); \ echo "$$release_type $(VERSION);" \ - "it will be announced as a $$announcement_type" + "it will be announced as a \"$$announcement_type\"" git-tag-release: maintainer-check @set -e -u; \ @@ -262,6 +282,7 @@ compare-autodiffs: autodiffs PACKAGE_MAILINGLIST = automake@gnu.org +announcement: DEVEL_SNAPSHOT = yes announcement: NEWS $(AM_V_GEN): \ && rm -f $@ $@-t \ @@ -294,8 +315,8 @@ announcement: NEWS && X "-*-*-*-" \ && X \ && $(AWK) '\ - ($$0 == "New in $(VERSION):") { wait_for_end=1; } \ - (/^~~~/ && wait_for_end) { exit(0) } \ + ($$0 ~ /^New in .*:/) { wait_for_end=1; } \ + (/^~~~/ && wait_for_end) { print; exit(0) } \ { print } \ ' <$(srcdir)/NEWS >> $@-t \ && mv -f $@-t $@ @@ -391,7 +412,7 @@ web-manual: web-manual-update: $(AM_V_at)$(determine_release_type); \ case $$release_type in \ - [Mm]ajor\ release|[Mm]inor\ release);; \ + [Mm]ajor\ release|[Mm]inor\ release|[Mm]icro\ release);; \ *) echo "Cannot upload manuals from a \"$$release_type\"" >&2; \ exit 1;; \ esac |