You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@brpc.apache.org by zy...@apache.org on 2020/11/30 07:28:56 UTC

[incubator-brpc] branch fix_bazel_on_macos created (now 3feb6d0)

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

zychen pushed a change to branch fix_bazel_on_macos
in repository https://gitbox.apache.org/repos/asf/incubator-brpc.git.


      at 3feb6d0  Fix bazel build in macos

This branch includes the following new commits:

     new 3feb6d0  Fix bazel build in macos

The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.



---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@brpc.apache.org
For additional commands, e-mail: dev-help@brpc.apache.org


[incubator-brpc] 01/01: Fix bazel build in macos

Posted by zy...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

zychen pushed a commit to branch fix_bazel_on_macos
in repository https://gitbox.apache.org/repos/asf/incubator-brpc.git

commit 3feb6d0c2d980f196d6470f232abe2405941b702
Author: Zhangyi Chen <fr...@gmail.com>
AuthorDate: Mon Nov 30 15:26:41 2020 +0800

    Fix bazel build in macos
    
    testing on 11.0-bigsur
---
 .bazelrc                             |  3 +++
 BUILD                                | 14 +++++++-----
 WORKSPACE                            | 30 ++++++++++++++++++++++----
 openssl.BUILD                        | 41 ++++++++++++++++++++++++++++++++++++
 src/brpc/span.h                      |  2 +-
 src/bthread/key.cpp                  |  2 +-
 src/bthread/task_group.cpp           |  2 +-
 src/butil/find_cstr.cpp              |  2 +-
 src/butil/find_cstr.h                |  2 +-
 test/baidu_thread_local_unittest.cpp |  4 +++-
 test/bthread_futex_unittest.cpp      |  1 +
 test/file_util_unittest.cc           |  4 ++--
 12 files changed, 90 insertions(+), 17 deletions(-)

diff --git a/.bazelrc b/.bazelrc
index 659b47d..8ae4f0d 100644
--- a/.bazelrc
+++ b/.bazelrc
@@ -17,5 +17,8 @@ build --copt -DHAVE_ZLIB=1
 # bazel build with glog
 # build --define=with_glog=true
 build -c opt
+build --incompatible_disable_deprecated_attr_params=false
+build --incompatible_new_actions_api=false
 # unittest 
 test --define=unittest=true
