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)