automake-commit
[Top][All Lists]
Advanced

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

[Automake-commit] [SCM] GNU Automake branch, maint, updated. v1.11-674-g


From: Stefano Lattarini
Subject: [Automake-commit] [SCM] GNU Automake branch, maint, updated. v1.11-674-gaf5f939
Date: Wed, 25 Jan 2012 13:27:56 +0000

This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "GNU Automake".

http://git.sv.gnu.org/gitweb/?p=automake.git;a=commitdiff;h=af5f9390a4fe3268944823ab0f3ac5af4fcf8bb0

The branch, maint has been updated
       via  af5f9390a4fe3268944823ab0f3ac5af4fcf8bb0 (commit)
       via  49c9194035b60d89c9204dab9e3be27058ba832e (commit)
       via  5060920b1390bedaef7c0a4269b306bf7fa19799 (commit)
       via  bff57e68f5376806e75ef004708dbd76a5540f58 (commit)
      from  3a422887c20556cc9f5e4a856c046f336f2997b4 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
commit af5f9390a4fe3268944823ab0f3ac5af4fcf8bb0
Author: Stefano Lattarini <address@hidden>
Date:   Wed Jan 25 12:18:43 2012 +0100

    release: revamp rules to tag and upload the releases
    
    The older Makefile rules used to create and tag the releases were
    based on an approach we now consider flawed: they over-mechanized
    some delicate operations that are better performed manually *and*
    double-checked by a developer, and at the same time they did not
    run enough safety checks.
    
    * Makefile.am (GIT, version_rx, stable_version_rx, beta_version_rx,
    match_version, git_must_have_clean_workdir, determine_release_type):
    New variables.
    (git-release, git-dist): Remove, they are superseded by ...
    (git-tag-release, git-upload-release): ... these new targets.

commit 49c9194035b60d89c9204dab9e3be27058ba832e
Author: Stefano Lattarini <address@hidden>
Date:   Wed Jan 25 13:45:36 2012 +0100

    amversion: add missing dependency
    
    * m4/Makefile.am ($(top_srcdir)/m4/amversion.m4): Depend on
    configure.ac, since the value of $(VERSION) can change every
    time configure.ac is updated.

commit 5060920b1390bedaef7c0a4269b306bf7fa19799
Author: Stefano Lattarini <address@hidden>
Date:   Wed Jan 25 10:09:17 2012 +0100

    hacking: update advice w.r.t. synced files
    
    * HACKING: Update and improve advices and explanations about files
    in the automake repository that are now owned by automake, but
    mirrored from other upstreams.  Also, don't list these files
    explicitly, rather point the reader to the $(FETCHFILES) variable
    in Makefile.am.
    * Makefile.am (FETCHFILES): Don't state that "there should be a
    lot more here", as this is not true anymore today.  Only 'COPYING'
    must be synced by hand.

commit bff57e68f5376806e75ef004708dbd76a5540f58
Author: Stefano Lattarini <address@hidden>
Date:   Wed Jan 25 09:50:54 2012 +0100

    hacking: don't reference ChangeLog anymore
    
    * HACKING: Don't reference the ChangeLog file anymore, since that
    is now generated from the git commit messages, not maintained by
    hand.  So remove advice that is obsolete, and speak about "git
    commit message" instead of "ChangeLog entry" for advice that is
    still relevant.

-----------------------------------------------------------------------

Summary of changes:
 HACKING        |   34 +++++++++-------------
 Makefile.am    |   86 +++++++++++++++++++++++++++++++++++++++-----------------
 m4/Makefile.am |    2 +-
 3 files changed, 75 insertions(+), 47 deletions(-)

diff --git a/HACKING b/HACKING
index 6da0e59..26f1d91 100644
--- a/HACKING
+++ b/HACKING
@@ -16,24 +16,24 @@
   appropriate paperwork.
   Second, be sure to add their name and email address to THANKS
 
-* If a change fixes a test, mention the test in the ChangeLog entry.
+* If a change fixes a test, mention the test in the commit message.
   If a change fixes a bug registered in the Automake debbugs tracker,
-  mention the bug number in the ChangeLog entry.
+  mention the bug number in the commit message.
 
