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

wangdan pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-pegasus.git


The following commit(s) were added to refs/heads/master by this push:
     new b4ec7cfd4 fix(build): fix build failure on MacOS (#1049)
b4ec7cfd4 is described below

commit b4ec7cfd4335f00b1101d703b06d0dbe328113cf
Author: Yingchun Lai <[email protected]>
AuthorDate: Mon Jul 18 11:51:04 2022 +0800

    fix(build): fix build failure on MacOS (#1049)
---
 .licenserc.yaml                                    |  1 +
 .../src/block_service/directio_writable_file.cpp   |  5 +-
 src/rdsn/src/meta/CMakeLists.txt                   |  1 +
 .../test/nth_element_bench/nth_element_bench.cpp   |  4 +-
 thirdparty/CMakeLists.txt                          | 68 +++++++++++++---------
 thirdparty/fix_libevent_for_macos.patch            | 39 +++++++++++++
 6 files changed, 87 insertions(+), 31 deletions(-)

diff --git a/.licenserc.yaml b/.licenserc.yaml
index 43adfafc2..3a1dd9e2f 100644
--- a/.licenserc.yaml
+++ b/.licenserc.yaml
@@ -84,6 +84,7 @@ header:
     - 'src/rdsn/src/nfs/test/nfs_test_file2'
     - 'src/rdsn/src/runtime/test/gtest.filter'
     - 'thirdparty/fix_fds_for_macos.patch'
+    - 'thirdparty/fix_libevent_for_macos.patch'
     - 'thirdparty/fix_s2_for_aarch64.patch'
     - 'thirdparty/fix_thrift_for_cpp11.patch'
     # should be empty, or ignore all comment lines
diff --git a/src/rdsn/src/block_service/directio_writable_file.cpp 
b/src/rdsn/src/block_service/directio_writable_file.cpp
index c0cf6e6b6..15544cc82 100644
--- a/src/rdsn/src/block_service/directio_writable_file.cpp
+++ b/src/rdsn/src/block_service/directio_writable_file.cpp
@@ -76,7 +76,10 @@ bool direct_io_writable_file::initialize()
         return false;
     }
 
-    int flag = O_WRONLY | O_TRUNC | O_CREAT | O_DIRECT;
+    int flag = O_WRONLY | O_TRUNC | O_CREAT;
+#if !defined(__APPLE__)
+    flag |= O_DIRECT;
+#endif
     _fd = open(_file_path.c_str(), flag, S_IRUSR | S_IWUSR | S_IRGRP);
     if (_fd < 0) {
         derror_f("Failed to open {} with flag {}, errno = {}", _file_path, 
flag, errno);
diff --git a/src/rdsn/src/meta/CMakeLists.txt b/src/rdsn/src/meta/CMakeLists.txt
index 9f9197ac5..ae6f1bb33 100644
--- a/src/rdsn/src/meta/CMakeLists.txt
+++ b/src/rdsn/src/meta/CMakeLists.txt
@@ -28,6 +28,7 @@ set(MY_PROJ_LIBS
     PocoNetSSL
     PocoJSON
     crypto
+    hashtable
     hdfs
     )
 
diff --git a/src/rdsn/src/utils/test/nth_element_bench/nth_element_bench.cpp 
b/src/rdsn/src/utils/test/nth_element_bench/nth_element_bench.cpp
index c1c5a2382..6a2b15444 100644
--- a/src/rdsn/src/utils/test/nth_element_bench/nth_element_bench.cpp
+++ b/src/rdsn/src/utils/test/nth_element_bench/nth_element_bench.cpp
@@ -205,7 +205,7 @@ int main(int argc, char **argv)
         std::vector<std::string> nth_strs;
         dsn::utils::split_args(argv[4], nth_strs, ',');
         for (const auto &s : nth_strs) {
-            size_t nth;
+            uint64_t nth;
             if (!dsn::buf2uint64(s, nth)) {
                 fmt::print(stderr, "Invalid nth number: {}\n\n", s);
 
@@ -224,7 +224,7 @@ int main(int argc, char **argv)
         }
     }
 
-    run_bench(num_operations, array_size, range_size, nths);
+    run_bench(num_operations, static_cast<size_t>(array_size), range_size, 
nths);
 
     return 0;
 }
diff --git a/thirdparty/CMakeLists.txt b/thirdparty/CMakeLists.txt
index a02b005bd..1d153f82f 100644
--- a/thirdparty/CMakeLists.txt
+++ b/thirdparty/CMakeLists.txt
@@ -159,43 +159,52 @@ ExternalProject_Add(thrift
         DEPENDS boost
         )
 
-# kerberos
-ExternalProject_Add(krb5
-        URL ${OSS_URL_PREFIX}/krb5-1.16.1.tar.gz
-        http://web.mit.edu/kerberos/dist/krb5/1.16/krb5-1.16.1.tar.gz
-        URL_MD5 848e9b80d6aaaa798e3f3df24b83c407
-        CONFIGURE_COMMAND cd src && ./configure --prefix=${TP_OUTPUT}
-        BUILD_COMMAND cd src && make
-        INSTALL_COMMAND cd src && make install
-        BUILD_IN_SOURCE 1
-        )
-
-# cyrus-sasl
-ExternalProject_Add(cyrus-sasl
-        URL ${OSS_URL_PREFIX}/cyrus-sasl-2.1.27.tar.gz
-        http://www.cyrusimap.org/releases/cyrus-sasl-2.1.27.tar.gz
-        URL_MD5 a33820c66e0622222c5aefafa1581083
-        CONFIGURE_COMMAND ./configure --prefix=${TP_OUTPUT}
-        --enable-gssapi=${TP_OUTPUT}
-        --enable-scram=no
-        --enable-digest=no
-        --enable-cram=no
-        --enable-otp=no
-        BUILD_COMMAND make
-        INSTALL_COMMAND make install
-        BUILD_IN_SOURCE 1
-        )
+if (NOT APPLE)
+    # kerberos
+    ExternalProject_Add(krb5
+            URL ${OSS_URL_PREFIX}/krb5-1.16.1.tar.gz
+            http://web.mit.edu/kerberos/dist/krb5/1.16/krb5-1.16.1.tar.gz
+            URL_MD5 848e9b80d6aaaa798e3f3df24b83c407
+            CONFIGURE_COMMAND cd src && ./configure --prefix=${TP_OUTPUT}
+            BUILD_COMMAND cd src && make
+            INSTALL_COMMAND cd src && make install
+            BUILD_IN_SOURCE 1
+            )
+
+    # cyrus-sasl
+    ExternalProject_Add(cyrus-sasl
+            URL ${OSS_URL_PREFIX}/cyrus-sasl-2.1.27.tar.gz
+            http://www.cyrusimap.org/releases/cyrus-sasl-2.1.27.tar.gz
+            URL_MD5 a33820c66e0622222c5aefafa1581083
+            CONFIGURE_COMMAND ./configure --prefix=${TP_OUTPUT}
+            --enable-gssapi=${TP_OUTPUT}
+            --enable-scram=no
+            --enable-digest=no
+            --enable-cram=no
+            --enable-otp=no
+            BUILD_COMMAND make
+            INSTALL_COMMAND make install
+            BUILD_IN_SOURCE 1
+            )
+endif()
 
 check_cxx_compiler_flag(-Wformat-overflow COMPILER_SUPPORTS_FORMAT_OVERFLOW)
 if (COMPILER_SUPPORTS_FORMAT_OVERFLOW)
     set(ZOOKEEPER_CFLAGS -Wno-error=format-overflow)
 endif ()
+
+if (NOT APPLE)
+    set(ZOOKEEPER_WITH_CYRUS_SASL ${TP_OUTPUT})
+else ()
+    set(ZOOKEEPER_WITH_CYRUS_SASL /usr/local/opt/cyrus-sasl/lib)
+endif ()
+
 ExternalProject_Add(zookeeper
         URL ${OSS_URL_PREFIX}/apache-zookeeper-3.7.0.tar.gz
         
http://downloads.apache.org/zookeeper/zookeeper-3.7.0/apache-zookeeper-3.7.0.tar.gz
         URL_MD5 44c2a33e01931aed94ef7f3d39d0963e
         PATCH_COMMAND ""
-        COMMAND cd zookeeper-jute && mvn compile && cd 
../zookeeper-client/zookeeper-client-c && cmake -DCMAKE_BUILD_TYPE=release 
-DWANT_CPPUNIT=OFF -WITH_OPENSSL=OFF -DWITH_CYRUS_SASL=${TP_OUTPUT} 
-DCMAKE_INSTALL_PREFIX=${TP_OUTPUT}
+        COMMAND cd zookeeper-jute && mvn compile && cd 
../zookeeper-client/zookeeper-client-c && cmake -DCMAKE_BUILD_TYPE=release 
-DWANT_CPPUNIT=OFF -DWITH_OPENSSL=OFF 
-DWITH_CYRUS_SASL=${ZOOKEEPER_WITH_CYRUS_SASL} 
-DCMAKE_INSTALL_PREFIX=${TP_OUTPUT}
         COMMAND cd zookeeper-client/zookeeper-client-c && make
         COMMAND cp -R zookeeper-client/zookeeper-client-c/include/. 
${TP_OUTPUT}/include/zookeeper && cp 
zookeeper-client/zookeeper-client-c/generated/zookeeper.jute.h 
${TP_OUTPUT}/include/zookeeper && cp 
zookeeper-client/zookeeper-client-c/libzookeeper.a ${TP_OUTPUT}/lib && cp 
zookeeper-client/zookeeper-client-c/libhashtable.a ${TP_OUTPUT}/lib
         CONFIGURE_COMMAND ""
@@ -203,12 +212,15 @@ ExternalProject_Add(zookeeper
         INSTALL_COMMAND ""
         BUILD_IN_SOURCE 1
         )
-add_dependencies(zookeeper cyrus-sasl krb5)
+if (NOT APPLE)
+    add_dependencies(zookeeper cyrus-sasl krb5)
+endif ()
 
 ExternalProject_Add(libevent
         URL ${OSS_URL_PREFIX}/libevent-release-2.1.8-stable.tar.gz
         
https://github.com/libevent/libevent/archive/release-2.1.8-stable.tar.gz
         URL_MD5 80f8652e4b08d2ec86a5f5eb46b74510
+        PATCH_COMMAND patch -p1 < ${TP_DIR}/fix_libevent_for_macos.patch
         CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${TP_OUTPUT}
         -DEVENT__DISABLE_DEBUG_MODE=On
         -DCMAKE_POSITION_INDEPENDENT_CODE=ON
diff --git a/thirdparty/fix_libevent_for_macos.patch 
b/thirdparty/fix_libevent_for_macos.patch
new file mode 100644
index 000000000..b0e8dbc29
--- /dev/null
+++ b/thirdparty/fix_libevent_for_macos.patch
@@ -0,0 +1,39 @@
+diff --git a/cmake/VersionViaGit.cmake b/cmake/VersionViaGit.cmake
+index a9882d8a..043458d0 100644
+--- a/cmake/VersionViaGit.cmake
++++ b/cmake/VersionViaGit.cmake
+@@ -19,8 +19,6 @@
+ #    message("        stage=${EVENT_GIT___VERSION_STAGE}")
+ # endif()
+ 
+-include(FindGit)
+-
+ macro(event_fuzzy_version_from_git)
+       set(EVENT_GIT___VERSION_FOUND FALSE)
+ 
+@@ -29,25 +27,4 @@ macro(event_fuzzy_version_from_git)
+       set(EVENT_GIT___VERSION_MINOR 1)
+       set(EVENT_GIT___VERSION_PATCH 8)
+       set(EVENT_GIT___VERSION_STAGE "beta")
+-
+-      find_package(Git)
+-
+-      if (GIT_FOUND)
+-              execute_process(
+-                      COMMAND
+-                              ${GIT_EXECUTABLE} describe --abbrev=0
+-                      WORKING_DIRECTORY
+-                              ${PROJECT_SOURCE_DIR}
+-                      RESULT_VARIABLE
+-                              GITRET
+-                      OUTPUT_VARIABLE
+-                              GITVERSION)
+-
+-                      if (GITRET EQUAL 0)
+-                              string(REGEX REPLACE 
"^release-([0-9]+)\\.([0-9]+)\\.([0-9]+)-(.*)"       "\\1" 
EVENT_GIT___VERSION_MAJOR ${GITVERSION})
+-                              string(REGEX REPLACE 
"^release-([0-9]+)\\.([0-9]+)\\.([0-9]+)-(.*)"       "\\2" 
EVENT_GIT___VERSION_MINOR ${GITVERSION})
+-                              string(REGEX REPLACE 
"^release-([0-9]+)\\.([0-9]+)\\.([0-9]+)-(.*)"       "\\3" 
EVENT_GIT___VERSION_PATCH ${GITVERSION})
+-                              string(REGEX REPLACE 
"^release-([0-9]+)\\.([0-9]+)\\.([0-9]+)-([aA-zZ]+)" "\\4" 
EVENT_GIT___VERSION_STAGE ${GITVERSION})
+-                      endif()
+-              endif()
+ endmacro()


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

Reply via email to