You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@brpc.apache.org by GitBox <gi...@apache.org> on 2022/02/11 09:59:17 UTC

[GitHub] [incubator-brpc] JackBoosY opened a new issue #1691: 使用leveldb提供的cmake配置文件来查找并使用leveldb

JackBoosY opened a new issue #1691:
URL: https://github.com/apache/incubator-brpc/issues/1691


   **Describe the bug (描述bug)**
   Hi 各位,
   我是vcpkg维护者。
   这段时间我们收到了一个brpc的build失败问题:
   ```
   [328/338] : && /usr/bin/c++ -DBRPC_WITH_GLOG=1 -DGFLAGS_NS=google -DBTHREAD_USE_FAST_PTHREAD_MUTEX -D__const__= -D_GNU_SOURCE -DUSE_SYMBOLIZE -DNO_TCMALLOC -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -D__STDC_CONSTANT_MACROS -DBRPC_REVISION=\"0.9.7\|master\|7e7dad5fe\|2022-02-04T18:00:26-08:00\" -D__STRICT_ANSI__ -g -DENABLE_THRIFT_FRAMED_PROTOCOL -O2 -pipe -Wall -W -fPIC -fstrict-aliasing -Wno-invalid-offsetof -Wno-unused-parameter -fno-omit-frame-pointer -msse4 -msse4.2 -Wno-aligned-new -DNDEBUG -g -rdynamic src/CMakeFiles/protoc-gen-mcpack.dir/mcpack2pb/generator.cpp.o -o output/bin/protoc-gen-mcpack  -Wl,-rpath,/mnt/c/dev/vcpkg-dev/vcpkg/buildtrees/brpc/x64-linux-dbg/output/lib  output/lib/libbrpc.so  /mnt/c/dev/vcpkg-dev/vcpkg/installed/x64-linux/lib/libgflags.a  /mnt/c/dev/vcpkg-dev/vcpkg/installed/x64-linux/debug/lib/libprotobufd.a  /mnt/c/dev/vcpkg-dev/vcpkg/installed/x64-linux/debug/lib/libleveldb.a  /mnt/c/dev/vcpkg-dev/vcpkg/installed/x64-linux/lib/libprotoc.a  /mnt/c/
 dev/vcpkg-dev/vcpkg/installed/x64-linux/debug/lib/libcrypto.a  /mnt/c/dev/vcpkg-dev/vcpkg/installed/x64-linux/debug/lib/libthriftd.a  /mnt/c/dev/vcpkg-dev/vcpkg/installed/x64-linux/lib/libssl.a  /mnt/c/dev/vcpkg-dev/vcpkg/installed/x64-linux/lib/libcrypto.a  -lpthread  -lpthread  /mnt/c/dev/vcpkg-dev/vcpkg/installed/x64-linux/debug/lib/libssl.a  -lz  /mnt/c/dev/vcpkg-dev/vcpkg/installed/x64-linux/debug/lib/libssl.a  -lz  -ldl  /mnt/c/dev/vcpkg-dev/vcpkg/installed/x64-linux/debug/lib/libglog.a  -lrt  /mnt/c/dev/vcpkg-dev/vcpkg/installed/x64-linux/debug/lib/libglog.a  -lrt && :
   FAILED: output/bin/protoc-gen-mcpack 
   : && /usr/bin/c++ -DBRPC_WITH_GLOG=1 -DGFLAGS_NS=google -DBTHREAD_USE_FAST_PTHREAD_MUTEX -D__const__= -D_GNU_SOURCE -DUSE_SYMBOLIZE -DNO_TCMALLOC -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -D__STDC_CONSTANT_MACROS -DBRPC_REVISION=\"0.9.7\|master\|7e7dad5fe\|2022-02-04T18:00:26-08:00\" -D__STRICT_ANSI__ -g -DENABLE_THRIFT_FRAMED_PROTOCOL -O2 -pipe -Wall -W -fPIC -fstrict-aliasing -Wno-invalid-offsetof -Wno-unused-parameter -fno-omit-frame-pointer -msse4 -msse4.2 -Wno-aligned-new -DNDEBUG -g -rdynamic src/CMakeFiles/protoc-gen-mcpack.dir/mcpack2pb/generator.cpp.o -o output/bin/protoc-gen-mcpack  -Wl,-rpath,/mnt/c/dev/vcpkg-dev/vcpkg/buildtrees/brpc/x64-linux-dbg/output/lib  output/lib/libbrpc.so  /mnt/c/dev/vcpkg-dev/vcpkg/installed/x64-linux/lib/libgflags.a  /mnt/c/dev/vcpkg-dev/vcpkg/installed/x64-linux/debug/lib/libprotobufd.a  /mnt/c/dev/vcpkg-dev/vcpkg/installed/x64-linux/debug/lib/libleveldb.a  /mnt/c/dev/vcpkg-dev/vcpkg/installed/x64-linux/lib/libprotoc.a  /mnt/c/dev/vcpkg-
 dev/vcpkg/installed/x64-linux/debug/lib/libcrypto.a  /mnt/c/dev/vcpkg-dev/vcpkg/installed/x64-linux/debug/lib/libthriftd.a  /mnt/c/dev/vcpkg-dev/vcpkg/installed/x64-linux/lib/libssl.a  /mnt/c/dev/vcpkg-dev/vcpkg/installed/x64-linux/lib/libcrypto.a  -lpthread  -lpthread  /mnt/c/dev/vcpkg-dev/vcpkg/installed/x64-linux/debug/lib/libssl.a  -lz  /mnt/c/dev/vcpkg-dev/vcpkg/installed/x64-linux/debug/lib/libssl.a  -lz  -ldl  /mnt/c/dev/vcpkg-dev/vcpkg/installed/x64-linux/debug/lib/libglog.a  -lrt  /mnt/c/dev/vcpkg-dev/vcpkg/installed/x64-linux/debug/lib/libglog.a  -lrt && :
   /usr/bin/ld: output/lib/libbrpc.so: undefined reference to `snappy::RawCompress(char const*, unsigned long, char*, unsigned long*)'
   /usr/bin/ld: output/lib/libbrpc.so: undefined reference to `snappy::RawUncompress(char const*, unsigned long, char*)'
   /usr/bin/ld: output/lib/libbrpc.so: undefined reference to `snappy::GetUncompressedLength(char const*, unsigned long, unsigned long*)'
   /usr/bin/ld: output/lib/libbrpc.so: undefined reference to `snappy::MaxCompressedLength(unsigned long)'
   collect2: error: ld returned 1 exit status
   ```
   经过深入调查,我发现这是因为leveldb查找到的snappy是系统中的,而不是vcpkg自带的,所以我修复了它(https://github.com/microsoft/vcpkg/pull/23048)。
   然而,由于brpc依赖于leveldb,我仍然需要去修复brpc中查找并使用leveldb的cmake代码:切换`find_path`与`find_library`至`find_package`并修复使用的地方`target_link_libraries`。
   但是很遗憾,我发现将依赖库写入pkgconfig中的方式居然是硬编码,这导致了我即使修复生成配置文件中的leveldb, pkgconfig中`LIBS.PRIVATE`的也不能被修复。
   所以我认为brpc需要更新一下cmake代码了:由于brpc无法感知leveldb依赖了哪些库,所以brpc必须严格遵循leveldb提供的cmake配置文件`leveldbConfig.cmake`以及`leveldb.pc`(如果有的话)。
   
   **Expected behavior (期望行为)**
   `brpc.pc`中的`LIBS.PRIVATE`应当包含完整的依赖链。
   
   **Versions (各种版本)**
   OS: ALL
   Compiler: ALL
   brpc: 0.9.7
   protobuf: 不涉及
   
   **Additional context/screenshots (更多上下文/截图)**
   
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: dev-unsubscribe@brpc.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org



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