Bump minimum version of Flex to 2.5.35

Since the retirement of some older buildfarm members, the oldest Flex
that gets regular testing is 2.5.35.

Reviewed by Andres Freund
Discussion: https://www.postgresql.org/message-id/1097762.1662145681@sss.pgh.pa.us
This commit is contained in:
John Naylor 2022-09-06 11:41:58 +07:00
parent b086a47a27
commit 8b878bffa8
6 changed files with 12 additions and 14 deletions

View File

@ -65,10 +65,8 @@ AC_SUBST(BISONFLAGS)
# PGAC_PATH_FLEX # PGAC_PATH_FLEX
# -------------- # --------------
# Look for Flex, set the output variable FLEX to its path if found. # Look for Flex, set the output variable FLEX to its path if found.
# Reject versions before 2.5.31, as we need a reasonably non-buggy reentrant # Reject versions before 2.5.35 (the earliest version in the buildfarm
# scanner. (Note: the well-publicized security problem in 2.5.31 does not # as of 2022). Also find Flex if its installed under `lex', but do not
# affect Postgres, and there are still distros shipping patched 2.5.31,
# so allow it.) Also find Flex if its installed under `lex', but do not
# accept other Lex programs. # accept other Lex programs.
AC_DEFUN([PGAC_PATH_FLEX], AC_DEFUN([PGAC_PATH_FLEX],
@ -92,14 +90,14 @@ else
echo '%%' > conftest.l echo '%%' > conftest.l
if $pgac_candidate -t conftest.l 2>/dev/null | grep FLEX_SCANNER >/dev/null 2>&1; then if $pgac_candidate -t conftest.l 2>/dev/null | grep FLEX_SCANNER >/dev/null 2>&1; then
pgac_flex_version=`$pgac_candidate --version 2>/dev/null` pgac_flex_version=`$pgac_candidate --version 2>/dev/null`
if echo "$pgac_flex_version" | sed ['s/[.a-z]/ /g'] | $AWK '{ if ([$]1 == 2 && ([$]2 > 5 || ([$]2 == 5 && [$]3 >= 31))) exit 0; else exit 1;}' if echo "$pgac_flex_version" | sed ['s/[.a-z]/ /g'] | $AWK '{ if ([$]1 == 2 && ([$]2 > 5 || ([$]2 == 5 && [$]3 >= 35))) exit 0; else exit 1;}'
then then
pgac_cv_path_flex=$pgac_candidate pgac_cv_path_flex=$pgac_candidate
break 2 break 2
else else
AC_MSG_WARN([ AC_MSG_WARN([
*** The installed version of Flex, $pgac_candidate, is too old to use with PostgreSQL. *** The installed version of Flex, $pgac_candidate, is too old to use with PostgreSQL.
*** Flex version 2.5.31 or later is required, but this is $pgac_flex_version.]) *** Flex version 2.5.35 or later is required, but this is $pgac_flex_version.])
fi fi
fi fi
fi fi

6
configure vendored
View File

@ -10278,17 +10278,17 @@ else
echo '%%' > conftest.l echo '%%' > conftest.l
if $pgac_candidate -t conftest.l 2>/dev/null | grep FLEX_SCANNER >/dev/null 2>&1; then if $pgac_candidate -t conftest.l 2>/dev/null | grep FLEX_SCANNER >/dev/null 2>&1; then
pgac_flex_version=`$pgac_candidate --version 2>/dev/null` pgac_flex_version=`$pgac_candidate --version 2>/dev/null`
if echo "$pgac_flex_version" | sed 's/[.a-z]/ /g' | $AWK '{ if ($1 == 2 && ($2 > 5 || ($2 == 5 && $3 >= 31))) exit 0; else exit 1;}' if echo "$pgac_flex_version" | sed 's/[.a-z]/ /g' | $AWK '{ if ($1 == 2 && ($2 > 5 || ($2 == 5 && $3 >= 35))) exit 0; else exit 1;}'
then then
pgac_cv_path_flex=$pgac_candidate pgac_cv_path_flex=$pgac_candidate
break 2 break 2
else else
{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING:
*** The installed version of Flex, $pgac_candidate, is too old to use with PostgreSQL. *** The installed version of Flex, $pgac_candidate, is too old to use with PostgreSQL.
*** Flex version 2.5.31 or later is required, but this is $pgac_flex_version." >&5 *** Flex version 2.5.35 or later is required, but this is $pgac_flex_version." >&5
$as_echo "$as_me: WARNING: $as_echo "$as_me: WARNING:
*** The installed version of Flex, $pgac_candidate, is too old to use with PostgreSQL. *** The installed version of Flex, $pgac_candidate, is too old to use with PostgreSQL.
*** Flex version 2.5.31 or later is required, but this is $pgac_flex_version." >&2;} *** Flex version 2.5.35 or later is required, but this is $pgac_flex_version." >&2;}
fi fi
fi fi
fi fi

View File

@ -220,7 +220,7 @@ $ENV{MSBFLAGS}="/m";
<productname>Bison</productname> and <productname>Flex</productname> are <productname>Bison</productname> and <productname>Flex</productname> are
required to build from Git, but not required when building from a release required to build from Git, but not required when building from a release
file. Only <productname>Bison</productname> versions 2.3 and later file. Only <productname>Bison</productname> versions 2.3 and later
will work. <productname>Flex</productname> must be version 2.5.31 or later. will work. <productname>Flex</productname> must be version 2.5.35 or later.
</para> </para>
<para> <para>

View File

@ -314,7 +314,7 @@ su - postgres
<application>Flex</application> and <application>Bison</application> <application>Flex</application> and <application>Bison</application>
are needed to build from a Git checkout, or if you changed the actual are needed to build from a Git checkout, or if you changed the actual
scanner and parser definition files. If you need them, be sure scanner and parser definition files. If you need them, be sure
to get <application>Flex</application> 2.5.31 or later and to get <application>Flex</application> 2.5.35 or later and
<application>Bison</application> 2.3 or later. Other <application>lex</application> <application>Bison</application> 2.3 or later. Other <application>lex</application>
and <application>yacc</application> programs cannot be used. and <application>yacc</application> programs cannot be used.
</para> </para>

View File

@ -332,8 +332,8 @@ record_config_file_error(const char *errmsg,
/* /*
* Flex fatal errors bring us here. Stash the error message and jump back to * Flex fatal errors bring us here. Stash the error message and jump back to
* ParseConfigFp(). Assume all msg arguments point to string constants; this * ParseConfigFp(). Assume all msg arguments point to string constants; this
* holds for flex 2.5.31 (earliest we support) and flex 2.5.35 (latest as of * holds for flex 2.5.35 (earliest we support). Otherwise, we would need to
* this writing). Otherwise, we would need to copy the message. * copy the message.
* *
* We return "int" since this takes the place of calls to fprintf(). * We return "int" since this takes the place of calls to fprintf().
*/ */

View File

@ -21,7 +21,7 @@ $flexver = (split(/\s+/, $flexver))[1];
$flexver =~ s/[^0-9.]//g; $flexver =~ s/[^0-9.]//g;
my @verparts = split(/\./, $flexver); my @verparts = split(/\./, $flexver);
unless ($verparts[0] == 2 unless ($verparts[0] == 2
&& ($verparts[1] > 5 || ($verparts[1] == 5 && $verparts[2] >= 31))) && ($verparts[1] > 5 || ($verparts[1] == 5 && $verparts[2] >= 35)))
{ {
print "WARNING! Flex install not found, or unsupported Flex version.\n"; print "WARNING! Flex install not found, or unsupported Flex version.\n";
print "echo Attempting to build without.\n"; print "echo Attempting to build without.\n";