Windows: Undefined `ACL` macro defined in Zookeeper headers. On Windows, Zookeeper will define a `ACL` macro because `Windows.h` defines a `struct ACL`, different from Zookeeper's `struct ACL`. Since this is a macro, it bleeds into other sources and ends up replacing odd bits of code, such as when we access our namespaced `ACL`s. i.e. `mesos::ACL::RunTask`.
This commit undefines the `ACL` macro after the inclusion of the Zookeeper headers in two places, while redefining the macro in the one source file where we use Zookeeper's `struct ACL`. Review: https://reviews.apache.org/r/56962 Project: http://git-wip-us.apache.org/repos/asf/mesos/repo Commit: http://git-wip-us.apache.org/repos/asf/mesos/commit/f0f0c2f3 Tree: http://git-wip-us.apache.org/repos/asf/mesos/tree/f0f0c2f3 Diff: http://git-wip-us.apache.org/repos/asf/mesos/diff/f0f0c2f3 Branch: refs/heads/master Commit: f0f0c2f32c722b55d42705ecd0fbeca191cb00b9 Parents: fb99cd0 Author: Joseph Wu <[email protected]> Authored: Wed Feb 22 17:12:54 2017 -0800 Committer: Joseph Wu <[email protected]> Committed: Thu Feb 23 14:28:42 2017 -0800 ---------------------------------------------------------------------- include/mesos/zookeeper/authentication.hpp | 7 +++++++ include/mesos/zookeeper/zookeeper.hpp | 7 +++++++ src/tests/api_tests.cpp | 8 ++++++-- src/zookeeper/authentication.cpp | 9 +++++++++ 4 files changed, 29 insertions(+), 2 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/mesos/blob/f0f0c2f3/include/mesos/zookeeper/authentication.hpp ---------------------------------------------------------------------- diff --git a/include/mesos/zookeeper/authentication.hpp b/include/mesos/zookeeper/authentication.hpp index 6a955ab..ac19f4e 100644 --- a/include/mesos/zookeeper/authentication.hpp +++ b/include/mesos/zookeeper/authentication.hpp @@ -19,6 +19,13 @@ #include <zookeeper.h> +#ifdef __WINDOWS__ +// NOTE: We need to undefine this macro to prevent it from bleeding +// into our code and thereby break compilation of our namespaced ACLs. +// This macro is defined in zookeeper/src/c/include/winconfig.h. +#undef ACL +#endif // __WINDOWS__ + #include <string> #include <glog/logging.h> http://git-wip-us.apache.org/repos/asf/mesos/blob/f0f0c2f3/include/mesos/zookeeper/zookeeper.hpp ---------------------------------------------------------------------- diff --git a/include/mesos/zookeeper/zookeeper.hpp b/include/mesos/zookeeper/zookeeper.hpp index d4723dd..3b922a4 100644 --- a/include/mesos/zookeeper/zookeeper.hpp +++ b/include/mesos/zookeeper/zookeeper.hpp @@ -28,6 +28,13 @@ #include <zookeeper.h> +#ifdef __WINDOWS__ +// NOTE: We need to undefine this macro to prevent it from bleeding +// into our code and thereby break compilation of our namespaced ACLs. +// This macro is defined in zookeeper/src/c/include/winconfig.h. +#undef ACL +#endif // __WINDOWS__ + #include <string> #include <vector> http://git-wip-us.apache.org/repos/asf/mesos/blob/f0f0c2f3/src/tests/api_tests.cpp ---------------------------------------------------------------------- diff --git a/src/tests/api_tests.cpp b/src/tests/api_tests.cpp index 378612d..24f31ff 100644 --- a/src/tests/api_tests.cpp +++ b/src/tests/api_tests.cpp @@ -4128,7 +4128,9 @@ TEST_P_TEMP_DISABLED_ON_WINDOWS(AgentAPITest, LaunchNestedContainerSession) // This tests verifies that unauthorized principals are unable to // launch nested container sessions. -TEST_P(AgentAPITest, LaunchNestedContainerSessionUnauthorized) +TEST_P_TEMP_DISABLED_ON_WINDOWS( + AgentAPITest, + LaunchNestedContainerSessionUnauthorized) { ContentType contentType = GetParam(); @@ -4645,7 +4647,9 @@ TEST_F(AgentAPITest, AttachContainerInputFailure) // Verifies that unauthorized users are not able to attach to a // nested container input. -TEST_P(AgentAPITest, AttachContainerInputAuthorization) +TEST_P_TEMP_DISABLED_ON_WINDOWS( + AgentAPITest, + AttachContainerInputAuthorization) { ContentType contentType = GetParam(); http://git-wip-us.apache.org/repos/asf/mesos/blob/f0f0c2f3/src/zookeeper/authentication.cpp ---------------------------------------------------------------------- diff --git a/src/zookeeper/authentication.cpp b/src/zookeeper/authentication.cpp index 0fd99b0..9fcb540 100644 --- a/src/zookeeper/authentication.cpp +++ b/src/zookeeper/authentication.cpp @@ -16,6 +16,15 @@ #include <mesos/zookeeper/authentication.hpp> +#ifdef __WINDOWS__ +// NOTE: We need to redefine this macro, normally defined in +// zookeeper/src/c/include/winconfig.h. Headers that include +// zookeeper.h typically need to undefine this macro to prevent +// it from bleeding into other sources. However, this file +// needs to use the Zookeeper ACL struct, rather than Mesos ACLs. +#define ACL ZKACL +#endif // __WINDOWS__ + namespace zookeeper { ACL _EVERYONE_READ_CREATOR_ALL_ACL[] = {
