[ https://issues.apache.org/jira/browse/PARQUET-798?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15745803#comment-15745803 ]
William Forson commented on PARQUET-798: ---------------------------------------- Thanks for the response! It's a shame I didn't post my original issue to the correct page, as I spent some time playing around with this last month but have forgotten everything by now. Anyway, I'm attaching the cmake output with {{THRIFT_HOME}} set, but without any other tweaks, as cmake_output_original.txt. At this point, the thrift-finding cmake logic picks up my system libraries rather than the ones under {{$THRIFT_HOME/lib}}. (IIRC it was reasonably easy to get around this by tweaking the cmake logic, btw) For reference: {block} $ ls -R thrift_home/ thrift_home/: bin include lib thrift_home/bin: thrift thrift_home/include: thrift thrift_home/include/thrift: async cxxfunctional.h qt TDispatchProcessor.h TLogging.h transport concurrency processor server thrift-config.h TOutput.h TToString.h config.h protocol TApplicationException.h Thrift.h TProcessor.h thrift_home/include/thrift/async: TAsyncBufferProcessor.h TAsyncDispatchProcessor.h TAsyncProtocolProcessor.h TEvhttpClientChannel.h TAsyncChannel.h TAsyncProcessor.h TConcurrentClientSyncInfo.h TEvhttpServer.h thrift_home/include/thrift/concurrency: BoostThreadFactory.h Monitor.h PosixThreadFactory.h StdThreadFactory.cpp ThreadManager.h Exception.h Mutex.h StdMonitor.cpp StdThreadFactory.h TimerManager.h FunctionRunner.h PlatformThreadFactory.h StdMutex.cpp Thread.h Util.h thrift_home/include/thrift/processor: PeekProcessor.h StatsProcessor.h TMultiplexedProcessor.h thrift_home/include/thrift/protocol: TBase64Utils.h TCompactProtocol.h TJSONProtocol.h TProtocolException.h TVirtualProtocol.h TBinaryProtocol.h TCompactProtocol.tcc TMultiplexedProtocol.h TProtocol.h TBinaryProtocol.tcc TDebugProtocol.h TProtocolDecorator.h TProtocolTap.h thrift_home/include/thrift/qt: TQIODeviceTransport.h TQTcpServer.h thrift_home/include/thrift/server: TConnectedClient.h TServerFramework.h TSimpleServer.h TThreadPoolServer.h TNonblockingServer.h TServer.h TThreadedServer.h thrift_home/include/thrift/transport: PlatformSocket.h THttpServer.h TServerTransport.h TSSLServerSocket.h TVirtualTransport.h TBufferTransports.h THttpTransport.h TShortReadTransport.h TSSLSocket.h TZlibTransport.h TFDTransport.h TPipe.h TSimpleFileTransport.h TTransportException.h TFileTransport.h TPipeServer.h TSocket.h TTransport.h THttpClient.h TServerSocket.h TSocketPool.h TTransportUtils.h thrift_home/lib: libthrift-0.9.3.so libthrift.la libthriftqt.a libthriftqt.so libthriftz-0.9.3.so libthriftz.la libthrift.a libthriftqt-0.9.3.so libthriftqt.la libthrift.so libthriftz.a libthriftz.so {block} > usage of THRIFT_HOME in build? > ------------------------------ > > Key: PARQUET-798 > URL: https://issues.apache.org/jira/browse/PARQUET-798 > Project: Parquet > Issue Type: Bug > Components: parquet-cpp > Reporter: William Forson > > Hi, > I posted this issue a while back on the old parquet-cpp github page and > forgot about it...until just now. > First of all, to briefly describe my use case: I am using parquet-cpp as a > dependency in a project which already has a dependency on thrift. As such, > I'd like to be able to build parquet-cpp against the version of thrift which > we are already using in the project. > When I first spotted the notes regarding {{THRIFT_HOME}} in the readme, I > thought this looked like exactly what I wanted -- that is, a way to configure > the parquet-cpp build process to use external/pre-built thrift artifacts. So, > for starters: am I simply misinterpreting the meaning of {{THRIFT_HOME}}? > (e.g. does that specify a _destination_ directory for thrift artifacts built > during the parquet-cpp 3p build step?) And if so, is there any good way (or > bad way) to accomplish what I'm trying to do here? > Otherwise, when I try to use my own thrift installation (via > {{THRIFT_HOME}}), the build fails like so: > {quote} > $ make parquetcpp > cd parquet-cpp && source ./thirdparty/set_thirdparty_env.sh && make > make[1]: Entering directory `parquet-cpp' > make[2]: Entering directory `parquet-cpp' > make[3]: Entering directory `parquet-cpp' > Scanning dependencies of target parquet_thrift > make[3]: Leaving directory `parquet-cpp' > make[3]: Entering directory `parquet-cpp' > [ 1%] Building CXX object > src/parquet/thrift/CMakeFiles/parquet_thrift.dir/parquet_types.cpp.o > parquet-cpp/src/parquet/thrift/parquet_types.cpp: In member function > ‘uint32_t > parquet::format::Statistics::read(apache::thrift::protocol::TProtocol*)’: > parquet-cpp/src/parquet/thrift/parquet_types.cpp:179:3: error: > ‘TInputRecursionTracker’ is not a member of ‘apache::thrift::protocol’ > apache::thrift::protocol::TInputRecursionTracker tracker(*iprot); > ^ > parquet-cpp/src/parquet/thrift/parquet_types.cpp: In member function > ‘uint32_t > parquet::format::Statistics::write(apache::thrift::protocol::TProtocol*) > const’: > parquet-cpp/src/parquet/thrift/parquet_types.cpp:244:3: error: > ‘TOutputRecursionTracker’ is not a member of ‘apache::thrift::protocol’ > apache::thrift::protocol::TOutputRecursionTracker tracker(*oprot); > ^ > parquet-cpp/src/parquet/thrift/parquet_types.cpp: In member function > ‘uint32_t > parquet::format::SchemaElement::read(apache::thrift::protocol::TProtocol*)’: > parquet-cpp/src/parquet/thrift/parquet_types.cpp:357:3: error: > ‘TInputRecursionTracker’ is not a member of ‘apache::thrift::protocol’ > apache::thrift::protocol::TInputRecursionTracker tracker(*iprot); > ^ > parquet-cpp/src/parquet/thrift/parquet_types.cpp: In member function > ‘uint32_t > parquet::format::SchemaElement::write(apache::thrift::protocol::TProtocol*) > const’: > parquet-cpp/src/parquet/thrift/parquet_types.cpp:471:3: error: > ‘TOutputRecursionTracker’ is not a member of ‘apache::thrift::protocol’ > apache::thrift::protocol::TOutputRecursionTracker tracker(*oprot); > ^ > <SNIP ... you get the idea> > ^ > parquet-cpp/src/parquet/thrift/parquet_types.cpp: In member function > ‘uint32_t > parquet::format::FileMetaData::read(apache::thrift::protocol::TProtocol*)’: > parquet-cpp/src/parquet/thrift/parquet_types.cpp:2646:3: error: > ‘TInputRecursionTracker’ is not a member of ‘apache::thrift::protocol’ > apache::thrift::protocol::TInputRecursionTracker tracker(*iprot); > ^ > parquet-cpp/src/parquet/thrift/parquet_types.cpp: In member function > ‘uint32_t > parquet::format::FileMetaData::write(apache::thrift::protocol::TProtocol*) > const’: > parquet-cpp/src/parquet/thrift/parquet_types.cpp:2775:3: error: > ‘TOutputRecursionTracker’ is not a member of ‘apache::thrift::protocol’ > apache::thrift::protocol::TOutputRecursionTracker tracker(*oprot); > ^ > make[3]: *** > [src/parquet/thrift/CMakeFiles/parquet_thrift.dir/parquet_types.cpp.o] Error 1 > make[3]: Leaving directory `parquet-cpp' > make[2]: *** [src/parquet/thrift/CMakeFiles/parquet_thrift.dir/all] Error 2 > make[2]: Leaving directory `parquet-cpp' > make[1]: *** [all] Error 2 > make[1]: Leaving directory `parquet-cpp' > make: *** [<...>/libparquet.a] Error 2 > {quote} > This kinda smells like a circular dependency (as all of the types/headers > mentioned above look fine), but I haven't dug through the internals of the > parquet-cpp build logic enough to diagnose it in more detail. Before doing > so, I wanted to post here for a sanity check on my use case, and the intended > semantics/usage of {{THRIFT_HOME}}. > Any help/clarification will be much appreciated! -- This message was sent by Atlassian JIRA (v6.3.4#6332)