Oh, sorry, this is for Arrow development...

A public header should not include an internal header (this includes the 
Protobuf-generated headers). But can you build the project without modification 
already?

On Mon, Feb 13, 2023, at 15:02, Paul Nienaber wrote:
> Hi David,
>
> This is for Arrow feature development, where the changes have been made 
> in client.h.  Am I possibly running into symbol visibility guards I'm 
> not expecting here and didn't spot yet?
>
> Paul
> ________________________________
> From: David Li <lidav...@apache.org>
> Sent: Monday, February 13, 2023 11:11 AM
> To: dev@arrow.apache.org <dev@arrow.apache.org>
> Subject: Re: Build issues (Protobuf internal symbols)
>
> The Protobuf-generated code from Arrow is not meant for external 
> consumption, and in general, the way Protobuf works will make this 
> complicated. What is the use case here?
>
> (In fact, that header shouldn't even be available for you to include. 
> It seems you're linking/including it from a build of Arrow, but it 
> won't be there once Arrow is actually installed.)
>
> In this case though, it's just that we purposely hide symbols by 
> default. If there's a use case, we could unhide this specific symbol 
> (we did it for one other Protobuf symbol) which would let you 
> externally generate and use the headers (as long as you take care not 
> to actually include the generated sources).
>
> On Mon, Feb 13, 2023, at 14:05, Paul Nienaber wrote:
>> Hi folks,
>>
>> I'm not familiar yet with all of the details of how Protobuf is set up
>> to be built and included or whether there's a subtle difference between
>> the CMake targets (headers vs cc sources), but we've recently gone and
>> started touching some of the Protobuf types from a C++ header and are
>> seeing build issues stemming from Protobuf-internal symbols/macros not
>> being properly in scope.
>>
>> Working with /cpp/src/arrow/flight/sql/client.h we've included
>> "arrow/flight/sql/FlightSql.pb.h" (this may itself be an issue, but
>> using <google/protobuf/any.pb.g was not exposing generated types from
>> sql/FlightSql), and we're seeing the following:
>>
>> [1/4] Building CXX object
>> src/arrow/flight/sql/CMakeFiles/arrow_flight_sql_objlib.dir/client.cc.o
>> FAILED:
>> src/arrow/flight/sql/CMakeFiles/arrow_flight_sql_objlib.dir/client.cc.o
>> /opt/homebrew/bin/ccache
>> /Library/Developer/CommandLineTools/usr/bin/c++
>> -DARROW_EXTRA_ERROR_CONTEXT -DARROW_FLIGHT_SQL_EXPORTING
>> -DARROW_HAVE_NEON -DARROW_WITH_RE2 -DARROW_WITH_TIMING_TESTS
>> -DARROW_WITH_ZLIB
>> -DGRPC_NAMESPACE_FOR_TLS_CREDENTIALS_OPTIONS=grpc::experimental
>> -DGRPC_USE_CERTIFICATE_VERIFIER
>> -DGRPC_USE_TLS_CHANNEL_CREDENTIALS_OPTIONS -DURI_STATIC_BUILD
>> -I/Users/pauln/bq/git/arrow/cpp/session-managemen-build-debug/src
>> -I/Users/pauln/bq/git/arrow/cpp/src
>> -I/Users/pauln/bq/git/arrow/cpp/src/generated -isystem
>> /opt/homebrew/include -isystem
>> /Users/pauln/bq/git/arrow/cpp/thirdparty/flatbuffers/include -isystem
>> /Users/pauln/bq/git/arrow/cpp/thirdparty/hadoop/include -isystem
>> /opt/homebrew/opt/openssl@1.1/include -isystem
>> /Users/pauln/bq/git/arrow/cpp/session-managemen-build-debug/jemalloc_ep-prefix/src
>> -fno-aligned-new  -Qunused-arguments -fcolor-diagnostics  -Wall -Wextra
>> -Wdocumentation -Wshorten-64-to-32 -Wno-missing-braces
>> -Wno-unused-parameter -Wno-constant-logical-operand
>> -Wno-return-stack-address -Wno-unknown-warning-option -Wno-pass-failed
>> -march=armv8-a  -g -Werror -O0 -ggdb -arch arm64 -isysroot
>> /Library/Developer/CommandLineTools/SDKs/MacOSX13.1.sdk -fPIC
>> -std=c++17 -MD -MT
>> src/arrow/flight/sql/CMakeFiles/arrow_flight_sql_objlib.dir/client.cc.o
>> -MF
>> src/arrow/flight/sql/CMakeFiles/arrow_flight_sql_objlib.dir/client.cc.o.d
>> -o
>> src/arrow/flight/sql/CMakeFiles/arrow_flight_sql_objlib.dir/client.cc.o
>> -c /Users/pauln/bq/git/arrow/cpp/src/arrow/flight/sql/client.cc
>> In file included from
>> /Users/pauln/bq/git/arrow/cpp/src/arrow/flight/sql/client.cc:22:
>> In file included from
>> /Users/pauln/bq/git/arrow/cpp/src/arrow/flight/sql/client.h:24:
>> /Users/pauln/bq/git/arrow/cpp/session-managemen-build-debug/src/arrow/flight/sql/FlightSql.pb.h:47:3:
>> error: expected expression
>>   static const uint32_t offsets[];
>>   ^
>> /Users/pauln/bq/git/arrow/cpp/session-managemen-build-debug/src/arrow/flight/sql/FlightSql.pb.h:46:32:
>> error: variable has incomplete type 'struct ARROW_FLIGHT_SQL_EXPORT'
>> struct ARROW_FLIGHT_SQL_EXPORT TableStruct_FlightSql_2eproto {
>>                                ^
>> /Users/pauln/bq/git/arrow/cpp/session-managemen-build-debug/src/arrow/flight/sql/FlightSql.pb.h:46:8:
>> note: forward declaration of 'ARROW_FLIGHT_SQL_EXPORT'
>> struct ARROW_FLIGHT_SQL_EXPORT TableStruct_FlightSql_2eproto {
>>        ^
>> /Users/pauln/bq/git/arrow/cpp/session-managemen-build-debug/src/arrow/flight/sql/FlightSql.pb.h:49:73:
>> error: no member named 'DescriptorTable' in namespace
>> 'google::protobuf::internal'
>> ARROW_FLIGHT_SQL_EXPORT extern const
>> ::PROTOBUF_NAMESPACE_ID::internal::DescriptorTable
>> descriptor_table_FlightSql_2eproto;
>>
>> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
>> /Users/pauln/bq/git/arrow/cpp/session-managemen-build-debug/src/arrow/flight/sql/FlightSql.pb.h:49:88:
>> error: expected ';' after top level declarator
>> ARROW_FLIGHT_SQL_EXPORT extern const
>> ::PROTOBUF_NAMESPACE_ID::internal::DescriptorTable
>> descriptor_table_FlightSql_2eproto;
>> [...]
>>
>>
>> Any insight or suggestions are welcome here!
>>
>> Cheers
>> Paul

Reply via email to