libtool-patches
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[PATCH] Fix releasing procedure


From: Scott James Remnant
Subject: [PATCH] Fix releasing procedure
Date: Tue, 27 Jan 2004 09:33:21 +0000

A bunch of changes to README-alpha and Makefile.am to fix problems with
our release procedure which I tripped over whilst releasing 1.5.2.

Okay to apply?

Scott
-- 
Have you ever, ever felt like this?
Had strange things happen?  Are you going round the twist?

diff -ruNp libtool~/ChangeLog libtool/ChangeLog
--- libtool~/ChangeLog  2004-01-25 13:41:21.000000000 +0000
+++ libtool/ChangeLog   2004-01-27 09:24:50.000000000 +0000
@@ 0,0 +1,42 @@
+2004-01-27  Scott James Remnant  <address@hidden>
+
+       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?)
+       * 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 address@hidden 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.
+
diff -ruNp libtool~/Makefile.am libtool/Makefile.am
--- libtool~/Makefile.am        2004-01-22 22:25:42.000000000 +0000
+++ libtool/Makefile.am 2004-01-27 09:09:29.000000000 +0000
@@ -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 :; \
@@ -186,46 +185,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
-
-.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
+       $(GPG) --detach-sign $$ofile \
+       && echo "directory: libtool" > $$ofile.directive \
+       && $(GPG) --clearsign $$ofile.directive \
+       && rm -f $$ofile.directive
 
-XDELTA = xdelta
-XDELTA_OPTIONS = --pristine -9
+.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
 
-.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 +219,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 +263,4 @@ xdelta: prev-tarball
        && echo "directory: libtool" > $$ofile.directive \
        && $(GPG) --clearsign $$ofile.directive \
        && rm -f $$ofile.directive
+
diff -ruNp libtool~/README-alpha libtool/README-alpha
--- libtool~/README-alpha       2003-11-12 18:37:26.000000000 +0000
+++ libtool/README-alpha        2004-01-27 09:09:29.000000000 +0000
@@ -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:address@hidden:/home/cvs login
-  [Hit return when prompted for the password]
-  cvs -d :pserver:address@hidden:/home/cvs checkout libtool
+  export CVS_RSH=ssh
+  cvs -z3 -d :ext:address@hidden:/cvsroot/libtool co libtool
   cd libtool
   ./bootstrap
 
@@ -83,56 +82,62 @@ 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 LASTRELEASE=min.maj[.mic[alpha]] deltas' 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 address@hidden and address@hidden
-
-* If not an alpha, announcement must also go to address@hidden, and an
-  upload request be sent to address@hidden 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 address@hidden and address@hidden,
+  if not an alpha send to address@hidden 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.
+
+* Update NEWS, ChangeLog.
 
-* Commit.
+* Run ./commit.
 
-* Update the front libtool webpage to indicate the latest release
-  number, and the news page to reflect the latest release note.
+* 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: address@hidden, address@hidden
+Subject: GNU Libtool @VERSION@ released (alpha release).
 
 The Libtool Team is pleased to announce alpha release @VERSION@ of GNU
 Libtool.
@@ -177,12 +182,10 @@ but is useable with @COMPATIBLE_AUTOTOOL
 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:address@hidden:/cvsroot/libtool login
-  Password:
-  $ cvs -z3 -d :pserver:address@hidden:/cvsroot/libtool \
+anonymous cvs by using the following commands:
+ 
+  $ export CVS_RSH=ssh
+  $ cvs -z3 -d :ext:address@hidden:/cvsroot/libtool \
   co -r @CVS_RELEASE_TAG@ libtool
 
 You will then need to have recent (possibly as yet unreleased) versions
@@ -200,6 +203,7 @@ Please report bugs to <address@hidden
 
 To: address@hidden
 Cc: address@hidden, address@hidden
+Subject: GNU Libtool @VERSION@ released.
 
 The Libtool Team is pleased to announce the release of GNU Libtool
 @address@hidden
@@ -258,9 +262,8 @@ Alternatively, you can fetch the unboots
 anonymous cvs by using the following commands (just hit return when
 you are prompted for the password):
 
-  $ cvs -z3 -d :pserver:address@hidden:/cvsroot/libtool login
-  Password:
-  $ cvs -z3 -d :pserver:address@hidden:/cvsroot/libtool \
+  $ export CVS_RSH=ssh
+  $ cvs -z3 -d :ext:address@hidden:/cvsroot/libtool \
   co -r @CVS_RELEASE_TAG@ libtool
 
 You will then need to have the latest release versions of Automake
diff -ruNp libtool~/configure.ac libtool/configure.ac
--- libtool~/configure.ac       2004-01-16 22:42:26.000000000 +0000
+++ libtool/configure.ac        2004-01-27 09:24:20.000000000 +0000
@@ -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
 
 
 ## ------------------------------- ##

Attachment: signature.asc
Description: This is a digitally signed message part


reply via email to

[Prev in Thread] Current Thread [Next in Thread]