From cc8623f196cd5d1c82573b34cb3a6a56f712790a Mon Sep 17 00:00:00 2001 From: Will Newton Date: Thu, 11 Dec 2014 17:27:34 +0000 Subject: [PATCH] Require bison 2.7 or newer for regenerating intl/plural.y 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-22 Will Newton * 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. --- ChangeLog | 10 ++++++++++ INSTALL | 5 +++++ configure | 53 +++++++++++++++++++++++++++++++++++++---------------- configure.ac | 5 ++++- manual/install.texi | 9 +++++++++ 5 files changed, 65 insertions(+), 17 deletions(-) diff --git a/ChangeLog b/ChangeLog index d488679..99c248c 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,13 @@ +2014-12-22 Will Newton + + * 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. + 2014-12-21 Chris Metcalf * sysdeps/tile/ffs.c (__ffs): Moved ffsll definition... diff --git a/INSTALL b/INSTALL index 35f70e0..8e5a4a1 100644 --- a/INSTALL +++ b/INSTALL @@ -393,6 +393,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 cde55de..ce0c6a0 100755 --- a/configure +++ b/configure @@ -5330,27 +5330,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 @@ -5358,11 +5357,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; } @@ -5372,6 +5369,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 f1e6394..d89aaf0 100644 --- a/configure.ac +++ b/configure.ac @@ -1048,7 +1048,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 2b9b57c..d8dc3d5 100644 --- a/manual/install.texi +++ b/manual/install.texi @@ -449,6 +449,15 @@ GNU @code{gettext} 0.10.36 or later @end itemize @noindent +If you wish to regenerate the @code{yacc} parser code in the @file{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. -- 2.7.4