-* If somebody reports a new bug, mention his name in the ChangeLog entry
+* If somebody reports a new bug, mention his name in the commit message
   and in the test case you write.  Put him into THANKS.
 
 * When documenting a non-trivial idiom or example in the manual, be
   sure to add a test case for it, and to reference such test case from
   a proper Texinfo comment.
 
-* Some files in the automake package are not owned by automake.  These
-  files should never be edited here.  These files are
-      COPYING (from FSF),
-      INSTALL (address@hidden),
-      config.guess, config.sub (address@hidden),
-      texinfo.tex (address@hidden),
-  Most of them are updated before release with `make fetch'.
+* Some files in the automake package are not owned by automake; these
+  files are listed in the $(FETCHFILES) variable in Makefile.am.  They
+  should never be edited here.  Almost all of them can be updated from
+  respective upstreams with "make fetch" (this should be done especially
+  before releases).  The only exception is the 'lib/COPYING' (from FSF),
+  which should be updated by hand whenever the GPL gets updated (which
+  shouldn't happen that often anyway :-)
 
 * Changes other than bug fixes must be mentioned in NEWS.  Important
   bug fixes should be mentioned in NEWS, too.
@@ -164,10 +164,6 @@
   release.  For next, and for feature branches, the announcement for the
   branch should document rewinding policy.
 
-* In order for rebasing and merging of ChangeLog entries to work seamlessly,
-  install and configure git-merge-changelog, currently available as gnulib
-  module.
-
 ================================================================
 = Test suite
 
@@ -198,8 +194,6 @@
   The repository will always have its own "odd" number so we can easily
   distinguish net and repo versions.)
 
-* Update ChangeLog.
-
 * Run this:
   ./bootstrap && ./configure && make && make check && make distcheck
 
@@ -208,8 +202,8 @@
 
 * Run `make git-release'.
   This will run "make dist" to create the tarballs, commit the last
