On Thu, Aug 4, 2022 at 11:09 AM Tom Lane <t...@sss.pgh.pa.us> wrote: > > clock_gettime is required by SUSv2 (1997), so I have to admit that > macOS 10.4 doesn't have a lot of excuse not to have it. In any case, > prairiedog is just sitting there doing its thing until I find cycles > to install a newer OS. If you want to move ahead with this, don't > let prairiedog block you.
Now that prairiedog is offline, it seems the oldest Bison in the buildfarm is 2.3, as the vendor-supplied version for MacOS. Since earlier versions are now untested, it seems we should now make that the minimum, as in the attached. I took a quick look to see if that would enable anything useful, but nothing stuck out. Aside: The MSVC builds don't report the Bison version that I can see, but otherwise it seems now the only non-Apple pre-3.0 animals are prion (2.7) and the three Sparc animals on Debian 7 (2.5). -- John Naylor EDB: http://www.enterprisedb.com
From 6e1022bae4a8d45783fa0d678d51eec03383d0de Mon Sep 17 00:00:00 2001 From: John Naylor <john.naylor@postgresql.org> Date: Sun, 7 Aug 2022 18:32:57 +0700 Subject: [PATCH v1] Require at least Bison 2.3 to match the buildfarm --- config/programs.m4 | 6 +++--- configure | 6 +++--- contrib/cube/cubeparse.y | 5 +---- contrib/seg/segparse.y | 5 +---- doc/src/sgml/install-windows.sgml | 2 +- doc/src/sgml/installation.sgml | 2 +- src/backend/bootstrap/bootparse.y | 5 +---- src/backend/parser/gram.y | 5 +---- src/backend/replication/repl_gram.y | 5 +---- src/backend/replication/syncrep_gram.y | 5 +---- src/backend/utils/adt/jsonpath_gram.y | 5 +---- src/pl/plpgsql/src/pl_gram.y | 5 +---- src/tools/msvc/pgbison.pl | 2 +- 13 files changed, 17 insertions(+), 41 deletions(-) diff --git a/config/programs.m4 b/config/programs.m4 index e7908d8793..cf432cb62c 100644 --- a/config/programs.m4 +++ b/config/programs.m4 @@ -22,7 +22,7 @@ fi # PGAC_PATH_BISON # --------------- # Look for Bison, set the output variable BISON to its path if found. -# Reject versions before 1.875 (they have bugs or capacity limits). +# Reject versions before 2.3. # Note we do not accept other implementations of yacc. AC_DEFUN([PGAC_PATH_BISON], @@ -31,11 +31,11 @@ AC_DEFUN([PGAC_PATH_BISON], if test "$BISON"; then pgac_bison_version=`$BISON --version 2>/dev/null | sed q` AC_MSG_NOTICE([using $pgac_bison_version]) - if echo "$pgac_bison_version" | $AWK '{ if ([$]4 < 1.875) exit 0; else exit 1;}' + if echo "$pgac_bison_version" | $AWK '{ if ([$]4 < 2.3) exit 0; else exit 1;}' then AC_MSG_WARN([ *** The installed version of Bison, $BISON, is too old to use with PostgreSQL. -*** Bison version 1.875 or later is required, but this is $pgac_bison_version.]) +*** Bison version 2.3 or later is required, but this is $pgac_bison_version.]) BISON="" fi # Bison >=3.0 issues warnings about %name-prefix="base_yy", instead diff --git a/configure b/configure index cf2c4b85fe..c3c7c1b39b 100755 --- a/configure +++ b/configure @@ -10219,14 +10219,14 @@ if test "$BISON"; then pgac_bison_version=`$BISON --version 2>/dev/null | sed q` { $as_echo "$as_me:${as_lineno-$LINENO}: using $pgac_bison_version" >&5 $as_echo "$as_me: using $pgac_bison_version" >&6;} - if echo "$pgac_bison_version" | $AWK '{ if ($4 < 1.875) exit 0; else exit 1;}' + if echo "$pgac_bison_version" | $AWK '{ if ($4 < 2.3) exit 0; else exit 1;}' then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: *** The installed version of Bison, $BISON, is too old to use with PostgreSQL. -*** Bison version 1.875 or later is required, but this is $pgac_bison_version." >&5 +*** Bison version 2.3 or later is required, but this is $pgac_bison_version." >&5 $as_echo "$as_me: WARNING: *** The installed version of Bison, $BISON, is too old to use with PostgreSQL. -*** Bison version 1.875 or later is required, but this is $pgac_bison_version." >&2;} +*** Bison version 2.3 or later is required, but this is $pgac_bison_version." >&2;} BISON="" fi # Bison >=3.0 issues warnings about %name-prefix="base_yy", instead diff --git a/contrib/cube/cubeparse.y b/contrib/cube/cubeparse.y index 7577c4515c..9bfd7a0df6 100644 --- a/contrib/cube/cubeparse.y +++ b/contrib/cube/cubeparse.y @@ -15,10 +15,7 @@ /* * Bison doesn't allocate anything that needs to live across parser calls, * so we can easily have it use palloc instead of malloc. This prevents - * memory leaks if we error out during parsing. Note this only works with - * bison >= 2.0. However, in bison 1.875 the default is to use alloca() - * if possible, so there's not really much problem anyhow, at least if - * you're building with gcc. + * memory leaks if we error out during parsing. */ #define YYMALLOC palloc #define YYFREE pfree diff --git a/contrib/seg/segparse.y b/contrib/seg/segparse.y index 33e3a9f35f..7a0010f659 100644 --- a/contrib/seg/segparse.y +++ b/contrib/seg/segparse.y @@ -13,10 +13,7 @@ /* * Bison doesn't allocate anything that needs to live across parser calls, * so we can easily have it use palloc instead of malloc. This prevents - * memory leaks if we error out during parsing. Note this only works with - * bison >= 2.0. However, in bison 1.875 the default is to use alloca() - * if possible, so there's not really much problem anyhow, at least if - * you're building with gcc. + * memory leaks if we error out during parsing. */ #define YYMALLOC palloc #define YYFREE pfree diff --git a/doc/src/sgml/install-windows.sgml b/doc/src/sgml/install-windows.sgml index afb004b5cf..46d2896072 100644 --- a/doc/src/sgml/install-windows.sgml +++ b/doc/src/sgml/install-windows.sgml @@ -219,7 +219,7 @@ $ENV{MSBFLAGS}="/m"; <para> <productname>Bison</productname> and <productname>Flex</productname> are required to build from Git, but not required when building from a release - file. Only <productname>Bison</productname> 1.875 or versions 2.2 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. </para> diff --git a/doc/src/sgml/installation.sgml b/doc/src/sgml/installation.sgml index 70d188e2bc..7f7f8428e1 100644 --- a/doc/src/sgml/installation.sgml +++ b/doc/src/sgml/installation.sgml @@ -315,7 +315,7 @@ su - postgres 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 to get <application>Flex</application> 2.5.31 or later and - <application>Bison</application> 1.875 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. </para> </listitem> diff --git a/src/backend/bootstrap/bootparse.y b/src/backend/bootstrap/bootparse.y index 7d7655d295..fdc6d17b6f 100644 --- a/src/backend/bootstrap/bootparse.y +++ b/src/backend/bootstrap/bootparse.y @@ -36,10 +36,7 @@ /* * Bison doesn't allocate anything that needs to live across parser calls, * so we can easily have it use palloc instead of malloc. This prevents - * memory leaks if we error out during parsing. Note this only works with - * bison >= 2.0. However, in bison 1.875 the default is to use alloca() - * if possible, so there's not really much problem anyhow, at least if - * you're building with gcc. + * memory leaks if we error out during parsing. */ #define YYMALLOC palloc #define YYFREE pfree diff --git a/src/backend/parser/gram.y b/src/backend/parser/gram.y index f9037761f9..e3c4c00db6 100644 --- a/src/backend/parser/gram.y +++ b/src/backend/parser/gram.y @@ -103,10 +103,7 @@ /* * Bison doesn't allocate anything that needs to live across parser calls, * so we can easily have it use palloc instead of malloc. This prevents - * memory leaks if we error out during parsing. Note this only works with - * bison >= 2.0. However, in bison 1.875 the default is to use alloca() - * if possible, so there's not really much problem anyhow, at least if - * you're building with gcc. + * memory leaks if we error out during parsing. */ #define YYMALLOC palloc #define YYFREE pfree diff --git a/src/backend/replication/repl_gram.y b/src/backend/replication/repl_gram.y index 4cf087e602..cb23fed079 100644 --- a/src/backend/replication/repl_gram.y +++ b/src/backend/replication/repl_gram.y @@ -29,10 +29,7 @@ Node *replication_parse_result; /* * Bison doesn't allocate anything that needs to live across parser calls, * so we can easily have it use palloc instead of malloc. This prevents - * memory leaks if we error out during parsing. Note this only works with - * bison >= 2.0. However, in bison 1.875 the default is to use alloca() - * if possible, so there's not really much problem anyhow, at least if - * you're building with gcc. + * memory leaks if we error out during parsing. */ #define YYMALLOC palloc #define YYFREE pfree diff --git a/src/backend/replication/syncrep_gram.y b/src/backend/replication/syncrep_gram.y index d932f2cda3..bbdf20acc2 100644 --- a/src/backend/replication/syncrep_gram.y +++ b/src/backend/replication/syncrep_gram.y @@ -26,10 +26,7 @@ static SyncRepConfigData *create_syncrep_config(const char *num_sync, /* * Bison doesn't allocate anything that needs to live across parser calls, * so we can easily have it use palloc instead of malloc. This prevents - * memory leaks if we error out during parsing. Note this only works with - * bison >= 2.0. However, in bison 1.875 the default is to use alloca() - * if possible, so there's not really much problem anyhow, at least if - * you're building with gcc. + * memory leaks if we error out during parsing. */ #define YYMALLOC palloc #define YYFREE pfree diff --git a/src/backend/utils/adt/jsonpath_gram.y b/src/backend/utils/adt/jsonpath_gram.y index f903dba3e3..5d81aefddc 100644 --- a/src/backend/utils/adt/jsonpath_gram.y +++ b/src/backend/utils/adt/jsonpath_gram.y @@ -60,10 +60,7 @@ static JsonPathParseItem *makeItemLikeRegex(JsonPathParseItem *expr, /* * Bison doesn't allocate anything that needs to live across parser calls, * so we can easily have it use palloc instead of malloc. This prevents - * memory leaks if we error out during parsing. Note this only works with - * bison >= 2.0. However, in bison 1.875 the default is to use alloca() - * if possible, so there's not really much problem anyhow, at least if - * you're building with gcc. + * memory leaks if we error out during parsing. */ #define YYMALLOC palloc #define YYFREE pfree diff --git a/src/pl/plpgsql/src/pl_gram.y b/src/pl/plpgsql/src/pl_gram.y index 0b8aea9504..f7cf2b4b89 100644 --- a/src/pl/plpgsql/src/pl_gram.y +++ b/src/pl/plpgsql/src/pl_gram.y @@ -39,10 +39,7 @@ /* * Bison doesn't allocate anything that needs to live across parser calls, * so we can easily have it use palloc instead of malloc. This prevents - * memory leaks if we error out during parsing. Note this only works with - * bison >= 2.0. However, in bison 1.875 the default is to use alloca() - * if possible, so there's not really much problem anyhow, at least if - * you're building with gcc. + * memory leaks if we error out during parsing. */ #define YYMALLOC palloc #define YYFREE pfree diff --git a/src/tools/msvc/pgbison.pl b/src/tools/msvc/pgbison.pl index 3974c30d96..60935adbaa 100644 --- a/src/tools/msvc/pgbison.pl +++ b/src/tools/msvc/pgbison.pl @@ -16,7 +16,7 @@ do './src/tools/msvc/buildenv.pl' if -e 'src/tools/msvc/buildenv.pl'; my ($bisonver) = `bison -V`; # grab first line $bisonver = (split(/\s+/, $bisonver))[3]; # grab version number -unless ($bisonver eq '1.875' || $bisonver ge '2.2') +unless ($bisonver ge '2.3') { print "WARNING! Bison install not found, or unsupported Bison version.\n"; print "echo Attempting to build without.\n"; -- 2.36.1