* aclocal.in (parse_arguments): Add `dirlist' paths add the
authorAlexandre Duret-Lutz <adl@gnu.org>
Thu, 1 Aug 2002 22:24:33 +0000 (22:24 +0000)
committerAlexandre Duret-Lutz <adl@gnu.org>
Thu, 1 Aug 2002 22:24:33 +0000 (22:24 +0000)
very end of the search path, after aclocal-APIVERSION/ and
aclocal/.
* automake.texi (Macro search path): Adjust to reflect the
new ordering.
* tests/dirlist.test: Check for this.

ChangeLog
aclocal.in
automake.texi
tests/dirlist.test

index 12a441c0751a03fa00137e075a70b47f80dfb0f0..366ad88848a4c10d7e14be456939a61a1cca0b16 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,12 @@
+2002-08-01  Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       * aclocal.in (parse_arguments): Add `dirlist' paths add the
+       very end of the search path, after aclocal-APIVERSION/ and
+       aclocal/.
+       * automake.texi (Macro search path): Adjust to reflect the
+       new ordering.
+       * tests/dirlist.test: Check for this.
+
 2002-07-31  Charles Wilson  <cwilson@ece.gatech.edu>
 
        * aclocal.in (parse_arguments): Add support for extending
index c938e42fa15ac5c63a2b7eb1dbe1c913004bc848..08966742046c21bbc13bbc40f4b101a8979b5614 100644 (file)
@@ -184,6 +184,19 @@ sub parse_arguments
     $default_dirlist="$acdir/dirlist"
        if $acdir ne $default_acdir;
 
+    # Search the versioned directory near the end, and then the
+    # unversioned directory last.  Only do this if the user didn't
+    # override acdir.
+    push (@dirlist, "$acdir-$APIVERSION")
+       if $acdir eq $default_acdir;
+
+    # By default $(datadir)/aclocal doesn't exist.  We don't want to
+    # get an error in the case where we are searching the default
+    # directory and it hasn't been created.
+    push (@dirlist, $acdir)
+       unless $acdir eq $default_acdir && ! -d $acdir;
+
+    # Finally, adds any directory listed in the `dirlist' file.
     if (open (DEFAULT_DIRLIST, $default_dirlist))
     {
        while (<DEFAULT_DIRLIST>)
@@ -196,22 +209,11 @@ sub parse_arguments
            if (-d $contents )
            {
                push (@dirlist, $contents);
-           }   
+           }
        }
        close (DEFAULT_DIRLIST);
     }
 
-    # Search the versioned directory near the end, and then the
-    # unversioned directory last.  Only do this if the user didn't
-    # override acdir.
-    push (@dirlist, "$acdir-$APIVERSION")
-       if $acdir eq $default_acdir;
-
-    # By default $(datadir)/aclocal doesn't exist.  We don't want to
-    # get an error in the case where we are searching the default
-    # directory and it hasn't been created.
-    push (@dirlist, $acdir)
-       unless $acdir eq $default_acdir && ! -d $acdir;
 
     return @dirlist;
 }
index 95b48d3bd983af47a862e9f739349484e37fdb0f..16464e1128492de03421862b887e1aba18a420d4 100644 (file)
@@ -1341,7 +1341,7 @@ search around.  Also, the @code{aclocal} mechanism allows other packages
 to supply their own macros.
 
 At startup, @code{aclocal} scans all the @file{.m4} files it can find,
-looking for macro definitions (@pxref{Macro search path}).  Then it 
+looking for macro definitions (@pxref{Macro search path}).  Then it
 scans @file{configure.in}.  Any
 mention of one of the macros found in the first step causes that macro,
 and any macros it in turn requires, to be put into @file{aclocal.m4}.
@@ -1417,15 +1417,15 @@ directories, in this order:
 @table @code
 @item @var{acdir-APIVERSION}
 This is where the @file{.m4} macros distributed with automake itself