+test --copt=-g
diff --git a/BUILD b/BUILD
index 9523f58..5482300 100644
--- a/BUILD
+++ b/BUILD
@@ -79,8 +79,8 @@ LINKOPTS = [
     "-lpthread",
     "-ldl",
     "-lz",
-    "-lssl",
-    "-lcrypto",
+    # "-lssl",
+    # "-lcrypto",
 ] + select({
     ":darwin": [
         "-framework CoreFoundation",
@@ -304,6 +304,7 @@ objc_library(
         "src/butil/threading/thread_restrictions.h",
         "src/butil/threading/thread_id_name_manager.h",
         "src/butil/type_traits.h",
+        "src/butil/third_party/murmurhash3/murmurhash3.h",
     ],
     non_arc_srcs = [
         "src/butil/mac/bundle_locations.mm",
@@ -332,8 +333,7 @@ cc_library(
         "src/butil/**/*.h",
         "src/butil/**/*.hpp",
         "src/butil/**/**/*.h",
-        "src/butil/**/**/*.hpp",
-        "src/butil/**/**/**/*.h",
+        "src/butil/**/**/*.hpp", "src/butil/**/**/**/*.h",
         "src/butil/**/**/**/*.hpp",
         "src/butil/third_party/dmg_fp/dtoa.cc",
     ]) + [":config_h"],
@@ -342,8 +342,13 @@ cc_library(
         "@com_github_gflags_gflags//:gflags",
     ] + select({
         ":with_glog": ["@com_github_google_glog//:glog"],
+        "//conditions:default": [],
+    }) + select({
         ":darwin": [":macos_lib"],
         "//conditions:default": [],
+    }) + select({
+        ":darwin": ["//external:ssl_macos"],
+        "//conditions:default": ["//external:ssl"],
     }),
     includes = [
         "src/",
@@ -532,4 +537,3 @@ cc_binary(
     linkopts = LINKOPTS,
     visibility = ["//visibility:public"],
 )
-
diff --git a/WORKSPACE b/WORKSPACE
index e8b03c9..1b5255a 100644
--- a/WORKSPACE
+++ b/WORKSPACE
@@ -34,18 +34,18 @@ http_archive(
   type = "zip",
   url = "https://github.com/protocolbuffers/protobuf/archive/v3.6.1.3.zip",
 )
-  
+
 http_archive(
     name = "com_github_gflags_gflags",
     strip_prefix = "gflags-46f73f88b18aee341538c0dfc22b1710a6abedef",
     url = "https://github.com/gflags/gflags/archive/46f73f88b18aee341538c0dfc22b1710a6abedef.tar.gz",
 )
- 
+
 bind(
     name = "gflags",
     actual = "@com_github_gflags_gflags//:gflags",
 )
-  
+
 http_archive(
     name = "com_github_google_leveldb",
     build_file = "//:leveldb.BUILD",
@@ -59,9 +59,31 @@ http_archive(
     strip_prefix = "glog-a6a166db069520dbbd653c97c2e5b12e08a8bb26",
     url = "https://github.com/google/glog/archive/a6a166db069520dbbd653c97c2e5b12e08a8bb26.tar.gz"
 )
-  
+
 http_archive(
     name = "com_google_googletest",
     strip_prefix = "googletest-0fe96607d85cf3a25ac40da369db62bbee2939a5",
     url = "https://github.com/google/googletest/archive/0fe96607d85cf3a25ac40da369db62bbee2939a5.tar.gz",
 )
+
+new_local_repository(
+    name = "openssl",
+    path = "/usr",
+    build_file = "//:openssl.BUILD",
+)
+
+new_local_repository(
+    name = "openssl_macos",
+    build_file = "//:openssl.BUILD",
+    path = "/usr/local/opt/openssl",
+)
+
+bind(
+    name = "ssl",
+    actual = "@openssl//:ssl"
+)
+
+bind(
+    name = "ssl_macos",
+    actual = "@openssl_macos//:ssl"
+)
diff --git a/openssl.BUILD b/openssl.BUILD
new file mode 100644
index 0000000..7b948e9
--- /dev/null
+++ b/openssl.BUILD
@@ -0,0 +1,41 @@
+package(
+    default_visibility=["//visibility:public"]
+)
+
+config_setting(
+    name = "macos",
+    values = {
+        "cpu": "darwin",
+    },
+    visibility = ["//visibility:private"],
+)
+
+cc_library(
+    name = "crypto",
+    srcs = select({
+        ":macos": ["lib/libcrypto.dylib"],
+        "//conditions:default": []
+    }),
+    linkopts = select({
+        ":macos" : [],
+        "//conditions:default": ["-lcrypto"],
+    }),
+)
+
+cc_library(
+    name = "ssl",
+    hdrs = select({
+        ":macos": glob(["include/openssl/*.h"]),
+        "//conditions:default": ["lib/libssl.so"]
+    }),
+    srcs = select ({
+        ":macos": ["lib/libssl.dylib"],
+        "//conditions:default": []
+    }),
+    includes = ["include"],
+    linkopts = select({
+        ":macos" : [],
+        "//conditions:default": ["-lssl"],
+    }),
+    deps = [":crypto"]
+)
diff --git a/src/brpc/span.h b/src/brpc/span.h
index 43ede3d..0777164 100644
--- a/src/brpc/span.h
+++ b/src/brpc/span.h
@@ -34,7 +34,7 @@
 #include "brpc/span.pb.h"
 
 namespace bthread {
-extern __thread bthread::LocalStorage tls_bls;
+extern thread_local bthread::LocalStorage tls_bls;
 }
 
 
diff --git a/src/bthread/key.cpp b/src/bthread/key.cpp
index a4a0840..53f7594 100644
--- a/src/bthread/key.cpp
+++ b/src/bthread/key.cpp
@@ -34,7 +34,7 @@ class KeyTable;
 
 // defined in task_group.cpp
 extern __thread TaskGroup* tls_task_group;
-extern __thread LocalStorage tls_bls;
+extern thread_local LocalStorage tls_bls;
 static __thread bool tls_ever_created_keytable = false;
 
 // We keep thread specific data in a two-level array. The top-level array
diff --git a/src/bthread/task_group.cpp b/src/bthread/task_group.cpp
index 1da6a25..7c41653 100644
--- a/src/bthread/task_group.cpp
+++ b/src/bthread/task_group.cpp
@@ -61,7 +61,7 @@ __thread TaskGroup* tls_task_group = NULL;
 // Sync with TaskMeta::local_storage when a bthread is created or destroyed.
 // During running, the two fields may be inconsistent, use tls_bls as the
 // groundtruth.
-__thread LocalStorage tls_bls = BTHREAD_LOCAL_STORAGE_INITIALIZER;
+thread_local LocalStorage tls_bls = BTHREAD_LOCAL_STORAGE_INITIALIZER;
 
 // defined in bthread/key.cpp
 extern void return_keytable(bthread_keytable_pool_t*, KeyTable*);
diff --git a/src/butil/find_cstr.cpp b/src/butil/find_cstr.cpp
index afa16b5..82b2db9 100644
--- a/src/butil/find_cstr.cpp
+++ b/src/butil/find_cstr.cpp
@@ -21,6 +21,6 @@
 
 namespace butil {
 
-__thread StringMapThreadLocalTemp tls_stringmap_temp = { false, {} };
+thread_local StringMapThreadLocalTemp tls_stringmap_temp = { false, {} };
 
 }  // namespace butil
diff --git a/src/butil/find_cstr.h b/src/butil/find_cstr.h
index 2a215a8..fd99713 100644
--- a/src/butil/find_cstr.h
+++ b/src/butil/find_cstr.h
@@ -95,7 +95,7 @@ struct StringMapThreadLocalTemp {
     }
 };
 
-extern __thread StringMapThreadLocalTemp tls_stringmap_temp;
+extern thread_local StringMapThreadLocalTemp tls_stringmap_temp;
 
 template <typename T, typename C, typename A>
 typename std::map<std::string, T, C, A>::const_iterator
diff --git a/test/baidu_thread_local_unittest.cpp b/test/baidu_thread_local_unittest.cpp
index a77abda..7ffe0f5 100644
--- a/test/baidu_thread_local_unittest.cpp
+++ b/test/baidu_thread_local_unittest.cpp
@@ -174,7 +174,9 @@ void fun4(void* arg) {
 }
 
 static void check_result() {
-    ASSERT_EQ("fun4(0)\nfun3(0x2)\nfun2\n", get_oss().str());
+  // Don't use gtest function since this function might be invoked when the main
+  // thread quits, instances required by gtest functions are likely destroyed.
+  assert (get_oss().str() == "fun4(0)\nfun3(0x2)\nfun2\n");
 }
 
 TEST_F(BaiduThreadLocalTest, call_order_and_cancel) {
diff --git a/test/bthread_futex_unittest.cpp b/test/bthread_futex_unittest.cpp
index 86e6bb3..0ed5685 100644
--- a/test/bthread_futex_unittest.cpp
+++ b/test/bthread_futex_unittest.cpp
@@ -135,6 +135,7 @@ TEST(FutexTest, futex_wake_many_waiters_perf) {
     printf("N=%lu, futex_wake a thread = %" PRId64 "ns\n", N, tm.n_elapsed() / N);
     ASSERT_EQ(N, (size_t)nwakeup);
 
+    sleep(2);
     const size_t REP = 10000;
     nwakeup = 0;
     tm.start();
diff --git a/test/file_util_unittest.cc b/test/file_util_unittest.cc
index 9882fae..a323a72 100644
--- a/test/file_util_unittest.cc
+++ b/test/file_util_unittest.cc
@@ -2131,12 +2131,12 @@ TEST_F(FileUtilTest, TouchFile) {
   // 784915200000000 represents the timestamp of "Wed, 16 Nov 1994, 00:00:00".
   // This timestamp is divisible by one day (in local timezone), to make it work
   // on FAT too.
-  Time access_time(784915200000000);
+  auto access_time = Time::FromUTCExploded({1994, 11, 4, 16, 0, 0, 0, 0});
 
   // 784903526000000 represents the timestamp of "Tue, 15 Nov 1994, 12:45:26 GMT".
   // Note that this timestamp is divisible by two (seconds) - FAT stores
   // modification times with 2s resolution.
-  Time modification_time(784903526000000);
+  auto modification_time = Time::FromUTCExploded({1994, 11, 3, 15, 12, 45, 26, 0});
 
   ASSERT_TRUE(TouchFile(foobar, access_time, modification_time));
   File::Info file_info;


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@brpc.apache.org
For additional commands, e-mail: dev-help@brpc.apache.org