William Forson created PARQUET-798:
--------------------------------------

             Summary: 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)

Reply via email to