-are stored.  @var{APIVERSION} depends on the automake release used; 
-for automake 1.6.x, @var{APIVERSION} = @code{1.6}.  
+are stored.  @var{APIVERSION} depends on the automake release used;
+for automake 1.6.x, @var{APIVERSION} = @code{1.6}.
 
 @item @var{acdir}
 This directory is intended for third party @file{.m4} files, and is
-configured when @command{automake} itself is built.  This is 
-@file{@@datadir@@/aclocal/}, which typically 
-expands to @file{$@{prefix@}/share/aclocal/}.  To find the compiled-in 
-value of @var{acdir}, use the @code{--print-ac-dir} option 
+configured when @command{automake} itself is built.  This is
+@file{@@datadir@@/aclocal/}, which typically
+expands to @file{$@{prefix@}/share/aclocal/}.  To find the compiled-in
+value of @var{acdir}, use the @code{--print-ac-dir} option
 (@pxref{aclocal options}).
 @end table
 
@@ -1442,9 +1442,9 @@ can be used to change or extend this search path.
 
 @subsection Modifying the macro search path: @code{--acdir}
 
-The most obvious option to modify the search path is 
+The most obvious option to modify the search path is
 @code{--acdir=@var{dir}}, which changes default directory and
-drops the @var{APIVERSION} directory.  For example, if one specifies 
+drops the @var{APIVERSION} directory.  For example, if one specifies
 @code{--acdir=/opt/private/}, then the search path becomes:
 
 @enumerate
@@ -1457,7 +1457,7 @@ needed by end-users.
 
 @subsection Modifying the macro search path: @code{-I @var{dir}}
 
-Any extra directories specified using @code{-I} options 
+Any extra directories specified using @code{-I} options
 (@pxref{aclocal options}) are @emph{prepended} to this search list.  Thus,
 @code{aclocal -I /foo -I /bar} results in the following search path:
 
@@ -1469,15 +1469,15 @@ Any extra directories specified using @code{-I} options
 @end enumerate
 
 @subsection Modifying the macro search path: @file{dirlist}
+@cindex @file{dirlist}
 
-There is a third mechanism for customizing the search path.  If a 
-@file{dirlist} file exists in @var{acdir}, then that
-file is assumed to contain a list of directories, one per line, to
-be added to the search list.  These directories are searched @emph{after} 
-any directories specified on the command line using @code{-I}, but
-@emph{before} the @var{acdir} and @var{acdir-APIVERSION} directories.
+There is a third mechanism for customizing the search path.  If a
+@file{dirlist} file exists in @var{acdir}, then that file is assumed to
+contain a list of directories, one per line, to be added to the search
+list.  These directories are searched @emph{after} all other
+directories.
 
-For example, suppose 
+For example, suppose
 @file{@var{acdir}/dirlist} contains the following:
 
 @example
@@ -1485,47 +1485,47 @@ For example, suppose
 /test2
 @end example
 
+@noindent
 and that @code{aclocal} was called with the @code{-I /foo -I /bar} options.
 Then, the search path would be
 
 @enumerate
 @item @file{/foo}
 @item @file{/bar}
-@item @file{/test1}
-@item @file{/test2}
 @item @var{acdir}-@var{APIVERSION}
 @item @var{acdir}
+@item @file{/test1}
+@item @file{/test2}
 @end enumerate
 
-If the @code{--acdir=@var{dir}} option is used, 
-then @command{aclocal} will search for the @file{dirlist} file in 
-the @emph{redirected} @var{acdir} directory.  In the 
-@code{--acdir} example above, @command{aclocal} will search the 
-@file{/opt/private/} directory for @file{dirlist}.  Again, however,
-the @code{--acdir} option is intended for use by the internal
-automake test suite only; @code{--acdir} is not ordinarily 
-needed by end-users.
+If the @code{--acdir=@var{dir}} option is used, then @command{aclocal}
+will search for the @file{dirlist} file in @var{dir}.  In the
+@code{--acdir=/opt/private/} example above, @command{aclocal} would look
+for @file{/opt/private/dirlist}.  Again, however, the @code{--acdir}
+option is intended for use by the internal automake test suite only;
+@code{--acdir} is not ordinarily needed by end-users.
 
