Remove deprecation warnings when compiling PG ~13 with OpenSSL 3.0~

Michael Paquier <michael@paquier.xyz>

From: Michael Paquier <michael@paquier.xyz>
To: Postgres hackers <pgsql-hackers@lists.postgresql.org>
Cc: Daniel Gustafsson <daniel@yesql.se>
Date: 2023-06-21T02:53:44Z
Lists: pgsql-hackers

Attachments

Hi all,
(adding Daniel in CC.)

Compiling Postgres up to 13 with OpenSSL 3.0 leads to a couple of
compilation warnings with what OpenSSL considers as deprecated, like:
sha2_openssl.c: In function pg_sha384_init
sha2_openssl.c:70:9: warning: SHA384_Init is deprecated =
Since OpenSSL 3.0 [-Wdeprecated-declarations]
   70 |         SHA384_Init((SHA512_CTX *) ctx);
      |         ^~~~~~~~~~~
/usr/include/openssl/sha.h:119:27: note: declared here
  119 | OSSL_DEPRECATEDIN_3_0 int SHA384_Init(SHA512_CTX *c);

I was looking at the code of OpenSSL to see if there would be a way to
silenced these, and found about OPENSSL_SUPPRESS_DEPRECATED.

I have been annoyed by these in the past when doing backpatches, as
this creates some noise, and the only place where this counts is
sha2_openssl.c.  Thoughts about doing something like the attached for
~13?
--
Michael

Commits

  1. Define OPENSSL_API_COMPAT

  2. Remove support for OpenSSL versions older than 0.9.8.