X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=maintainer%2Fmaint.mk;h=d180b09b7d83872f9e30b9bded0351121c9fcdd5;hb=a9926a4cef6defb457218042bbed8784e5c47330;hp=ac29a72da56ee2f66ff0dbb68b42176f4613f597;hpb=6aaa128d3a20fd3e3cc60a695be1f7368203a688;p=platform%2Fupstream%2Fautomake.git diff --git a/maintainer/maint.mk b/maintainer/maint.mk index ac29a72..d180b09 100644 --- a/maintainer/maint.mk +++ b/maintainer/maint.mk @@ -18,6 +18,9 @@ # Avoid CDPATH issues. unexport CDPATH +# Program to use to fetch files from the Net. +WGET = wget + # --------------------------------------------------------- # # Automatic generation of the ChangeLog from git history. # # --------------------------------------------------------- # @@ -104,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. @@ -128,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 @@ -143,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; \ @@ -259,6 +282,7 @@ compare-autodiffs: autodiffs PACKAGE_MAILINGLIST = automake@gnu.org +announcement: DEVEL_SNAPSHOT = yes announcement: NEWS $(AM_V_GEN): \ && rm -f $@ $@-t \ @@ -291,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 $@ @@ -303,9 +327,6 @@ CLEANFILES += announcement # Synchronize third-party files that are committed in our repository. # # --------------------------------------------------------------------- # -# Program to use to fetch files. -WGET = wget - # Git repositories on Savannah. git-sv-host = git.savannah.gnu.org @@ -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 @@ -480,13 +501,84 @@ update-copyright: | grep -Ev "^($$excluded_re)$$" \ | $(update_copyright_env) xargs $(srcdir)/lib/$@ +# -------------------------------------------------------------- # +# Run the testsuite with the least supported autoconf version. # +# -------------------------------------------------------------- # + +gnu-ftp = http://ftp.gnu.org/gnu + +# Various shorthands: version, name, package name, tarball name, +# tarball location, installation directory. +ac-v = $(required_autoconf_version) +ac-n = autoconf +ac-p = $(ac-n)-$(ac-v) +ac-t = $(ac-p).tar.gz +ac-l = maintainer/$(ac-t) +ac-d = maintainer/$(ac-p) + +fetch-minimal-autoconf: o = $(ac-l) +fetch-minimal-autoconf: + $(AM_V_at)$(MKDIR_P) $(dir $o) + $(AM_V_at)rm -f $o $o-t + $(AM_V_GEN)$(WGET) -O $o-t $(gnu-ftp)/$(ac-n)/$(ac-t) + $(AM_V_at)chmod a-w $o-t && mv -f $o-t $o && ls -l $o +.PHONY: fetch-minimal-autoconf + +build-minimal-autoconf: + $(AM_V_GEN):; \ + test -f $(ac-l) || { \ + echo "$@: tarball $(ac-l) seems missing." >&2; \ + echo "$@: have you run '$(MAKE) fetch-minimal-autoconf'?" >&2; \ + exit 1; \ + }; \ + set -x \ + && $(PERL) $(srcdir)/t/ax/deltree.pl $(ac-d) \ + && $(MKDIR_P) $(ac-d) \ + && cd $(ac-d) \ + && tar xzf '$(CURDIR)/$(ac-l)' \ + && mv $(ac-p) src \ + && mkdir build \ + && cd build \ + && env CONFIG_SHELL='$(SHELL)' $(SHELL) ../src/configure \ + --prefix='$(CURDIR)/$(ac-d)' CONFIG_SHELL='$(SHELL)' \ + && $(MAKE) install + $(AM_V_at)echo ' ======' && $(ac-d)/bin/autoconf --version +.PHONY: build-minimal-autoconf + +check-minimal-autoconf: + $(AM_V_at)p='$(ac-d)/bin/autoconf'; \ + if test ! -f "$$p" || test ! -x "$$p"; then \ + echo "$@: program '$$p' seems missing." >&2; \ + echo "$@: have you run '$(MAKE) build-minimal-autoconf'?" >&2; \ + exit 1; \ + fi + $(AM_V_GEN): \ + && PATH='$(CURDIR)/$(ac-d)/bin$(PATH_SEPARATOR)'$$PATH \ + && export PATH \ + && AUTOCONF=autoconf \ + && AUTOHEADER=autoheader \ + && AUTORECONF=autoreconf \ + && AUTOM4TE=autom4te \ + && AUTOUPDATE=autoupdate \ + && export AUTOCONF AUTOHEADER AUTORECONF AUTOM4TE AUTOUPDATE \ + && echo === check autoconf version '(must be = $(ac-v))' \ + && autoconf --version \ + && autoconf --version | sed -e 's/^/ /; s/$$/ /' -e 1q \ + | $(FGREP) '$(ac-v)' >/dev/null \ + && echo === configure \ + && $(srcdir)/configure $(shell ./config.status --config) \ + && echo === build and test \ + && $(MAKE) check +.PHONY: check-minimal-autoconf + + # --------------------------------------------------------------- # # Testing on real-world packages can help us avoid regressions. # # --------------------------------------------------------------- # # # NOTE (from Stefano Lattarini): -# +# # This section is mostly hacky and ad-hoc, but works for me and # on my system. And while far from clean, it should help catching # real regressions on real world packages, which is important.