automake-commit
[Top][All Lists]
Advanced

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

[Automake-commit] [SCM] GNU Automake branch, master, updated. v1.11-1811


From: Stefano Lattarini
Subject: [Automake-commit] [SCM] GNU Automake branch, master, updated. v1.11-1811-g3c66523
Date: Tue, 31 Jan 2012 07:52:36 +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=3c66523fe55c94b19b5b26e0eae1c8de1d47d0cd

The branch, master has been updated
       via  3c66523fe55c94b19b5b26e0eae1c8de1d47d0cd (commit)
       via  32cde2a4722d25ad41e5ae2e33d43ceb2c6f4a90 (commit)
       via  0436a1ed2c44b9e8b3c8f2f049e06bfac4969d3e (commit)
       via  d55b9302515d68c178259048df592f0a80d1d67d (commit)
       via  be0a696aac24a55f8281e9585c87a14138206eb5 (commit)
       via  b6c3ed5e0debbeb47c4316afb62e8415ed76f26f (commit)
       via  af5f9390a4fe3268944823ab0f3ac5af4fcf8bb0 (commit)
       via  49c9194035b60d89c9204dab9e3be27058ba832e (commit)
       via  5060920b1390bedaef7c0a4269b306bf7fa19799 (commit)
       via  bff57e68f5376806e75ef004708dbd76a5540f58 (commit)
      from  a6c171136d2086f6c4bc4a50d1771c0e1b58ba10 (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 3c66523fe55c94b19b5b26e0eae1c8de1d47d0cd
Merge: a6c1711 32cde2a
Author: Stefano Lattarini <address@hidden>
Date:   Tue Jan 31 08:31:59 2012 +0100

    Merge branch 'maint'
    
    * maint:
      tests: do not assume the object file extension is .o
      tests: avoid spurious failure of 'transform2.test' on Cygwin
      tests: avoid spurious failure of deleted-am.test with FreeBSD make
      tests: avoid possibly undeserved PASS from check8.test
      warnings: more precise category and message for one warning
      release: revamp rules to tag and upload the releases
      amversion: add missing dependency
      hacking: update advice w.r.t. synced files
      hacking: don't reference ChangeLog anymore
    
    + Extra non-trivial edits:
    
    * tests/suffix8.tap: Copy in (by hand) the modifications done
    to 'suffix8.test' on maint, i.e., the addition of an explicit
    '.y_.obj:' suffix rule to Makefile.am.

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

Summary of changes:
 HACKING                         |   34 +++++++---------
 Makefile.am                     |   83 ++++++++++++++++++++++++++++-----------
 automake.in                     |    9 ++--
 m4/Makefile.am                  |    2 +-
 tests/check8.test               |   13 +++---
 tests/conffile-leading-dot.test |   62 +++++++++++++++++++++++++++++
 tests/deleted-am.test           |    4 +-
 tests/list-of-tests.mk          |    1 +
 tests/specflg7.test             |    8 ++-
 tests/specflg8.test             |    7 ++-
 tests/substref.test             |    5 +-
 tests/suffix8.tap               |    2 +
 tests/transform2.test           |   16 +++++++-
 13 files changed, 182 insertions(+), 64 deletions(-)
 create mode 100755 tests/conffile-leading-dot.test

diff --git a/HACKING b/HACKING
index 96cb3a9..5420fbc 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
 
@@ -201,8 +197,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
 
@@ -211,8 +205,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.
 
@@ -243,8 +237,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 685cbd9..a493e3f 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -195,29 +195,66 @@ clean-local: clean-coverage
 .PHONY: check-coverage recheck-coverage check-coverage-run \
        recheck-coverage-run check-coverage-report clean-coverage
 
-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.
-       $(am__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)
+       $(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
@@ -296,7 +333,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/automake.in b/automake.in
index 6944724..940e770 100644
--- a/automake.in
+++ b/automake.in
@@ -5161,10 +5161,11 @@ sub scan_autoconf_config_files ($$)
       # Handle $local:$input syntax.
       my ($local, @rest) = split (/:/);
       @rest = ("$local.in",) unless @rest;
-      msg ('portability', $where,
-         "omit leading `./' from config file names such as `$local',"
-         . "\nas not all make implementations treat `file' and `./file' 
equally")
-       if ($local =~ /^\.\//);
+      # Keep in sync with 'conffile-leading-dot.test'.
+      msg ('unsupported', $where,
+           "omit leading './' from config file names such as '$local';"
+           . "\nremake rules might be subtly broken otherwise")
+        if ($local =~ /^\.\//);
       my $input = locate_am @rest;
       if ($input)
        {
diff --git a/m4/Makefile.am b/m4/Makefile.am
index b2f937d..d683a5b 100644
--- a/m4/Makefile.am
+++ b/m4/Makefile.am
@@ -68,7 +68,7 @@ EXTRA_DIST = acdir/.placeholder 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' \
diff --git a/tests/check8.test b/tests/check8.test
index 51fcbd2..ae01c13 100755
--- a/tests/check8.test
+++ b/tests/check8.test
@@ -86,13 +86,14 @@ cd build
 ../configure
 $MAKE check >stdout && { cat stdout; Exit 1; }
 cat stdout
-# Note: we are not grepping for the space here, due to the Solaris make VPATH
-# rewriting (if we fix that, we can still write a separate test for it).
+# Note: we are not grepping for the space in the lines from the 'foo'
+# tests, due to the Solaris make VPATH rewriting (if we fix that, we
+# can still write a separate test for it).
 grep 'XPASS.*foo$' stdout
 grep '^[^X]*PASS.*sub/foo$' stdout
-grep '^[^X]*PASS.*bar' stdout
-grep '^[^X]*PASS.*sub/bar' stdout
-grep '^[^X]*FAIL.*baz' stdout
-grep 'XFAIL.*sub/baz' stdout
+grep '^[^X]*PASS.* bar' stdout
+grep '^[^X]*PASS.* sub/bar' stdout
+grep '^[^X]*FAIL.* baz' stdout
+grep 'XFAIL.* sub/baz' stdout
 
 :
diff --git a/tests/conffile-leading-dot.test b/tests/conffile-leading-dot.test
new file mode 100755
index 0000000..1d3d12f
--- /dev/null
+++ b/tests/conffile-leading-dot.test
@@ -0,0 +1,62 @@
+#! /bin/sh
+# Copyright (C) 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
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Automake must complain if AC_CONFIG_FILES is passed something starting
+# with a dot (like "./Makefile"), since the remake rules might be subtly
+# broken in that case.
+
+required=GNUmake
+. ./defs || Exit 1
+
+set -e
+
+cat > configure.in << END
+AC_INIT([$me], [1.0])
+AM_INIT_AUTOMAKE
+AC_CONFIG_FILES([./Makefile])
+AC_CONFIG_FILES([./foo:a.in:b.in:c.in])
+AC_OUTPUT
+END
+
+echo foo = barbarbar > Makefile.am
+
+touch a.in b.in c.in
+
+$ACLOCAL
+
+AUTOMAKE_fails -Wnone -Wunsupported
+grep "^configure\.in:3:.*'\\./Makefile'" stderr
+grep "^configure\.in:3:.* omit leading '\\./'" stderr
+grep "^configure\.in:3:.*remake rules might be subtly broken" stderr
+grep "^configure\.in:4:.*'\\./foo'" stderr
+grep "^configure\.in:4:.* omit leading '\\./'" stderr
+grep "^configure\.in:4:.*remake rules might be subtly broken" stderr
+
+# Check that our warning was actually justified.
+$AUTOCONF
+$AUTOMAKE -Wall -Wno-unsupported
+./configure
+$MAKE
+grep barbarbar Makefile
+# No need to sleep here, configure did that for us already.
+echo foo = bazbazbaz > Makefile.am
+# Check that remake rules do truly break -- otherwise automake is
+# giving a bogus warning.
+$MAKE 2>stderr && { cat stderr >&2 Exit 1; }
+cat stderr >&2
+grep "config\\.status:.*invalid argument.*[\`\"']Makefile[\`\"']" stderr
+
+:
diff --git a/tests/deleted-am.test b/tests/deleted-am.test
index fa7c6ab..74b3745 100755
--- a/tests/deleted-am.test
+++ b/tests/deleted-am.test
@@ -35,6 +35,7 @@ $AUTOMAKE
 $MAKE
 
 rm -f zardoz.am
+$sleep # Required to avoid racy failures with FreeBSD make.
 $MAKE >output 2>&1 && { cat output; Exit 1; }
 cat output
 # This error will come from automake, not make, so we can be stricter
@@ -42,12 +43,13 @@ cat output
 grep 'cannot open.*zardoz\.am' output
 grep 'foobar\.am' output && Exit 1 # No spurious error, please.
 
-# Try  with one less indirection.
+# Try with one less indirection.
 : > foobar.am
 $AUTOMAKE Makefile
 ./config.status Makefile
 $MAKE # Sanity check.
 rm -f foobar.am
+$sleep # Required to avoid racy failures with FreeBSD make.
 $MAKE >output 2>&1 && { cat output; Exit 1; }
 cat output
 # This error will come from automake, not make, so we can be stricter
diff --git a/tests/list-of-tests.mk b/tests/list-of-tests.mk
index 8bc0ef0..f3cb769 100644
--- a/tests/list-of-tests.mk
+++ b/tests/list-of-tests.mk
@@ -272,6 +272,7 @@ configure.test \
 confdeps.test \
 conff.test \
 conff2.test \
+conffile-leading-dot.test \
 confh.test \
 confh4.test \
 confh5.test \
diff --git a/tests/specflg7.test b/tests/specflg7.test
index 60c1a9d..da062d9 100755
--- a/tests/specflg7.test
+++ b/tests/specflg7.test
@@ -1,5 +1,5 @@
 #! /bin/sh
-# Copyright (C) 2002, 2004, 2011 Free Software Foundation, Inc.
+# Copyright (C) 2002, 2004, 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
@@ -57,7 +57,9 @@ $AUTOMAKE -a
 $MAKE
 ./true | grep true
 ./false | grep false
-test -f ./t-false.o
-test -f ./f-false.o
+
+objext=`sed -n -e 's/^OBJEXT = //p' < Makefile`
+test -f ./t-false.$objext
+test -f ./f-false.$objext
 
 :
diff --git a/tests/specflg8.test b/tests/specflg8.test
index 18527ed..99b9151 100755
--- a/tests/specflg8.test
+++ b/tests/specflg8.test
@@ -1,5 +1,5 @@
 #! /bin/sh
-# Copyright (C) 2002, 2004, 2011 Free Software Foundation, Inc.
+# Copyright (C) 2002, 2004, 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
@@ -57,7 +57,8 @@ $MAKE
 ./true
 ./false && Exit 1
 
-test -f ./true-true.o
-test -f ./true-true.o
+objext=`sed -n -e 's/^OBJEXT = //p' < Makefile`
+test -f ./true-true.$objext
+test -f ./false-true.$objext
 
 :
diff --git a/tests/substref.test b/tests/substref.test
index 8154496..7b30423 100755
--- a/tests/substref.test
+++ b/tests/substref.test
@@ -1,5 +1,5 @@
 #! /bin/sh
-# Copyright (C) 2001, 2002, 2010, 2011 Free Software Foundation, Inc.
+# Copyright (C) 2001, 2002, 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
@@ -44,7 +44,8 @@ $AUTOMAKE -a
 
 ./configure
 
-echo dlmain.c dlmain.o >exp
+objext=`sed -n -e 's/^OBJEXT = //p' < Makefile`
+echo dlmain.c dlmain.$objext >exp
 $MAKE got
 cat got
 diff exp got
diff --git a/tests/suffix8.tap b/tests/suffix8.tap
index 8a819a9..3e37ecc 100755
--- a/tests/suffix8.tap
+++ b/tests/suffix8.tap
@@ -47,6 +47,8 @@ libfoo_la_SOURCES = bar.x_
        cp `test -f '$<' || echo $(srcdir)/`$< $@
 .y_.o:
        cp `test -f '$<' || echo $(srcdir)/`$< $@
+.y_.obj:
+       cp `test -f '$<' || echo $(srcdir)/`$< $@
 .y_.z_:
        cp `test -f '$<' || echo $(srcdir)/`$< $@
 .z_.lo:
diff --git a/tests/transform2.test b/tests/transform2.test
index 010ca40..a7dd9f9 100755
--- a/tests/transform2.test
+++ b/tests/transform2.test
@@ -1,5 +1,5 @@
 #! /bin/sh
-# Copyright (C) 2002, 2003, 2004, 2007, 2008, 2011 Free Software
+# Copyright (C) 2002, 2003, 2004, 2007, 2008, 2011, 2012 Free Software
 # Foundation, Inc.
 #
 # This program is free software; you can redistribute it and/or modify
@@ -74,9 +74,23 @@ $MAKE uninstall
 test `find inst -type f -print | wc -l` = 0
 
 # Also squash all file types in question.
+
+# On newer Cygwin versions, that won't work, likely due to overly
+# aggressive appending of '.exe' suffix when copying/renaming Windows
+# executables).  So let's skip this part of the test if we detect the
+# faulty heuristic is present.  See also:
+# <http://lists.gnu.org/archive/html/automake-patches/2010-08/msg00153.html>
+# <http://thread.gmane.org/gmane.os.cygwin/119380>
+echo Foo > foo
+echo Bar > bar.exe
+chmod a+x foo bar.exe
+cp foo bar && cmp foo bar \
+  || skip_ "your Cygwin is too aggressive in tweaking '.exe' suffixes"
+
 ./configure --program-transform-name='s/.*/foo/' --prefix "`pwd`/inst" 
--mandir "`pwd`/inst/man"
 $MAKE
 $MAKE test-install-foo
 $MAKE uninstall
 test `find inst -type f -print | wc -l` = 0
+
 :


hooks/post-receive
-- 
GNU Automake



reply via email to

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