[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Automake-commit] [SCM] GNU Automake branch, branch-1.13.2, updated. v1.
From: |
Stefano Lattarini |
Subject: |
[Automake-commit] [SCM] GNU Automake branch, branch-1.13.2, updated. v1.13.1b-17-ga8933e8 |
Date: |
Thu, 21 Feb 2013 15:05: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=a8933e87ca570f3e710559b12cddad4473525c19
The branch, branch-1.13.2 has been updated
via a8933e87ca570f3e710559b12cddad4473525c19 (commit)
via 7a3d7cee2b3270443bcd3b91e7e4ada8a1a858a1 (commit)
via c83c133556205402d44e81d492efb0b2fe3e3584 (commit)
from b7ac9a37b3c7c78db1ba2beb32cf10bda9db996b (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 a8933e87ca570f3e710559b12cddad4473525c19
Merge: b7ac9a3 7a3d7ce
Author: Stefano Lattarini <address@hidden>
Date: Thu Feb 21 15:35:04 2013 +0100
Merge branch 'fix-pr13514' into branch-1.13.2
* fix-pr13514:
aclocal: fix for more-than-once specified directories
aclocal: just warn if the primary local m4 dir doesn't exist (don't error)
commit 7a3d7cee2b3270443bcd3b91e7e4ada8a1a858a1
Author: Pavel Raiskup <address@hidden>
Date: Mon Feb 11 13:11:52 2013 +0100
aclocal: fix for more-than-once specified directories
Related to automake bug#13514.
Do not consider directories for extra m4 files multiple times in
'aclocal'. Doing so caused problems on older packages that specify
configure.ac: AC_CONFIG_MACRO_DIRS([m4])
Makefile.am: ACLOCAL_AMFLAGS = -I m4
if the 'm4' directory does not exist when aclocal is called the first
time by autoreconf.
See:
<http://lists.gnu.org/archive/html/bug-automake/2013-01/msg00115.html>
* aclocal.in (scan_m4_files): Remove duplicates in @user_includes.
* t/aclocal-macrodir.tap: Extend.
* t/aclocal-macrodirs.tap: Likewise.
Signed-off-by: Stefano Lattarini <address@hidden>
commit c83c133556205402d44e81d492efb0b2fe3e3584
Author: Pavel Raiskup <address@hidden>
Date: Mon Feb 11 13:11:51 2013 +0100
aclocal: just warn if the primary local m4 dir doesn't exist (don't error)
Related to automake bug#13514.
Every package which does not need to have the local m4 macro
directory pre-existing in the version control system (because
e.g., it does not have nor need any private m4 macros) would
fail during the "autoreconf -vfi" phase if AC_CONFIG_MACRO_DIRS([m4])
is specified in configure.ac (it could be to instruct tools like
'autopoint' and 'libtoolize' to use 'm4' as the local directory
where to install definitions of their m4 macros, and to instruct
aclocal to look into it). The failure would go like this:
autoreconf: Entering directory `.'
autoreconf: running: aclocal --force
aclocal: error: couldn't open directory 'm4': No such file or directory
autoreconf: aclocal failed with exit status: 1
The problem is that when 'aclocal' is run for the first time during
'autoreconf', the directory 'm4' does not exist yet. It will be
created by e.g., 'libtoolize' or 'autopoint' later on. During the
second 'aclocal' run, the 'm4' directory exists and aclocal does not
complain.
To work around this issue, we degrade the error to a simple warning.
The warning is still quite useful when aclocal is run by hand - so
we are not removing completely.
See also:
<http://lists.gnu.org/archive/html/bug-automake/2013-01/msg00115.html>
<http://lists.gnu.org/archive/html/automake-patches/2010-02/msg00030.html>
<http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=565663>
<https://bugzilla.redhat.com/show_bug.cgi?id=901333>
* aclocal.in (SCAN_M4_DIRS_SILENT, SCAN_M4_DIRS_WARN)
(SCAN_M4_DIRS_ERROR): New constants.
(scan_m4_dirs): Change the second parameter name to $ERR_LEVEL to
better reflect new semantic. Use new constants.
(scan_m4_files): Adjust to reflect the new 'scan_m4_dirs' semantics.
* t/aclocal-macrodir.tap: Adjust.
* t/aclocal-macrodirs.tap: Likewise.
* THANKS: Update.
* NEWS: Likewise.
Suggested-by: Ben Pfaff <address@hidden>
Signed-off-by: Stefano Lattarini <address@hidden>
-----------------------------------------------------------------------
Summary of changes:
NEWS | 7 ++++++
THANKS | 1 +
aclocal.in | 56 ++++++++++++++++++++++++++++++++++++++++------
t/aclocal-macrodir.tap | 34 ++++++++++++++++++++++++++--
t/aclocal-macrodirs.tap | 39 ++++++++++++++++++++++++++++----
5 files changed, 121 insertions(+), 16 deletions(-)
diff --git a/NEWS b/NEWS
index 1ea9fa6..81377e1 100644
--- a/NEWS
+++ b/NEWS
@@ -127,6 +127,13 @@ New in 1.13.2:
Automake 1.13, has turned out to be a similarly very bad idea,
for exactly the same reason.
+ - Aclocal no longer error out if the first local m4 directory (as
+ specified by the '-I' option or the 'AC_CONFIG_MACRO_DIRS' or
+ 'AC_CONFIG_MACRO_DIR' macros) doesn't exist; it merely report a
+ warning in the 'unsupported' category. This is done to support
+ some pre-existing real-world usages; refer to automake bug#13514
+ for more details.
+
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
New in 1.13.1:
diff --git a/THANKS b/THANKS
index d591d14..c8ec3fd 100644
--- a/THANKS
+++ b/THANKS
@@ -298,6 +298,7 @@ Paul Jarc address@hidden
Paul Lunau address@hidden
Paul Martinolich address@hidden
Paul Thomas address@hidden
+Pavel Raiskup address@hidden
Pavel Roskin address@hidden
Pavel Sanda address@hidden
Per Bothner address@hidden
diff --git a/aclocal.in b/aclocal.in
index 82e9031..0787019 100644
--- a/aclocal.in
+++ b/aclocal.in
@@ -165,6 +165,11 @@ my @ac_config_macro_dirs;
# If set, names a temporary file that must be erased on abnormal exit.
my $erase_me;
+# Constants for the $ERR_LEVEL parameter of the 'scan_m4_dirs' function.
+use constant SCAN_M4_DIRS_SILENT => 0;
+use constant SCAN_M4_DIRS_WARN => 1;
+use constant SCAN_M4_DIRS_ERROR => 2;
+
################################################################
# Prototypes for all subroutines.
@@ -355,21 +360,42 @@ sub list_compare (address@hidden@)
################################################################
-# scan_m4_dirs($TYPE, $ERR_ON_NONEXISTING, @DIRS)
+# scan_m4_dirs($TYPE, $ERR_LEVEL, @DIRS)
# -----------------------------------------------
# Scan all M4 files installed in @DIRS for new macro definitions.
# Register each file as of type $TYPE (one of the FT_* constants).
+# If a directory in @DIRS cannot be read:
+# - fail hard if $ERR_LEVEL == SCAN_M4_DIRS_ERROR
+# - just print a warning if $ERR_LEVEL == SCAN_M4_DIRS_WA
+# - continue silently if $ERR_LEVEL == SCAN_M4_DIRS_SILENT
sub scan_m4_dirs ($$@)
{
- my ($type, $err_on_nonexisting, @dirlist) = @_;
+ my ($type, $err_level, @dirlist) = @_;
foreach my $m4dir (@dirlist)
{
if (! opendir (DIR, $m4dir))
{
# TODO: maybe avoid complaining only if errno == ENONENT?
- next unless $err_on_nonexisting;
- fatal "couldn't open directory '$m4dir': $!";
+ my $message = "couldn't open directory '$m4dir': $!";
+
+ if ($err_level == SCAN_M4_DIRS_ERROR)
+ {
+ fatal $message;
+ }
+ elsif ($err_level == SCAN_M4_DIRS_WARN)
+ {
+ msg ('unsupported', $message);
+ next;
+ }
+ elsif ($err_level == SCAN_M4_DIRS_SILENT)
+ {
+ next; # Silently ignore.
+ }
+ else
+ {
+ prog_error "invalid \$err_level value '$err_level'";
+ }
}
# We reverse the directory contents so that foo2.m4 gets
@@ -406,13 +432,27 @@ sub scan_m4_files ()
if (@user_includes)
{
+ # Don't explore the same directory multiple times. This is here not
+ # only for speedup purposes. We need this when the user has e.g.
+ # specified 'ACLOCAL_AMFLAGS = -I m4' and has also set
+ # AC_CONFIG_MACRO_DIR[S]([m4]) in configure.ac. This makes the 'm4'
+ # directory to occur twice here and fail on the second call to
+ # scan_m4_dirs([m4]) when the 'm4' directory doesn't exist.
+ # TODO: Shouldn't there be rather a check in scan_m4_dirs for
+ # @user_includes[0]?
+ @user_includes = uniq @user_includes;
+
# Don't complain if the first user directory doesn't exist, in case
# we need to create it later (can happen if '--install' was given).
- scan_m4_dirs (FT_USER, !$install, $user_includes[0]);
- scan_m4_dirs (FT_USER, 1, @user_includes[1..$#user_includes]);
+ scan_m4_dirs (FT_USER,
+ $install ? SCAN_M4_DIRS_SILENT : SCAN_M4_DIRS_WARN,
+ $user_includes[0]);
+ scan_m4_dirs (FT_USER,
+ SCAN_M4_DIRS_ERROR,
+ @user_includes[1..$#user_includes]);
}
- scan_m4_dirs (FT_AUTOMAKE, 1, @automake_includes);
- scan_m4_dirs (FT_SYSTEM, 1, @system_includes);
+ scan_m4_dirs (FT_AUTOMAKE, SCAN_M4_DIRS_ERROR, @automake_includes);
+ scan_m4_dirs (FT_SYSTEM, SCAN_M4_DIRS_ERROR, @system_includes);
# Construct a new function that does the searching. We use a
# function (instead of just evaluating $search in the loop) so that
diff --git a/t/aclocal-macrodir.tap b/t/aclocal-macrodir.tap
index 44af05f..fb80609 100755
--- a/t/aclocal-macrodir.tap
+++ b/t/aclocal-macrodir.tap
@@ -20,7 +20,7 @@
am_create_testdir=empty
. test-init.sh
-plan_ 6
+plan_ 7
ocwd=$(pwd) || fatal_ "getting current working directory"
ACLOCAL_PATH=; unset ACLOCAL_PATH
@@ -157,16 +157,44 @@ test_end
#---------------------------------------------------------------------------
-test_begin "AC_CONFIG_MACRO_DIR([non-existent]) errors out (1)"
+test_begin "AC_CONFIG_MACRO_DIR([non-existent]) warns with -Wunsupported"
cat > configure.ac << 'END'
AC_INIT([oops], [1.0])
AC_CONFIG_MACRO_DIR([non-existent])
+AM_INIT_AUTOMAKE
END
-not $ACLOCAL -Wnone 2>stderr \
+$ACLOCAL -Wno-error 2>stderr \
&& cat stderr >&2 \
&& grep "couldn't open directory 'non-existent'" stderr \
+ && test -f aclocal.m4 \
+ || r='not ok'
+
+rm -rf aclocal.m4 autom4te*.cache
+
+$ACLOCAL -Werror -Wno-unsupported \
+ && test -f aclocal.m4 \
+ || r='not ok'
+
+test_end
+
+#---------------------------------------------------------------------------
+
+test_begin "AC_CONFIG_MACRO_DIR([not-exist]) and ACLOCAL_AMFLAGS = -I
not-exist"
+
+cat > configure.ac << 'END'
+AC_INIT([oops], [1.0])
+AC_CONFIG_MACRO_DIR([not-exist])
+END
+
+cat > Makefile.am << 'END'
+ACLOCAL_AMFLAGS = -I not-exist
+END
+
+$ACLOCAL -Wno-error 2>stderr \
+ && cat stderr >&2 \
+ && test $(grep -c "couldn't open directory 'not-exist'" stderr) -eq 1 \
|| r='not ok'
test_end
diff --git a/t/aclocal-macrodirs.tap b/t/aclocal-macrodirs.tap
index ac594bb..0898c29 100755
--- a/t/aclocal-macrodirs.tap
+++ b/t/aclocal-macrodirs.tap
@@ -20,7 +20,7 @@
am_create_testdir=empty
. test-init.sh
-plan_ 14
+plan_ 15
ocwd=$(pwd) || fatal_ "getting current working directory"
ACLOCAL_PATH=; unset ACLOCAL_PATH
@@ -317,23 +317,31 @@ test_end
#---------------------------------------------------------------------------
-test_begin "AC_CONFIG_MACRO_DIRS([non-existent]) errors out (1)"
+test_begin "AC_CONFIG_MACRO_DIRS([non-existent]) warns (1)"
cat > configure.ac << 'END'
AC_INIT([oops], [1.0])
AC_CONFIG_MACRO_DIRS([non-existent])
+AM_INIT_AUTOMAKE
END
-not $ACLOCAL 2>stderr \
+$ACLOCAL -Wno-error 2>stderr \
&& cat stderr >&2 \
&& grep "couldn't open directory 'non-existent'" stderr \
+ && test -f aclocal.m4 \
+ || r='not ok'
+
+rm -rf aclocal.m4 autom4te*.cache
+
+$ACLOCAL -Werror -Wno-unsupported \
+ && test -f aclocal.m4 \
|| r='not ok'
test_end
#---------------------------------------------------------------------------
-test_begin "AC_CONFIG_MACRO_DIRS([non-existent]) errors out (2)"
+test_begin "AC_CONFIG_MACRO_DIRS([non-existent]) warns (2)"
cat > configure.ac << 'END'
AC_INIT([oops], [1.0])
@@ -346,13 +354,14 @@ not $ACLOCAL 2>stderr \
&& cat stderr >&2 \
&& grep "couldn't open directory 'dir-ko'" stderr \
&& not grep "dir-ok" stderr \
+ && test ! -e aclocal.m4 \
|| r='not ok'
test_end
#---------------------------------------------------------------------------
-test_begin "AC_CONFIG_MACRO_DIRS([non-existent]) errors out (tricky setup)"
+test_begin "AC_CONFIG_MACRO_DIRS([existent non-existent]) errors out"
cat > configure.ac << 'END'
AC_INIT([oops], [1.0])
@@ -372,6 +381,26 @@ test_end
#---------------------------------------------------------------------------
+test_begin "AC_CONFIG_MACRO_DIRS([not-exist]) and ACLOCAL_AMFLAGS = -I
not-exist"
+
+cat > configure.ac << 'END'
+AC_INIT([oops], [1.0])
+AC_CONFIG_MACRO_DIRS([not-exist])
+END
+
+cat > Makefile.am << 'END'
+ACLOCAL_AMFLAGS = -I not-exist
+END
+
+$ACLOCAL -Wno-error 2>stderr \
+ && cat stderr >&2 \
+ && test $(grep -c "couldn't open directory 'not-exist'" stderr) -eq 1 \
+ || r='not ok'
+
+test_end
+
+#---------------------------------------------------------------------------
+
# Avoid spurious failures with pre-2.70 autoconf.
# FIXME: remove this in automake 2.0, once we require Autoconf 2.70.
if echo 'AC_INIT AC_CONFIG_MACRO_DIRS' | $AUTOCONF -o/dev/null -; then
hooks/post-receive
--
GNU Automake
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Automake-commit] [SCM] GNU Automake branch, branch-1.13.2, updated. v1.13.1b-17-ga8933e8,
Stefano Lattarini <=