From 479b69a4a551465614042bba00694001273d702f Mon Sep 17 00:00:00 2001 From: Tom Lane Date: Fri, 1 Apr 2022 11:05:52 -0400 Subject: [PATCH] Set minimum required version of zstd as 1.4.0. It emerges that our new zstd code depends on features that were not present (or at least not enabled by default) in zstd before 1.4.0. That's already four years old, so there's little reason to try to make our code work with something older. Instead make configure check that zstd is at least 1.4.0, and document this requirement. Justin Pryzby (doc changes by me) Discussion: https://postgr.es/m/efbd94cd1102f99fd1300e44905ee4a994ee2ef6.camel@gunduz.org --- configure | 22 +++++++++++----------- configure.ac | 2 +- doc/src/sgml/installation.sgml | 7 ++++--- 3 files changed, 16 insertions(+), 15 deletions(-) diff --git a/configure b/configure index c5e2769701..a4b654ad94 100755 --- a/configure +++ b/configure @@ -9092,19 +9092,19 @@ $as_echo "$with_zstd" >&6; } if test "$with_zstd" = yes; then pkg_failed=no -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for libzstd" >&5 -$as_echo_n "checking for libzstd... " >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for libzstd >= 1.4.0" >&5 +$as_echo_n "checking for libzstd >= 1.4.0... " >&6; } if test -n "$ZSTD_CFLAGS"; then pkg_cv_ZSTD_CFLAGS="$ZSTD_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ - { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libzstd\""; } >&5 - ($PKG_CONFIG --exists --print-errors "libzstd") 2>&5 + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libzstd >= 1.4.0\""; } >&5 + ($PKG_CONFIG --exists --print-errors "libzstd >= 1.4.0") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then - pkg_cv_ZSTD_CFLAGS=`$PKG_CONFIG --cflags "libzstd" 2>/dev/null` + pkg_cv_ZSTD_CFLAGS=`$PKG_CONFIG --cflags "libzstd >= 1.4.0" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes @@ -9116,12 +9116,12 @@ if test -n "$ZSTD_LIBS"; then pkg_cv_ZSTD_LIBS="$ZSTD_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ - { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libzstd\""; } >&5 - ($PKG_CONFIG --exists --print-errors "libzstd") 2>&5 + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libzstd >= 1.4.0\""; } >&5 + ($PKG_CONFIG --exists --print-errors "libzstd >= 1.4.0") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then - pkg_cv_ZSTD_LIBS=`$PKG_CONFIG --libs "libzstd" 2>/dev/null` + pkg_cv_ZSTD_LIBS=`$PKG_CONFIG --libs "libzstd >= 1.4.0" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes @@ -9142,14 +9142,14 @@ else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then - ZSTD_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "libzstd" 2>&1` + ZSTD_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "libzstd >= 1.4.0" 2>&1` else - ZSTD_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "libzstd" 2>&1` + ZSTD_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "libzstd >= 1.4.0" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$ZSTD_PKG_ERRORS" >&5 - as_fn_error $? "Package requirements (libzstd) were not met: + as_fn_error $? "Package requirements (libzstd >= 1.4.0) were not met: $ZSTD_PKG_ERRORS diff --git a/configure.ac b/configure.ac index 6a48982c23..44d35e1b5a 100644 --- a/configure.ac +++ b/configure.ac @@ -1073,7 +1073,7 @@ AC_MSG_RESULT([$with_zstd]) AC_SUBST(with_zstd) if test "$with_zstd" = yes; then - PKG_CHECK_MODULES(ZSTD, libzstd) + PKG_CHECK_MODULES(ZSTD, libzstd >= 1.4.0) # We only care about -I, -D, and -L switches; # note that -lzstd will be added by AC_CHECK_LIB below. for pgac_option in $ZSTD_CFLAGS; do diff --git a/doc/src/sgml/installation.sgml b/doc/src/sgml/installation.sgml index dcd1e772c6..df32025a86 100644 --- a/doc/src/sgml/installation.sgml +++ b/doc/src/sgml/installation.sgml @@ -250,7 +250,7 @@ su - postgres encrypted client connections. OpenSSL is also required for random number generation on platforms that do not have /dev/urandom (except Windows). The minimum - version required is 1.0.1. + required version is 1.0.1. @@ -265,7 +265,7 @@ su - postgres You need LZ4, if you want to support - compression of data with this method; see + compression of data with that method; see and . @@ -274,8 +274,9 @@ su - postgres You need zstd, if you want to support - compression of data with this method; see + compression of data with that method; see . + The minimum required version is 1.4.0. -- 2.39.5