This is an automated email from the ASF dual-hosted git repository.

leborchuk pushed a commit to branch REL_2_STABLE
in repository https://gitbox.apache.org/repos/asf/cloudberry.git

commit 8ea847c79b85ea088d172ffbc6250d95e9600dfb
Author: Dianjin Wang <[email protected]>
AuthorDate: Wed Sep 9 10:54:32 2026 +0800

    Fix OPENSSL_API_COMPAT redefinition warning in gpcloud
    
    s3conf.cpp includes the OpenSSL headers through s3common_headers.h before
    it includes c.h, so pg_config.h redefines OPENSSL_API_COMPAT with a
    different value than the one OpenSSL already settled on. On Rocky 8
    (gcc 8, OpenSSL 1.1.1) every build of the module prints:
    
      In file included from ../../src/include/c.h:56,
                       from src/s3conf.cpp:16:
      ../../src/include/pg_config.h:904: warning: "OPENSSL_API_COMPAT" redefined
       #define OPENSSL_API_COMPAT 0x10001000L
      In file included from /usr/include/openssl/opensslconf.h:42,
                       from /usr/include/openssl/hmac.h:13,
                       from include/s3common_headers.h:8,
                       from include/gpcommon.h:4,
                       from include/s3conf.h:4,
                       from src/s3conf.cpp:1:
      /usr/include/openssl/opensslconf-x86_64.h:145: note: this is the location 
of the previous definition
       # define OPENSSL_API_COMPAT OPENSSL_MIN_API
    
    Undefine it before including c.h. By then the OpenSSL headers are fully
    parsed, so the macro no longer affects anything and behaviour is
    unchanged -- only the warning goes away. Reordering the includes so that
    c.h comes first would also work, but it would move the extern "C" block
    ahead of the C++ standard headers pulled in by s3common_headers.h.
    
    gpcloud.cpp is the only other file in the module that includes a
    PostgreSQL header, and it includes postgres.h on its first line, ahead
    of any OpenSSL header, so it does not have the problem.
    
    Assisted-by: Claude Code
    Backpatch-through: REL_2_STABLE
---
 gpcontrib/gpcloud/src/s3conf.cpp | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/gpcontrib/gpcloud/src/s3conf.cpp b/gpcontrib/gpcloud/src/s3conf.cpp
index 2bff0174236..1accb8fdba0 100644
--- a/gpcontrib/gpcloud/src/s3conf.cpp
+++ b/gpcontrib/gpcloud/src/s3conf.cpp
@@ -13,6 +13,10 @@ void write_log(const char* fmt, ...) 
__attribute__((format(printf, 1, 2)));
 // For GpIdentity
 #ifndef S3_STANDALONE
 extern "C" {
+// The OpenSSL headers included above (through s3common_headers.h) already
+// define OPENSSL_API_COMPAT, so drop it before pg_config.h defines its own
+// value to avoid a macro redefinition warning.
+#undef OPENSSL_API_COMPAT
 #include "c.h"
 #include "cdb/cdbvars.h"
 extern int getgpsegmentCount(void);


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to