[
https://issues.apache.org/jira/browse/PARQUET-798?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15745803#comment-15745803
]
William Forson edited comment on PARQUET-798 at 12/13/16 6:13 PM:
------------------------------------------------------------------
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:
{quote}
$ 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
{quote}
was (Author: wdf):
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:
{quote}
$ 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
{quote}
> 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)