From d60898726448f816345b1c69cba053ff46b039f8 Mon Sep 17 00:00:00 2001 From: Scott James Remnant Date: Tue, 27 Jan 2004 12:38:47 +0000 Subject: [PATCH] This fixes release procedure problems discovered whilst making the 1.5.2 release. * Makefile.am (cvs-dist): Because we check whether ChangeLog has been committed, this rule can't be run with uncommitted source so we can't run 'commit' and don't need to run 'make dist' a second time. Fix CVS tag as it should be "release-X" not "Release-X". (cvs_commit): New rule for the cvs-release chain that runs 'commit' (cvs-release): Depend on cvs-commit, depend on deltas instead of cvs-diff and xdelta. (cvs-diff): Removed, replaced with delta-diff. (delta-diff): Unpack and diff the old and new tarballs rather than using CVS, so we get a genuinely complete diff. (xdelta): Removed, replaced with delta-xdelta. (got-xdelta): New rule for improved reading. (delta-xdiff): Copied and cleaned up version of old xdelta rule. (deltas): Depends on delta-diff and delta-xdelta (make deltas). (cvs-news): Don't depend on timestamps, cvs-dist itself does now. (prev-tarball): This is the only place we need a LASTRELEASE check so copy the code here and remove the CHECK_RELEASE variable. (new-tarball): Check there's a new tarball (did cvs-dist work?) (FETCHFILES): Remove obsolete libltdl mentions. * README-alpha: Update CVS instructions as everything's changed on Savannah. (Release procedure): Update NEWS and ChangeLog after changing the version number (both times); Run 'make fetch' after running 'configure' (difficult to do it beforehand); Require 'commit' before 'make cvs-dist' as that checks ChangeLog is committed; 'make deltas' instead of 'cvs-diff' and 'xdelta', pass LASTRELEASE to make instead of OLDVERSION (and it's mandatory); Clean up uploading paragraph; Clearer announcement sending instruction; Removed ftp-upload@gnu.org mail as that's not necessary now; Make web page updating instructions a bit clearer; Add an instruction to update the manual for non-alphas. (Alpha release note template): Add a Subject; update CVS instructions. (Full release note template): Add a Subject; update CVS instructions. * configure.ac: Add dist-bzip2 to AM_INIT_AUTOMAKE as we talk about bz2 files in our release announcements; remove old reference to OLDVERSION. --- ChangeLog | 44 ++++++++++++++++++++++ Makefile.am | 104 +++++++++++++++++++++++++++++---------------------- README-alpha | 74 +++++++++++++++++++----------------- configure.ac | 4 +- 4 files changed, 145 insertions(+), 81 deletions(-) diff --git a/ChangeLog b/ChangeLog index abc49662..1ae7630d 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,47 @@ +2004-01-27 Scott James Remnant + + This fixes release procedure problems discovered whilst making + the 1.5.2 release. + + * Makefile.am (cvs-dist): Because we check whether ChangeLog + has been committed, this rule can't be run with uncommitted + source so we can't run 'commit' and don't need to run + 'make dist' a second time. Fix CVS tag as it should be + "release-X" not "Release-X". + (cvs_commit): New rule for the cvs-release chain that runs + 'commit' + (cvs-release): Depend on cvs-commit, depend on deltas instead of + cvs-diff and xdelta. + (cvs-diff): Removed, replaced with delta-diff. + (delta-diff): Unpack and diff the old and new tarballs rather + than using CVS, so we get a genuinely complete diff. + (xdelta): Removed, replaced with delta-xdelta. + (got-xdelta): New rule for improved reading. + (delta-xdiff): Copied and cleaned up version of old xdelta rule. + (deltas): Depends on delta-diff and delta-xdelta (make deltas). + (cvs-news): Don't depend on timestamps, cvs-dist itself does now. + (prev-tarball): This is the only place we need a LASTRELEASE check + so copy the code here and remove the CHECK_RELEASE variable. + (new-tarball): Check there's a new tarball (did cvs-dist work?) + (FETCHFILES): Remove obsolete libltdl mentions. + * README-alpha: Update CVS instructions as everything's changed + on Savannah. + (Release procedure): Update NEWS and ChangeLog after changing + the version number (both times); Run 'make fetch' after running + 'configure' (difficult to do it beforehand); Require 'commit' + before 'make cvs-dist' as that checks ChangeLog is committed; + 'make deltas' instead of 'cvs-diff' and 'xdelta', pass LASTRELEASE + to make instead of OLDVERSION (and it's mandatory); Clean up + uploading paragraph; Clearer announcement sending instruction; + Removed ftp-upload@gnu.org mail as that's not necessary now; + Make web page updating instructions a bit clearer; Add an instruction + to update the manual for non-alphas. + (Alpha release note template): Add a Subject; update CVS instructions. + (Full release note template): Add a Subject; update CVS instructions. + * configure.ac: Add dist-bzip2 to AM_INIT_AUTOMAKE as we talk + about bz2 files in our release announcements; remove old reference + to OLDVERSION. + 2004-01-25 Scott James Remnant * NEWS: Include 1.5.2 release information. diff --git a/Makefile.am b/Makefile.am index 59557164..f29f7e78 100644 --- a/Makefile.am +++ b/Makefile.am @@ -87,12 +87,9 @@ install-data-local: ## not to anybody else (inspiration from automake/Makefile.am). ## ## ---------------------------------------------------------------- ## -CHECK_LASTRELEASE = if test -z "$(LASTRELEASE)"; \ - then echo "LASTRELEASE is not set"; exit 1; fi - .PHONY: cvs-release -cvs-release: version-check prev-tarball cvs-news fetch cvs-dist cvs-diff xdelta - @$(CHECK_LASTRELEASE); tarname="$(PACKAGE)-$(VERSION).tar.gz"; \ +cvs-release: version-check prev-tarball cvs-news fetch cvs-commit cvs-dist deltas + @tarname="$(PACKAGE)-$(VERSION).tar.gz"; \ diffname="$(PACKAGE)-$(LASTRELEASE)-$(VERSION).diff.gz"; \ xdeltaname="$(PACKAGE)-$(LASTRELEASE)-$(VERSION).xdelta"; \ echo " *** Upload $$tarname, $$tarname.sig,";\ @@ -115,9 +112,11 @@ version-check: .PHONY: prev-tarball prev-tarball: ## Make sure we have the previous release tarball in the tree. - @$(CHECK_LASTRELEASE); ofile="$(PACKAGE)-$(LASTRELEASE).tar.gz"; \ + @if test -z "$(LASTRELEASE)"; \ + then echo "LASTRELEASE is not set"; exit 1; fi + @ofile="$(PACKAGE)-$(LASTRELEASE).tar.gz"; \ if test -f $$ofile; then :; \ - else echo "Cannot make xdelta without $$ofile"; exit 1; fi + else echo "Cannot make deltas without $$ofile"; exit 1; fi # TSDEPS will be defined to TSDEPS_DIST at `make dist' time TSDEPS = @@ -133,7 +132,7 @@ update-timestamps: .PHONY: cvs-news -cvs-news: timestamps +cvs-news: ## Make sure the NEWS file is up-to-date: @if sed '1,2d;3q' $(srcdir)/NEWS | grep -e "$(VERSION)" >/dev/null; \ then :; \ @@ -151,9 +150,7 @@ WGETSGO = $(WGET) http://savannah.gnu.org/cgi-bin/viewcvs/~checkout~ FETCHFILES = \ ./INSTALL \ config/config.guess \ -libltdl/config.guess \ config/config.sub \ -libltdl/config.sub \ config/texinfo.tex ## Fetch the latest versions of files we care about. @@ -186,46 +183,33 @@ fetch: GPG = gpg # set it to `:' to avoid gpg operations +.PHONY: cvs-commit +cvs-commit: cvs-news + cd $(srcdir) && $(SHELL) ./commit + .PHONY: cvs-dist -cvs-dist: cvs-news +cvs-dist: cvs-news timestamps ## Build the distribution: $(MAKE) distcheck -## Finally, if everything was successful, commit the last changes and tag -## the release in the repository: +## Finally, if everything was successful, tag the release cd $(srcdir) \ - && $(SHELL) ./commit \ - && $(CVS) -q tag -c `echo "Release-$(VERSION)" | sed 's/\./-/g'` -## We do want the timestamped version numbers from the CVS keywords in -## ChangeLog to be correct, so we must rebuild the release tarball after -## a successfull commit, and then generate the signatures needed for -## FSF ftp-upload: + && $(CVS) -q tag -c `echo "release-$(VERSION)" | sed 's/\./-/g'` +## Generate signatures and directives for FSF ftp-upload: ofile="$(PACKAGE)-$(VERSION).tar.gz"; \ - $(MAKE) dist \ - && $(GPG) --detach-sign $$ofile \ - && echo "directory: libtool" > $$ofile.directive \ - && $(GPG) --clearsign $$ofile.directive \ - && rm -f $$ofile.directive + $(GPG) --detach-sign $$ofile \ + && echo "directory: libtool" > $$ofile.directive \ + && $(GPG) --clearsign $$ofile.directive \ + && rm -f $$ofile.directive -.PHONY: cvs-diff -cvs-diff: -## Figure out which cvs tags we are diffing, and if the diff works we -## compress it and then generate the signatures needed for FSF ftp-upload: - thisver=`echo "release-$(VERSION)" | sed 's/\./-/g'`; \ - $(CHECK_LASTRELEASE); \ - prevver=release-`echo $(LASTRELEASE) | sed 's/\./-/g'`; \ - ofile="$(PACKAGE)-$(LASTRELEASE)-$(VERSION).diff.gz"; \ - $(CVS) -f rdiff -c -r $$prevver -r $$thisver $(PACKAGE) \ - | GZIP=$(GZIP_ENV) gzip -c > $$ofile \ - && $(GPG) --detach-sign $$ofile \ - && echo "directory: libtool" > $$ofile.directive \ - && $(GPG) --clearsign $$ofile.directive \ - && rm -f $$ofile.directive +.PHONY: new-tarball +new-tarball: +## Make sure we have the new release tarball in the tree. + @ofile="$(PACKAGE)-$(VERSION).tar.gz"; \ + if test -f $$ofile; then :; \ + else echo "Cannot make deltas without $$ofile"; exit 1; fi -XDELTA = xdelta -XDELTA_OPTIONS = --pristine -9 - -.PHONY: xdelta -xdelta: prev-tarball +.PHONY: got-xdelta +got-xdelta: ## Make sure xdelta exists; @if ($(XDELTA) --version 2>&1 | grep version)>/dev/null 2>/dev/null; \ then :;\ @@ -233,10 +217,41 @@ xdelta: prev-tarball echo "Get xdelta from http://sourceforge.net/projects/xdelta."; \ exit 1; \ fi + +.PHONY: deltas +deltas: delta-diff delta-xdelta + +DIFF = diff +DIFF_OPTIONS = -ruNp + +.PHONY: delta-diff +delta-diff: prev-tarball new-tarball +## Unpack the tarballs somewhere to diff them + rm -rf delta-diff + mkdir delta-diff + + ofile="../$(PACKAGE)-$(LASTRELEASE)-$(VERSION).diff.gz"; \ + cd delta-diff \ + && tar xzf "../$(PACKAGE)-$(LASTRELEASE).tar.gz" \ + && tar xzf "../$(PACKAGE)-$(VERSION).tar.gz" \ + && $(DIFF) $(DIFF_OPTIONS) \ + $(PACKAGE)-$(LASTRELEASE) $(PACKAGE)-$(VERSION) \ + | GZIP=$(GZIP_ENV) gzip -c > $$ofile \ + && $(GPG) --detach-sign $$ofile \ + && echo "directory: libtool" > $$ofile.directive \ + && $(GPG) --clearsign $$ofile.directive \ + && rm -f $$ofile.directive + + rm -rf delta-diff + +XDELTA = xdelta +XDELTA_OPTIONS = --pristine -9 + +.PHONY: delta-xdelta +delta-xdelta: prev-tarball new-tarball got-xdelta ## Generate the delta file (xdelta has wierd exit statuses, so we need to ## add some shell code to keep make happy), and then generate the signatures ## for FSF ftp-upload: - $(CHECK_LASTRELEASE); \ ofile="$(PACKAGE)-$(LASTRELEASE)-$(VERSION).xdelta"; \ ( test -z `$(XDELTA) delta $(XDELTA_OPTIONS) \ $(PACKAGE)-$(LASTRELEASE).tar.gz $(PACKAGE)-$(VERSION).tar.gz \ @@ -246,3 +261,4 @@ xdelta: prev-tarball && echo "directory: libtool" > $$ofile.directive \ && $(GPG) --clearsign $$ofile.directive \ && rm -f $$ofile.directive + diff --git a/README-alpha b/README-alpha index f3d0be70..79af92db 100644 --- a/README-alpha +++ b/README-alpha @@ -1,9 +1,8 @@ This is an alpha testing release of GNU Libtool. To get the latest CVS version of this package, do: - cvs -d :pserver:anoncvs@subversions.gnu.org:/home/cvs login - [Hit return when prompted for the password] - cvs -d :pserver:anoncvs@subversions.gnu.org:/home/cvs checkout libtool + export CVS_RSH=ssh + cvs -z3 -d :ext:anoncvs@savannah.gnu.org:/cvsroot/libtool co libtool cd libtool ./bootstrap @@ -83,56 +82,63 @@ using (by typing `libtool --version'). keys will be registered on ftp-upload.gnu.org and only then will you be authorized to upload files to the FSF ftp machines. -* Update NEWS, ChangeLog. - * Update the version number in configure.ac. See http://www.gnu.org/software/libtool/contribute.html for details of the numbering scheme. +* Update NEWS, ChangeLog. + * Run ./bootstrap. +* Run ./configure and then make. + * Run `make fetch', which will fetch new versions of the files that are maintained outside of libtool. -* Run ./configure and then make. +* Run ./commit. * Run `make cvs-dist' which will build a release tarball (with `make - distcheck'), commit the last NEWS, ChangeLog and configure.ac changes, - tag the tree with release-$(VERSION), and generate gpg signature files. - -* Run `make cvs-diff' which will create a diff file against the previous - release tag (set OLDVERSION=min.maj[.mic[alpha]] in the environment - beforehand if necessary), and generate gpg signature files. + distcheck'), tag the tree with release-$(VERSION) and generate the + gpg signature files. * Make sure you have a copy of xdelta installed, and a copy of the previous - release tarball in the build directory, then run `make xdelta', which will - create an xdelta file between this and the previous release tarballs (set - OLDVERSION=min.maj[.mic[alpha]] in the environment beforehand if necessary), - and generate gpg signature files. + release tarball in the build directory. + +* Run 'make deltas' (pass LASTRELEASE=min.maj[.mic[alpha]] if needed) to + create both diff and xdelta files between the previous release tarball + and the new with detached gpg signature files and clear signed directive + files. * Upload release tarball, diff file and xdelta file, plus their associated detached gpg signature files and clear signed directive files to - ftp-upload.gnu.org. If the upload is destined for ftp.gnu.org, then the + ftp-upload.gnu.org. If the upload is destined for ftp.gnu.org, then the files should be placed in the /incoming/ftp directory. If the upload is an alpha release destined for alpha.gnu.org, then the files should be - placed in the /incoming/alpha directory.incoming/ftp/gnu/libtool. Then send - announcement to libtool@gnu.org and autotools-announce@gnu.org. - -* If not an alpha, announcement must also go to info-gnu@gnu.org, and an - upload request be sent to ftp-upload@gnu.org requesting files be transferred - from ftp://alpha.gnu.org/gnu/libtool to ftp://ftp.gnu.org/gnu/libtool. + placed in the /incoming/alpha directory. +* Send announcement to libtool@gnu.org and autotools-announce@gnu.org, + if not an alpha send to info-gnu@gnu.org as well. + * 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. -* Commit. +* Update NEWS, ChangeLog. -* Update the front libtool webpage to indicate the latest release - number, and the news page to reflect the latest release note. +* Run ./commit. + +* Update the webpages, libtool.html will need to indicate the latest + release number and the news page should get a HTMLified copy of your + release announcement. + +* If not an alpha, replace manual.html with the new one + (generate with cd doc && texi2html libtool.texi) ================================================================ = Alpha release note template To: libtool@gnu.org, autotools-announce@gnu.org +Subject: GNU Libtool @VERSION@ released (alpha release). The Libtool Team is pleased to announce alpha release @VERSION@ of GNU Libtool. @@ -177,12 +183,10 @@ but is useable with @COMPATIBLE_AUTOTOOL_VERSIONS@ in your own projects. Alternatively, you can fetch the unbootstrapped sourcecode from -anonymous cvs by using the following commands (just hit return when -you are prompted for the password): - - $ cvs -z3 -d :pserver:anoncvs@subversions.gnu.org:/cvsroot/libtool login - Password: - $ cvs -z3 -d :pserver:anoncvs@subversions.gnu.org:/cvsroot/libtool \ +anonymous cvs by using the following commands: + + $ export CVS_RSH=ssh + $ cvs -z3 -d :ext:anoncvs@savannah.gnu.org:/cvsroot/libtool \ co -r @CVS_RELEASE_TAG@ libtool You will then need to have recent (possibly as yet unreleased) versions @@ -200,6 +204,7 @@ Please report bugs to . To: info-gnu@gnu.org Cc: libtool@gnu.org, autotools-announce@gnu.org +Subject: GNU Libtool @VERSION@ released. The Libtool Team is pleased to announce the release of GNU Libtool @VERSION@. @@ -258,9 +263,8 @@ Alternatively, you can fetch the unbootstrapped sourcecode from anonymous cvs by using the following commands (just hit return when you are prompted for the password): - $ cvs -z3 -d :pserver:anoncvs@subversions.gnu.org:/cvsroot/libtool login - Password: - $ cvs -z3 -d :pserver:anoncvs@subversions.gnu.org:/cvsroot/libtool \ + $ export CVS_RSH=ssh + $ cvs -z3 -d :ext:anoncvs@savannah.gnu.org:/cvsroot/libtool \ co -r @CVS_RELEASE_TAG@ libtool You will then need to have the latest release versions of Automake diff --git a/configure.ac b/configure.ac index 34775c01..38ffd2e0 100644 --- a/configure.ac +++ b/configure.ac @@ -58,7 +58,7 @@ test "$LT_MICRO" = "AC_PACKAGE_VERSION" && LT_MICRO="" # Then we try to work out what the release before this one would have been # numbered. The only time we come unstuck is when this is the first release -# from a stable branch (LT_MICRO=LT_ALPHA=""), so OLDVERSION is the last +# from a stable branch (LT_MICRO=LT_ALPHA=""), so LASTRELEASE is the last # release from the old stable branch, and we don't know what version that # was, so leave it unset so that the Makefile can complain. case $LT_ALPHA in @@ -110,7 +110,7 @@ AC_SUBST([TIMESTAMP]) dnl These are bootstrap requirements, once built, libtool may work with dnl much older releases of autoconf and automake. See release notes. -AM_INIT_AUTOMAKE([1.8 gnits]) ## We use auto-m4_including +AM_INIT_AUTOMAKE([1.8 gnits dist-bzip2]) ## We use auto-m4_including ## ------------------------------- ##