Define OPENSSL_API_COMPAT
authorPeter Eisentraut <peter@eisentraut.org>
Sun, 19 Jul 2020 10:14:42 +0000 (12:14 +0200)
committerPeter Eisentraut <peter@eisentraut.org>
Sun, 19 Jul 2020 10:14:42 +0000 (12:14 +0200)
This avoids deprecation warnings from newer OpenSSL versions (3.0.0 in
particular).

Discussion: https://www.postgresql.org/message-id/flat/FEF81714-D479-4512-839B-C769D2605F8A%40yesql.se

configure
configure.in
src/include/pg_config.h.in
src/tools/msvc/Solution.pm

index 9907637e3176ed9a56f541d8c3be65be8ebb8f3e..cb8fbe1051144d14ac7a0fd6904be1bb36f5c021 100755 (executable)
--- a/configure
+++ b/configure
 fi
 
 if test "$with_openssl" = yes ; then
-    if test "$PORTNAME" != "win32"; then
+    # Minimum required OpenSSL version is 1.0.1
+
+$as_echo "#define OPENSSL_API_COMPAT 0x10001000L" >>confdefs.h
+
+  if test "$PORTNAME" != "win32"; then
      { $as_echo "$as_me:${as_lineno-$LINENO}: checking for CRYPTO_new_ex_data in -lcrypto" >&5
 $as_echo_n "checking for CRYPTO_new_ex_data in -lcrypto... " >&6; }
 if ${ac_cv_lib_crypto_CRYPTO_new_ex_data+:} false; then :
index 2e05ce2e4d69915dcdbe6b9da9e6f2439f7a2510..e91e49a579ee9f84da3894f2dc94b8b6a8881af1 100644 (file)
@@ -1206,6 +1206,9 @@ fi
 
 if test "$with_openssl" = yes ; then
   dnl Order matters!
+  # Minimum required OpenSSL version is 1.0.1
+  AC_DEFINE(OPENSSL_API_COMPAT, [0x10001000L],
+            [Define to the OpenSSL API version in use. This avoids deprecation warnings from newer OpenSSL versions.])
   if test "$PORTNAME" != "win32"; then
      AC_CHECK_LIB(crypto, CRYPTO_new_ex_data, [], [AC_MSG_ERROR([library 'crypto' is required for OpenSSL])])
      AC_CHECK_LIB(ssl,    SSL_new, [], [AC_MSG_ERROR([library 'ssl' is required for OpenSSL])])
index c199cd46d2da3da235577a6a966e7f3a42fb6f49..73aa61816694286fe405e73c06b4877ddbbd635f 100644 (file)
 /* Define bytes to use libc memset(). */
 #undef MEMSET_LOOP_LIMIT
 
+/* Define to the OpenSSL API version in use. This avoids deprecation warnings
+   from newer OpenSSL versions. */
+#undef OPENSSL_API_COMPAT
+
 /* Define to the address where bug reports for this package should be sent. */
 #undef PACKAGE_BUGREPORT
 
index a13ca6e02e8faa40dd85366ed7eb04d1f2a1b6c7..023da623826fc4dc5d1848673fe22698a5dc8523 100644 (file)
@@ -152,6 +152,8 @@ sub GenerateFiles
        my $package_bugreport;
        my $package_url;
        my ($majorver, $minorver);
+       my $ac_define_openssl_api_compat_found = 0;
+       my $openssl_api_compat;
 
        # Parse configure.in to get version numbers
        open(my $c, '<', "configure.in")
@@ -176,10 +178,15 @@ sub GenerateFiles
                        $majorver = sprintf("%d", $1);
                        $minorver = sprintf("%d", $2 ? $2 : 0);
                }
+               elsif (/\bAC_DEFINE\(OPENSSL_API_COMPAT, \[([0-9xL]+)\]/)
+               {
+                       $ac_define_openssl_api_compat_found = 1;
+                       $openssl_api_compat = $1;
+               }
        }
        close($c);
        confess "Unable to parse configure.in for all variables!"
-         unless $ac_init_found;
+         unless $ac_init_found && $ac_define_openssl_api_compat_found;
 
        if (IsNewer("src/include/pg_config_os.h", "src/include/port/win32.h"))
        {
@@ -433,6 +440,7 @@ sub GenerateFiles
                LOCALE_T_IN_XLOCALE                      => undef,
                MAXIMUM_ALIGNOF                          => 8,
                MEMSET_LOOP_LIMIT                        => 1024,
+               OPENSSL_API_COMPAT                       => $openssl_api_compat,
                PACKAGE_BUGREPORT                        => qq{"$package_bugreport"},
                PACKAGE_NAME                             => qq{"$package_name"},
                PACKAGE_STRING      => qq{"$package_name $package_version"},