Make it easier on maintainers who use their own Automake.
authorPaul Eggert <eggert@cs.ucla.edu>
Sat, 3 May 2014 07:09:16 +0000 (00:09 -0700)
committerPaul Eggert <eggert@cs.ucla.edu>
Sat, 3 May 2014 07:09:16 +0000 (00:09 -0700)
* autogen.sh (ACLOCAL_PATH, AUTORECONF_ENV): New vars.
Set them to avoid problems when maintainers prepend their own
Automake installations to their PATH.  Report an error if pkg.m4
can't be found.

ChangeLog
autogen.sh
etc/PROBLEMS

index 648017a..23aae9e 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+2014-05-03  Paul Eggert  <eggert@cs.ucla.edu>
+
+       Make it easier on maintainers who use their own Automake.
+       * autogen.sh (ACLOCAL_PATH, AUTORECONF_ENV): New vars.
+       Set them to avoid problems when maintainers prepend their own
+       Automake installations to their PATH.  Report an error if pkg.m4
+       can't be found.
+
 2014-05-02  Glenn Morris  <rgm@gnu.org>
 
        * configure.ac (PKG_CONFIG_PATH): Declare with AC_ARG_VAR.
 2014-05-02  Glenn Morris  <rgm@gnu.org>
 
        * configure.ac (PKG_CONFIG_PATH): Declare with AC_ARG_VAR.
index 84230b5..c2a2c7a 100755 (executable)
@@ -195,7 +195,7 @@ this script.
 If you know that the required versions are in your PATH, but this
 script has made an error, then you can simply run
 
 If you know that the required versions are in your PATH, but this
 script has made an error, then you can simply run
 
-autoreconf -i -I m4
+autoreconf -fi -I m4
 
 instead of this script.
 
 
 instead of this script.
 
@@ -205,12 +205,51 @@ EOF
     exit 1
 fi
 
     exit 1
 fi
 
-echo "Your system has the required tools, running autoreconf..."
+# If automake is installed in a nonstandard location, find the standard
+# location if possible and append it to ACLOCAL_PATH.  That way, it will
+# find the pkg.m4 that is installed in the standard location.
+echo "Checking for pkg.m4..."
+AUTORECONF_ENV=
+ac_dir=`aclocal --print-ac-dir` && test -r "$ac_dir/pkg.m4" || {
+  oIFS=$IFS
+  IFS=:
+  before_first_aclocal=true
+  for dir in $PATH; do
+    if test -x "$dir/aclocal"; then
+      if $before_first_aclocal; then
+       before_first_aclocal=false
+      elif ac_dir=`"$dir/aclocal" --print-ac-dir` && test -r "$ac_dir/pkg.m4"
+      then
+       case $ACLOCAL_PATH in
+         '') ACLOCAL_PATH=$ac_dir;;
+         ?*) ACLOCAL_PATH=$ACLOCAL_PATH:$ac_dir;;
+       esac
+       export ACLOCAL_PATH
+       AUTORECONF_ENV="ACLOCAL_PATH='$ACLOCAL_PATH' "
+       break
+      fi
+    fi
+  done
+  IFS=$oIFS
+
+  if test -z "$AUTORECONF_ENV"; then
+    cat <<EOF
+The version of aclocal that you are using cannot find the pkg.m4 file that
+pkg-config provides.  If it is installed in some unusual directory /FOO/BAR,
+set ACLOCAL_PATH='/FOO/BAR' in the environment and run this script again.
+EOF
+    exit 1
+  fi
+}
+echo ok
+
+echo 'Your system has the required tools.'
+echo "Running \"${AUTORECONF_ENV}autoreconf -fi -I m4\" ..."
 
 
 ## Let autoreconf figure out what, if anything, needs doing.
 ## Use autoreconf's -f option in case autoreconf itself has changed.
 
 
 ## Let autoreconf figure out what, if anything, needs doing.
 ## Use autoreconf's -f option in case autoreconf itself has changed.
-autoreconf -f -i -I m4 || exit $?
+autoreconf -fi -I m4 || exit $?
 
 ## Create a timestamp, so that './autogen.sh; make' doesn't
 ## cause 'make' to needlessly run 'autoheader'.
 
 ## Create a timestamp, so that './autogen.sh; make' doesn't
 ## cause 'make' to needlessly run 'autoheader'.
index 3d5349c..cf025ce 100644 (file)
@@ -1234,7 +1234,7 @@ https://bugzilla.xfce.org/show_bug.cgi?id=7588 .
 
 When you start Emacs you may see something like this:
 
 
 When you start Emacs you may see something like this:
 
-(emacs:2286): LIBDBUSMENU-GTK-CRITICAL **: watch_submenu: assertion 
+(emacs:2286): LIBDBUSMENU-GTK-CRITICAL **: watch_submenu: assertion
 `GTK_IS_MENU_SHELL(menu)' failed
 
 This happens if the Emacs binary has been renamed.  The cause is the Ubuntu
 `GTK_IS_MENU_SHELL(menu)' failed
 
 This happens if the Emacs binary has been renamed.  The cause is the Ubuntu
@@ -2223,16 +2223,16 @@ If you do, please send it to bug-gnu-emacs@gnu.org so we can list it here.
 
 * Build-time problems
 
 
 * Build-time problems
 
-** Autogen.sh / Autoreconf
+** Autoreconf
 
 
-*** Running `autogen.sh' or `autoreconf' fails with an error of the form
-"possibly undefined macro: PKG_CONFIG".  This indicates that the version
-of aclocal that you are using cannot find the pkg.m4 file that
-pkg-config provides.  If you installed your own version of automake in
-a non-standard location /prefix, then add a line to the
-/prefix/share/aclocal/dirlist file (create the file if necessary)
-that gives the location of the directory that contains pkg.m4
-(e.g. /usr/share/aclocal).
+*** autoreconf fails with "possibly undefined macro: PKG_CONFIG".
+This can happen if you installed your own automake in a non-standard
+location /prefix.  The simplest workaround is to run ./autogen.sh
+instead.  If you prefer to run autoreconf directly, then if pkg.m4 is
+in the directory /usr/share/aclocal you can append /usr/share/local to
+your ACLOCAL_PATH environment variable, or you can add a line
+"/usr/share/aclocal" to the file /prefix/share/aclocal/dirlist (create
+the file if necessary).
 
 ** Configuration
 
 
 ** Configuration