summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEric Blake <ebb9@byu.net>2008-04-02 14:12:24 -0600
committerEric Blake <ebb9@byu.net>2008-04-02 14:14:56 -0600
commitd8075cd139b9523c1b59f4f35bdf80e6760d31e1 (patch)
tree9feddb0d006e70cd5f30e4106d068160a3bf3332
parenta86f1dcafc38e4e18ba5dc87a18cafaf44fe8a09 (diff)
downloadm4-d8075cd139b9523c1b59f4f35bdf80e6760d31e1.tar.gz
Improve release process.
* maint.mk (alpha): Check for PREV_VERSION setting sooner, and remove tag operation. (version-check): Enhance this check. (prev-tarball): Depend on version-check. (web-manual): Fix VPATH usage. (this-vc-tag): Delete, and mention need to run tag... * HACKING: ...here, prior to make maintainer-distcheck. Update the instructions to match this particular release process. * Makefile.am (.version, announcement): Allow for VPATH build. * cfg.mk (gnulib_dir): Likewise. * doc/Makefile.am ($(srcdir)/m4.1): Include release number in man page. Signed-off-by: Eric Blake <ebb9@byu.net> (cherry picked from commit c07173b0a58b56c07633a28323d56451b98b7de5) Conflicts:
-rw-r--r--ChangeLog16
-rw-r--r--HACKING53
-rw-r--r--Makefile.am4
-rw-r--r--cfg.mk2
-rw-r--r--doc/Makefile.am8
-rw-r--r--maint.mk23
6 files changed, 61 insertions, 45 deletions
diff --git a/ChangeLog b/ChangeLog
index 9991edca..269480b0 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,19 @@
+2008-04-02 Eric Blake <ebb9@byu.net>
+
+ Improve release process.
+ * maint.mk (alpha): Check for PREV_VERSION setting sooner, and
+ remove tag operation.
+ (version-check): Enhance this check.
+ (prev-tarball): Depend on version-check.
+ (web-manual): Fix VPATH usage.
+ (this-vc-tag): Delete, and mention need to run tag...
+ * HACKING: ...here, prior to make maintainer-distcheck.
+ Update the instructions to match this particular release process.
+ * Makefile.am (.version, announcement): Allow for VPATH build.
+ * cfg.mk (gnulib_dir): Likewise.
+ * doc/Makefile.am ($(srcdir)/m4.1): Include release number in man
+ page.
+
2008-03-27 Eric Blake <ebb9@byu.net>
Add test for divert bug on 2007-05-28, patched 2007-07-21.
diff --git a/HACKING b/HACKING
index b365923c..73b61cf3 100644
--- a/HACKING
+++ b/HACKING
@@ -41,7 +41,7 @@ and is not part of a release distribution.
* The master M4 repository is stored in git.
* Before you can build from git, you need to bootstrap. This requires:
- - A pre-installed version of GNU M4 1.4 or later, built from a package
+ - A pre-installed version of GNU M4 1.4.5 or later, built from a package
- Autoconf 2.60 or later
- Automake 1.10.1 or later
- Help2man 1.29 or later
@@ -81,7 +81,7 @@ and is not part of a release distribution.
liberally, on as many platforms as you can. Use as many compilers and
linkers you can.
-* For branch-1_4, the testsuite is generated from the documentation.
+* For branch-1.6, the testsuite is generated from the documentation.
All instances of @example in doc/m4.texinfo that are not preceeded by
"@comment ignore" are turned into tests in the checks directory.
@@ -195,11 +195,12 @@ yyyy-mm-dd Name of Author <email@address> (tiny change)
* Make sure your locale is sane, e.g. by exporting LC_ALL=C.
-* Update the version number in configure.ac.
- See http://www.gnu.org/software/libtool/contribute.html for details of
- the numbering scheme (m4 uses the same scheme as libtool).
-
-* Update NEWS, configure.ac, README, ChangeLog.
+* Update the version number in NEWS and ChangeLog, and mention in README
+ whether the release is stable. See
+ http://www.gnu.org/software/libtool/contribute.html for details of the
+ numbering scheme (M4 uses a similar scheme to libtool, although
+ intra-release versions carry more information thanks to
+ git-version-gen).
* Run ./bootstrap.
@@ -209,43 +210,51 @@ yyyy-mm-dd Name of Author <email@address> (tiny change)
be up-to-date with m4 --help output, but `make dist' intentionally
does not depend on running a built binary.
-* Run `make maintainer-distcheck'. If there are any problems, fix them
- and start again.
-
* Run `git commit' from the source tree if there are any changes from
the previous steps.
+* Run `git tag -s -m <version> -u <gpg_key> v<version>' with the desired
+ version number. Do not push anything upstream at this point.
+
+* Run `make maintainer-distcheck'. If there are any problems, fix them,
+ run `git tag -d v<version>' and start again from the `git commit' step.
+
* Run `make <target> PREV_VERSION=maj.min[.mic[alpha]]', with target set
to `major', `alpha', or `beta' as appropriate. This will run various
- additional checks, tag the tree with release-$(VERSION), and create
- diff and xdelta files from the previous version.
+ additional checks and create diff and xdelta files from the previous
+ version.
* Run './build-aux/gnupload --to [dest].gnu.org:m4 [files]' to create
detached gpg signature and clear signed directive files, and upload
the combination to the correct location. For an alpha release,
gnupload will place files in alpha.gnu.org, in /incoming/alpha, and
the xdelta file is not strictly necessary. For a full release,
- gnupload will place files in ftp.gnu.org, in /incoming/ftp.
+ gnupload will place files in ftp.gnu.org, in /incoming/ftp. Verify
+ that the files uploaded successfully before sending an announcement.
* Send announcement to m4-discuss@gnu.org, m4-announce@gnu.org, and
autotools-announce@gnu.org. If not an alpha send to info-gnu@gnu.org
as well. Use /tmp/announce-m4-<version>, created during the above
- make run, as a starting point. Contact a list administrator for
- m4-announce in advance to ensure your post will make it through (the
- list is normally set to silently discard all posts, even from
- subscribers).
+ `make <target>' run, as a starting point. Contact a list
+ administrator for m4-announce in advance to ensure your post will make
+ it through (the list is normally set to silently discard all posts,
+ even from subscribers).
* Update version number in configure.ac to next alpha number.
See http://www.gnu.org/software/libtool/contribute.html for details of
the numbering scheme.
-* Update NEWS, configure.ac, ChangeLog.
+* Update NEWS, README, and ChangeLog to start the intra-release changes,
+ and run `git commit'. Then run `git push origin refs/tags/v<version>'
+ to push the release tag and complete the release.
-* Run `git commit' and `git push origin refs/tags<version>' to push the
- release tag.
+* For non-alpha releases, update the webpages. Run `make web-manual',
+ then copy the contents of doc/manual into a CVS checkout of the M4
+ manual repository. Also edit m4.html before doing a CVS checkin.
+ export CVS_RSH=ssh
+ cvs -z3 -d:ext:<user>@cvs.savannah.gnu.org:/web/m4 co m4
-* For non-alpha releases, update the webpages. Replace manual.html with
- the new one (generate with `make web-manual').
+* Post a news blurb on https://savannah.gnu.org/projects/m4.
--
Copyright (C) 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
diff --git a/Makefile.am b/Makefile.am
index 81ea47e4..a67b4159 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -34,8 +34,8 @@ MAINTAINERCLEANFILES = COPYING INSTALL Makefile.in aclocal.m4 \
ACLOCAL_AMFLAGS = -I m4
DISTCHECK_CONFIGURE_FLAGS = --enable-changeword
-BUILT_SOURCES = .version
-.version:
+BUILT_SOURCES = $(top_srcdir)/.version
+$(top_srcdir)/.version:
echo $(VERSION) > $@-t && mv $@-t $@
# Arrange so that .tarball-version appears only in the distribution
diff --git a/cfg.mk b/cfg.mk
index 142980fc..99abe29f 100644
--- a/cfg.mk
+++ b/cfg.mk
@@ -34,4 +34,4 @@ local-checks-to-skip = changelog-check
# The local directory containing the checked-out copy of gnulib used in this
# release. Used solely to get gnulib's SHA1 for the "announcement" target.
-gnulib_dir = ../gnulib
+gnulib_dir = $(srcdir)/../gnulib
diff --git a/doc/Makefile.am b/doc/Makefile.am
index b5cd3605..b1b7eac8 100644
--- a/doc/Makefile.am
+++ b/doc/Makefile.am
@@ -1,6 +1,6 @@
## Makefile.am - template for generating Makefile via Automake
##
-## Copyright (C) 2006, 2007 Free Software Foundation, Inc.
+## Copyright (C) 2006, 2007, 2008 Free Software Foundation, Inc.
##
## This file is part of GNU M4.
##
@@ -27,15 +27,15 @@ MAINTAINERCLEANFILES = $(man_MANS) gendocs_template
SUFFIXES = .1
HELP2MAN = $(SHELL) $(top_srcdir)/build-aux/missing --run help2man
-# Depend on configure.ac for version, m4.c for usage text. Do not depend on
+# Depend on ../.version for version, m4.c for usage text. Do not depend on
# built m4 executable, since not everyone has help2man or perl.
# Build the man page once in the srcdir, rather than in every VPATH build
# dir, to match how automake builds info pages. This is safe for 'make
# distcheck' since it is distributed pre-built.
-$(srcdir)/m4.1: $(top_srcdir)/configure.ac $(top_srcdir)/src/m4.c
+$(srcdir)/m4.1: $(top_srcdir)/.version $(top_srcdir)/src/m4.c
@if test -x ../src/m4$(EXEEXT) ; then \
echo "Updating man page m4.1" ; \
- $(HELP2MAN) --name="macro processor" --source=FSF \
+ $(HELP2MAN) --name="macro processor" --source='$(PACKAGE_STRING)' \
--info-page=m4 --output=$@ ../src/m4$(EXEEXT) ; \
else \
echo "WARNING: The \`man' page \`$@' cannot be updated yet."; \
diff --git a/maint.mk b/maint.mk
index c9b51d81..df98eca5 100644
--- a/maint.mk
+++ b/maint.mk
@@ -27,19 +27,11 @@ gzip_rsyncable := \
$(shell gzip --help 2>/dev/null|grep rsyncable >/dev/null && echo --rsyncable)
GZIP_ENV = '--no-name --best $(gzip_rsyncable)'
-CVS = cvs
GIT = git
VC = $(GIT)
VC-tag = git tag -s -m '$(VERSION)' -u $(gpg_key_ID)
VERSION_REGEXP = $(subst .,\.,$(VERSION))
-ifeq ($(VC),$(GIT))
-this-vc-tag = v$(VERSION)
-else
-tag-package = $(shell echo "$(PACKAGE)" | tr '[:lower:]' '[:upper:]')
-tag-this-version = $(subst .,_,$(VERSION))
-this-vc-tag = $(tag-package)-$(tag-this-version)
-endif
my_distdir = $(PACKAGE)-$(VERSION)
# Ensure that we use only the standard $(VAR) notation,
@@ -130,19 +122,19 @@ my-distcheck: $(local-check) check
gnulib-version = $$(cd $(gnulib_dir) && git describe)
announcement: NEWS ChangeLog $(rel-files)
- @./build-aux/announce-gen \
+ @$(srcdir)/build-aux/announce-gen \
--release-type=$(RELEASE_TYPE) \
--package=$(PACKAGE) \
--prev=$(PREV_VERSION) \
--curr=$(VERSION) \
--gpg-key-id=$(gpg_key_ID) \
- --news=NEWS \
+ --news=$(srcdir)/NEWS \
--bootstrap-tools=autoconf,automake,gnulib \
--gnulib-version=$(gnulib-version) \
$(addprefix --url-dir=, $(url_dir_list))
.PHONY: alpha beta major
-alpha beta major: $(local-check)
+alpha beta major: $(local-check) version-check
test $@ = major \
&& { echo $(VERSION) | grep -E '^[0-9]+(\.[0-9]+)+$$' \
|| { echo "invalid version string: $(VERSION)" 1>&2; exit 1;};}\
@@ -151,7 +143,6 @@ alpha beta major: $(local-check)
$(MAKE) news-date-check changelog-check
$(MAKE) deltas
$(MAKE) -s announcement RELEASE_TYPE=$@ > /tmp/announce-$(my_distdir)
- $(VC-tag) $(this-vc-tag)
.PHONY: version-check
version-check:
@@ -162,12 +153,12 @@ version-check:
exit 1; \
;; \
esac
+ @if test -z "$(PREV_VERSION)"; \
+ then echo "PREV_VERSION is not set"; exit 1; fi
.PHONY: prev-tarball
-prev-tarball:
+prev-tarball: version-check
## Make sure we have the previous release tarball in the tree.
- @if test -z "$(PREV_VERSION)"; \
- then echo "PREV_VERSION is not set"; exit 1; fi
@ofile="$(PACKAGE)-$(PREV_VERSION).tar.gz"; \
if test -f $$ofile; then :; \
else echo "Cannot make deltas without $$ofile"; exit 1; fi
@@ -226,6 +217,6 @@ delta-xdelta: prev-tarball new-tarball got-xdelta
.PHONY: web-manual
web-manual:
@cd ./doc ; \
- $(SHELL) $(srcdir)/build-aux/gendocs.sh $(PACKAGE) \
+ $(SHELL) $(abs_srcdir)/build-aux/gendocs.sh $(PACKAGE) \
"GNU $(PACKAGE)- GNU macro processor"
@echo " *** Upload the doc/manual directory to web-cvs."