presto: [Native Execution] Build failure on MacOS when PRESTO_ENABLE_PARQUET=ON

The presto_server target build fails on MacOS with bunch of missing symbols when built with -DPRESTO_ENABLE_PARQUET=ON

bash$ PRESTO_ENABLE_PARQUET=ON make debug

.....
Undefined symbols for architecture x86_64:
  "apache::thrift::CodecConfig::__fbthrift_clear()", referenced from:
      apache::thrift::CodecConfig::~CodecConfig() in libpresto_thrift-cpp2.a(PrestoThriftAsyncClient.cpp.o)
      apache::thrift::CodecConfig::~CodecConfig() in libthriftcpp2.a(Cpp2Channel.cpp.o)
      apache::thrift::CodecConfig::~CodecConfig() in libthriftcpp2.a(RequestChannel.cpp.o)
      apache::thrift::CodecConfig::~CodecConfig() in libthriftcpp2.a(FramingHandler.cpp.o)
      apache::thrift::CodecConfig::~CodecConfig() in libthriftcpp2.a(RpcMetadataUtil.cpp.o)
  "apache::thrift::concurrency::Util::currentTimeTicks(long long)", referenced from:
      apache::thrift::concurrency::Util::currentTime() in libtransport.a(THttpParser.cpp.o)
  "apache::thrift::ContextStack::onReadData(apache::thrift::SerializedMessage const&)", referenced from:
      folly::exception_wrapper apache::thrift::detail::ac::recv_wrapped_helper<apache::thrift::BinaryProtocolReader, apache::thrift::ThriftPresult<true> >(apache::thrift::BinaryProtocolReader*, apache::thrift::ClientReceiveState&, apache::thrift::ThriftPresult<true>&) in libpresto_thrift-cpp2.a(PrestoThriftAsyncClient.cpp.o)
      folly::exception_wrapper apache::thrift::detail::ac::recv_wrapped_helper<apache::thrift::CompactProtocolReader, apache::thrift::ThriftPresult<true> >(apache::thrift::CompactProtocolReader*, apache::thrift::ClientReceiveState&, apache::thrift::ThriftPresult<true>&) in libpresto_thrift-cpp2.a(PrestoThriftAsyncClient.cpp.o)
.........

About this issue

  • Original URL
  • State: closed
  • Created 2 years ago
  • Comments: 28 (15 by maintainers)

Most upvoted comments

@mbasmanova @majetideepak Here is the partial fix: https://github.com/prestodb/presto/pull/18213/files

You need to add also on line 158 in presto-native-execution/CMakeLists.txt (after find_library(RE2 re2)):

find_library(RE2 re2)
find_package(FBTHRIFT)
include_directories(${FBTHRIFT_INCLUDE_DIR})

You could adopt in somehow as we are waiting for legal team to finish the CLA process so it still can take some time. P.s. Not sure if this will help with your issue 😃

Hi, I have the same problem as well. Can we get an update on this ticket? Thanks!

CodecConfig

it looks like I can reproduce the issue locally. I will take a look at the issue.

PRESTO_ENABLE_PARQUET=ON make debug should do.

@mbasmanova Yes, the build fails only when PRESTO_ENABLE_PARQUET=ON. I edited the description. Previously it was only in the title.