automake-commit
[Top][All Lists]
Advanced

[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



reply via email to

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