-  NEWS/configure.ac/ChangeLog changes, tag the repository, sign
-  the tarballs, and upload them.
+  changes to NEWS, configure.ac and m4/amversion.m4, tag the repository,
+  sign the tarballs, and upload them.
   Use `make GNUPLOADFLAGS="--user key" git-release' to sign with
   a non-default key.
 
@@ -240,8 +234,8 @@
 
 -----
 
-Copyright (C) 2003, 2007, 2008, 2010, 2011 Free Software Foundation,
-Inc.
+Copyright (C) 2003, 2007, 2008, 2010, 2011, 2012 Free Software
+Foundation, Inc.
 
 This program is free software; you can redistribute it and/or modify
 it under the terms of the GNU General Public License as published by
diff --git a/Makefile.am b/Makefile.am
index ad4d372..56784ca 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -607,32 +607,66 @@ sc_at_in_texi:
          exit 1; \
        fi
 
-
-git-dist: maintainer-check
-## Make sure the NEWS file is up-to-date.
-       @if sed 1q $(srcdir)/NEWS | grep -e "$(VERSION)" > /dev/null; then :; 
else \
-         echo "NEWS not updated; not releasing" 1>&2; \
-         exit 1;                               \
-       fi
-## Build the distribution.  We expect the developer to have already run
-## "make check" and "make distcheck" on his own (as required in the
-## HACKING file, section "Release procedure").
-       $(MAKE) $(AM_MAKEFLAGS) dist
-## Finally, if anything was successful, commit the last changes and tag
-## the release in the repository.  We don't use RCS keywords so it's OK
-## to distribute the files before they were committed.
-       cd $(srcdir) && git commit -a -s && \
-          git tag -s "v$(VERSION)" -m "Release $(VERSION)"
-
-git-release: git-dist
-       case $(VERSION) in \
-         *[a-z]) dest=alpha;; \
-         *)      dest=ftp;; \
+## Tagging and/or uploading stable and beta releases.
+
+GIT = git
+
+version_rx = ^[1-9][0-9]*\.[0-9][0-9]*(\.[0-9][0-9]*)?
+stable_version_rx = $(version_rx)$$
+beta_version_rx = $(version_rx)[bdfhjlnprtvxz]$$
+match_version = echo "$(VERSION)" | $(EGREP) >/dev/null
+
+## Check that we don't have uncommitted or unstaged changes.
+## TODO: Maybe the git suite already offers a shortcut to verify if the
+## TODO: working directory is "clean" or not?  If yes, use that instead
+## TODO: of duplicating the logic here.
+git_must_have_clean_workdir = \
+  $(GIT) rev-parse --verify HEAD >/dev/null \
+    && $(GIT) update-index -q --refresh \
+    && $(GIT) diff-files --quiet \
+    && $(GIT) diff-index --quiet --cached HEAD \
+    || fatal "you have uncommitted or unstaged changes"
+
+determine_release_type = \
+  if $(match_version) '$(stable_version_rx)'; then \
+    release_type='Release' dest=ftp; \
+  elif $(match_version) '$(beta_version_rx)'; then \
+    release_type='Beta release' dest=alpha; \
+  else \
+    fatal "invalid version '$(VERSION)' for a release"; \
+  fi
+
+git-tag-release: maintainer-check
+       @set -e; set -u; \
+       fatal () { echo "$@: $$*; not tagging" >&2; exit 1; }; \
+       case '$(AM_TAG_DRYRUN)' in \
+         ""|[nN]|[nN]o|NO) run="";; \
+         *) run="echo Running:";; \
        esac; \
-       $(srcdir)/lib/gnupload $(GNUPLOADFLAGS) \
-         --to $$dest.gnu.org:automake $(DIST_ARCHIVES)
-
-.PHONY: git-release git-dist
+       $(determine_release_type); \
+       $(git_must_have_clean_workdir); \
+## Make sure the NEWS file is up-to-date.
+       sed 1q $(srcdir)/NEWS | grep '$(VERSION)' >/dev/null \
+         || fatal "NEWS not updated"; \
+## If all was successful, tag the release in the local repository.
+       $$run $(GIT) tag -s "v$(VERSION)" -m "$$release_type $(VERSION)"
+
+git-upload-release:
+       @set -e; set -u; \
+       fatal () { echo "$@: $$*; not releasing" >&2; exit 1; }; \
+       $(determine_release_type); \
+       dest=$$dest.gnu.org:automake; \
+       $(git_must_have_clean_workdir); \
+## Check that we are releasing from a valid tag.
+       tag=`$(GIT) describe` \
+         && case $$tag in "v$(VERSION)") true;; *) false;; esac \
+         || fatal "you can only create a release from a tagged version"; \
+## Build and upload the distribution tarball(s).
+       $(MAKE) $(AM_MAKEFLAGS) dist || exit 1; \
+       echo Will upload to $$dest: $(DIST_ARCHIVES); \
+       $(srcdir)/lib/gnupload $(GNUPLOADFLAGS) --to $$dest $(DIST_ARCHIVES)
+
+.PHONY: git-upload-release git-tag-release
 
 ## Visually comparing differences between the Makefile.in files in
 ## automake's own build system as generated in two different branches
@@ -711,7 +745,7 @@ WGET_SV_GIT_AC = $(WGET) 
'http://git.savannah.gnu.org/gitweb/?p=autoconf.git;a=b
 WGET_SV_GIT_GL = $(WGET) 
'http://git.savannah.gnu.org/gitweb/?p=gnulib.git;a=blob_plain;hb=HEAD;f='
 
 ## Files that we fetch and which we compare against.
-## FIXME should be a lot more here
+## The 'lib/COPYING' file must still be synced by hand.
 FETCHFILES = \
 INSTALL \
 config.guess \
diff --git a/m4/Makefile.am b/m4/Makefile.am
index 4fa1406..b0e0d84 100644
--- a/m4/Makefile.am
+++ b/m4/Makefile.am
@@ -72,7 +72,7 @@ EXTRA_DIST = acdir/dirlist amversion.in
 # loop otherwise.
 # Use `$(top_srcdir)/m4' for the benefit of non-GNU makes: this is
 # how amversion.m4 appears in our dependencies.
-$(top_srcdir)/m4/amversion.m4: $(srcdir)/amversion.in
+$(top_srcdir)/m4/amversion.m4: $(top_srcdir)/configure.ac 
$(srcdir)/amversion.in
        $(AM_V_at)sed \
            -e 's,address@hidden@],$(VERSION),g' \
            -e 's,address@hidden@],$(APIVERSION),g' \


hooks/post-receive
-- 
GNU Automake



reply via email to

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