diff options
author | Damien Diederen <dd@crosstwine.com> | 2021-02-17 20:20:38 +0100 |
---|---|---|
committer | Enrico Olivelli <eolivelli@datastax.com> | 2021-02-17 20:20:38 +0100 |
commit | 58b4c10be5e6b992caac3b99a506e1d61bdec24d (patch) | |
tree | e087f93f43160b192d1bce517e49515bd6cf604a /zookeeper-client | |
parent | d8ff555339b054fbcf6ea6767357e8bf8c7af2c5 (diff) | |
download | zookeeper-58b4c10be5e6b992caac3b99a506e1d61bdec24d.tar.gz |
ZOOKEEPER-4201: C client: Disable SASL deprecation warnings on macOS
This patch works around the numerous deprecation notices added to the CyrusSASL library on macOS. It is a direct "port" of the solution to MESOS-3030, which hit exactly the same problem:
https://issues.apache.org/jira/browse/MESOS-3030
https://reviews.apache.org/r/39230/diff/3/
The PR also includes a fix for the the `clockid_t` compilation issue mentioned in the ticket description, but the test suite as a whole remains broken on macOS as its linker does not support the `--wrap` option.
Author: Damien Diederen <dd@crosstwine.com>
Reviewers: Enrico Olivelli <eolivelli@apache.org>, Mate Szalay-Beko <symat@apache.org>
Closes #1593 from ztzg/ZOOKEEPER-4201-catalina-c-client-fixes
Diffstat (limited to 'zookeeper-client')
4 files changed, 46 insertions, 0 deletions
diff --git a/zookeeper-client/zookeeper-client-c/src/cli.c b/zookeeper-client/zookeeper-client-c/src/cli.c index 1864e5645..823ed72a5 100644 --- a/zookeeper-client/zookeeper-client-c/src/cli.c +++ b/zookeeper-client/zookeeper-client-c/src/cli.c @@ -948,6 +948,17 @@ int main(int argc, char **argv) { zoo_deterministic_conn_order(1); // enable deterministic order #ifdef HAVE_CYRUS_SASL_H + /* + * We need to disable the deprecation warnings as Apple has + * decided to deprecate all of CyrusSASL's functions with OS 10.11 + * (see MESOS-3030, ZOOKEEPER-4201). We are using GCC pragmas also + * for covering clang. + */ +#ifdef __APPLE__ +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wdeprecated-declarations" +#endif + if (mechlist) { zoo_sasl_params_t sasl_params = { 0 }; int sr; @@ -977,6 +988,11 @@ int main(int argc, char **argv) { return errno; } } + +#ifdef __APPLE__ +#pragma GCC diagnostic pop +#endif + #endif /* HAVE_CYRUS_SASL_H */ if (!zh) { diff --git a/zookeeper-client/zookeeper-client-c/src/zk_sasl.c b/zookeeper-client/zookeeper-client-c/src/zk_sasl.c index e0ccfb310..6ae7e1237 100644 --- a/zookeeper-client/zookeeper-client-c/src/zk_sasl.c +++ b/zookeeper-client/zookeeper-client-c/src/zk_sasl.c @@ -48,6 +48,17 @@ #include "zookeeper_log.h" /* + * We need to disable the deprecation warnings as Apple has decided to + * deprecate all of CyrusSASL's functions with OS 10.11 (see + * MESOS-3030, ZOOKEEPER-4201). We are using GCC pragmas also for + * covering clang. + */ +#ifdef __APPLE__ +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wdeprecated-declarations" +#endif + +/* * Store a duplicate of src, or NULL, into *target. Returns * ZSYSTEMERROR if no memory could be allocated, ZOK otherwise. */ @@ -539,3 +550,7 @@ sasl_callback_t *zoo_sasl_make_basic_callbacks(const char *user, return xcallbacks; } } + +#ifdef __APPLE__ +#pragma GCC diagnostic pop +#endif diff --git a/zookeeper-client/zookeeper-client-c/tests/LibCSymTable.h b/zookeeper-client/zookeeper-client-c/tests/LibCSymTable.h index 1b6f9db99..08028abca 100644 --- a/zookeeper-client/zookeeper-client-c/tests/LibCSymTable.h +++ b/zookeeper-client/zookeeper-client-c/tests/LibCSymTable.h @@ -26,6 +26,7 @@ #include <dlfcn.h> #include <cassert> #include <poll.h> +#include <time.h> #include <unistd.h> // needed for _POSIX_MONOTONIC_CLOCK #ifdef THREADED diff --git a/zookeeper-client/zookeeper-client-c/tests/TestSASLAuth.cc b/zookeeper-client/zookeeper-client-c/tests/TestSASLAuth.cc index e6aa4cb3d..c98d4bffc 100644 --- a/zookeeper-client/zookeeper-client-c/tests/TestSASLAuth.cc +++ b/zookeeper-client/zookeeper-client-c/tests/TestSASLAuth.cc @@ -130,6 +130,16 @@ public: } #ifdef HAVE_CYRUS_SASL_H + + // We need to disable the deprecation warnings as Apple has + // decided to deprecate all of CyrusSASL's functions with OS 10.11 + // (see MESOS-3030, ZOOKEEPER-4201). We are using GCC pragmas also + // for covering clang. +#ifdef __APPLE__ +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wdeprecated-declarations" +#endif + void testClientSASLHelper(const char *hostPorts, const char *path) { startServer(); @@ -260,6 +270,10 @@ public: stopServer(); } +#ifdef __APPLE__ +#pragma GCC diagnostic pop +#endif + #endif /* HAVE_CYRUS_SASL_H */ }; |