summaryrefslogtreecommitdiff
path: root/zookeeper-client
diff options
context:
space:
mode:
authorDamien Diederen <dd@crosstwine.com>2021-02-17 20:20:38 +0100
committerEnrico Olivelli <eolivelli@datastax.com>2021-02-17 20:20:38 +0100
commit58b4c10be5e6b992caac3b99a506e1d61bdec24d (patch)
treee087f93f43160b192d1bce517e49515bd6cf604a /zookeeper-client
parentd8ff555339b054fbcf6ea6767357e8bf8c7af2c5 (diff)
downloadzookeeper-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')
-rw-r--r--zookeeper-client/zookeeper-client-c/src/cli.c16
-rw-r--r--zookeeper-client/zookeeper-client-c/src/zk_sasl.c15
-rw-r--r--zookeeper-client/zookeeper-client-c/tests/LibCSymTable.h1
-rw-r--r--zookeeper-client/zookeeper-client-c/tests/TestSASLAuth.cc14
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 */
};