-@file{dirlist} is useful in the following situation: suppose that 
-@code{automake} version @code{1.6.2} is installed with 
-$prefix=/usr by the system vendor. Thus, the default search 
-directories are 
+@file{dirlist} is useful in the following situation: suppose that
+@code{automake} version @code{1.6.2} is installed with
+$prefix=/usr by the system vendor. Thus, the default search
+directories are
 
 @enumerate
 @item @file{/usr/share/aclocal-1.6/}
 @item @file{/usr/share/aclocal/}
 @end enumerate
 
-However, suppose further that many packages have been manually 
+However, suppose further that many packages have been manually
 installed on the system, with $prefix=/usr/local, as is typical.
-In that case, many of these ``extra'' @file{.m4} files are in 
-@file{/usr/local/share/aclocal}.  The only way to force 
-@file{/usr/bin/aclocal} to find these ``extra'' @file{.m4} files 
-is to always call @code{aclocal -I /usr/local/share/aclocal}.  
+In that case, many of these ``extra'' @file{.m4} files are in
+@file{/usr/local/share/aclocal}.  The only way to force
+@file{/usr/bin/aclocal} to find these ``extra'' @file{.m4} files
+is to always call @code{aclocal -I /usr/local/share/aclocal}.
 This is inconvenient.  With @file{dirlist}, one may create the file
 
 @file{/usr/share/aclocal/dirlist}
 
+@noindent
 which contains only the single line
 
 @file{/usr/local/share/aclocal}
@@ -1533,16 +1533,20 @@ which contains only the single line
 Now, the ``default'' search path on the affected system is
 
 @enumerate
-@item @file{/usr/local/share/aclocal/}
 @item @file{/usr/share/aclocal-1.6/}
 @item @file{/usr/share/aclocal/}
+@item @file{/usr/local/share/aclocal/}
 @end enumerate
 
-without the need for @code{-I} options; @code{-I} options can be reserved 
+without the need for @code{-I} options; @code{-I} options can be reserved
 for project-specific needs (@file{my-source-dir/m4/}), rather than
 using it to work around local system-dependent tool installation
 directories.
 
+Similarly, @file{dirlist} can be handy if you have installed a local
+copy Automake on your account and want @command{aclocal} to look for
+macros installed at other places on the system.
+
 @node Macros, Extending aclocal, Invoking aclocal, configure
 @section Autoconf macros supplied with Automake
 
index 51463cab685fadf215c7557a8c994d70f4441c03..c3868e238bd85d095cc7f79d8a23de18b6b55cae 100755 (executable)
@@ -5,6 +5,8 @@
 
 . $srcdir/defs || exit 1
 
+set -e
+
 cat > configure.in <<EOF
 AC_INIT
 AM_INIT_GUILE_MODULE
@@ -12,7 +14,7 @@ EOF
 
 mkdir dirlist-test
 
-cat >>dirlist-test/dirlist-check.m4 << 'END'
+cat >dirlist-test/dirlist-check.m4 <<'END'
 AC_DEFUN([AM_INIT_GUILE_MODULE],[
 . $srcdir/../GUILE-VERSION
 AM_INIT_AUTOMAKE($PACKAGE, $VERSION)
@@ -21,6 +23,16 @@ module=[$1]
 AC_SUBST(module)])
 END
 
-$ACLOCAL || exit 1
+cat >dirlist-test/init.m4 <<EOF
+AC_DEFUN([AM_INIT_AUTOMAKE], [I should not be included])
+EOF
 
+$ACLOCAL
 grep 'DEFUN.*AM_INIT_GUILE_MODULE' aclocal.m4
+
+# This bug can occur only when we do a VPATH build of Automake
+# (beause of the `-I' passed to aclocal in tests/defs) but it's
+# ok because this is what `make distcheck' does.
+grep 'I should not be included' aclocal.m4 && exit 1
+
+: