diff mbox

[v2] Require bison 2.7 or newer for regenerating intl/plural.y

Message ID 1418320736-7553-1-git-send-email-will.newton@linaro.org
State New
Headers show

Commit Message

Will Newton Dec. 11, 2014, 5:58 p.m. UTC
The merge of the latest gettext code introduced changes to the yacc
parser source that are incompatible with versions of bison older
than 2.7. Add a configure check for the appropriate versions and
document the requirement in INSTALL.

ChangeLog:

2014-12-11  Will Newton  <will.newton@linaro.org>

	* manual/install.texi: Document that we require bison 2.7
	or above.
	* INSTALL: Regenerate.
	* configure.ac: Use AC_CHECK_PROG_VER instead of
	AC_PATH_PROG when checking for bison and check for
	version 2.7 or above.
	* configure: Regenerate.
---
 INSTALL             |  5 +++++
 configure           | 53 +++++++++++++++++++++++++++++++++++++----------------
 configure.ac        |  5 ++++-
 manual/install.texi |  9 +++++++++
 4 files changed, 55 insertions(+), 17 deletions(-)

Changes in v2:
 - Generate INSTALL from manual/install.texi
 - Improve glob to match future bison versions
diff mbox

Patch

diff --git a/INSTALL b/INSTALL
index dac6178..7338678 100644
--- a/INSTALL
+++ b/INSTALL
@@ -386,6 +386,11 @@  and if you change any of the message translation files you will need
 
    * GNU `gettext' 0.10.36 or later
 
+If you wish to regenerate the yacc parser code in the `intl'
+subdirectory you will need
+
+   * GNU `bison' 2.7 or later
+
 You may also need these packages if you upgrade your source tree using
 patches, although we try to avoid this.
 
diff --git a/configure b/configure
index 0cb54ec..c4e6546 100755
--- a/configure
+++ b/configure
@@ -5318,27 +5318,26 @@  $as_echo "no" >&6; }
 fi
 
 
-# Extract the first word of "bison", so it can be a program name with args.
-set dummy bison; ac_word=$2
+for ac_prog in bison
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_path_BISON+:} false; then :
+if ${ac_cv_prog_BISON+:} false; then :
   $as_echo_n "(cached) " >&6
 else
-  case $BISON in
-  [\\/]* | ?:[\\/]*)
-  ac_cv_path_BISON="$BISON" # Let the user override the test with a path.
-  ;;
-  *)
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-as_dummy="$PATH:/usr/local/bin:/usr/bin:/bin"
-for as_dir in $as_dummy
+  if test -n "$BISON"; then
+  ac_cv_prog_BISON="$BISON" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
 do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
   if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_path_BISON="$as_dir/$ac_word$ac_exec_ext"
+    ac_cv_prog_BISON="$ac_prog"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
@@ -5346,11 +5345,9 @@  done
   done
 IFS=$as_save_IFS
 
-  test -z "$ac_cv_path_BISON" && ac_cv_path_BISON="no"
-  ;;
-esac
 fi
-BISON=$ac_cv_path_BISON
+fi
+BISON=$ac_cv_prog_BISON
 if test -n "$BISON"; then
   { $as_echo "$as_me:${as_lineno-$LINENO}: result: $BISON" >&5
 $as_echo "$BISON" >&6; }
@@ -5360,6 +5357,30 @@  $as_echo "no" >&6; }
 fi
 
 
+  test -n "$BISON" && break
+done
+
+if test -z "$BISON"; then
+  ac_verc_fail=yes
+else
+  # Found it, now check the version.
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking version of $BISON" >&5
+$as_echo_n "checking version of $BISON... " >&6; }
+  ac_prog_version=`$BISON --version 2>&1 | sed -n 's/^.*bison (GNU Bison) \([0-9]*\.[0-9.]*\).*$/\1/p'`
+  case $ac_prog_version in
+    '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;;
+    2.7*|[3-9].*|[1-9][0-9]*)
+       ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;;
+    *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;;
+
+  esac
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_prog_version" >&5
+$as_echo "$ac_prog_version" >&6; }
+fi
+if test $ac_verc_fail = yes; then
+  BISON=no
+fi
+
 
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for libc-friendly stddef.h" >&5
 $as_echo_n "checking for libc-friendly stddef.h... " >&6; }
diff --git a/configure.ac b/configure.ac
index b2c4b1f..82271c1 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1041,7 +1041,10 @@  if test "$PERL" != no &&
 fi
 AC_PATH_PROG(INSTALL_INFO, install-info, no,
 	     $PATH:/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin)
-AC_PATH_PROG(BISON, bison, no, $PATH:/usr/local/bin:/usr/bin:/bin)
+AC_CHECK_PROG_VER(BISON, bison, --version,
+		  [bison (GNU Bison) \([0-9]*\.[0-9.]*\)],
+		  [2.7*|[3-9].*|[1-9][0-9]*],
+		  BISON=no)
 
 AC_CACHE_CHECK(for libc-friendly stddef.h, libc_cv_friendly_stddef, [dnl
 AC_TRY_COMPILE(dnl
diff --git a/manual/install.texi b/manual/install.texi
index 1eafb6e..efbb30f 100644
--- a/manual/install.texi
+++ b/manual/install.texi
@@ -442,6 +442,15 @@  GNU @code{gettext} 0.10.36 or later
 @end itemize
 
 @noindent
+If you wish to regenerate the yacc parser code in the `intl'
+subdirectory you will need
+
+@itemize @bullet
+@item
+GNU @code{bison} 2.7 or later
+@end itemize
+
+@noindent
 You may also need these packages if you upgrade your source tree using
 patches, although we try to avoid this.