lidavidm commented on PR #14082: URL: https://github.com/apache/arrow/pull/14082#issuecomment-1379461625
Ok, given the Protobuf conflict I think this has to be disabled in the wheels. I think we can try to enable only in Conda for now. The issue is that both Substrait and Flight SQL use the 'standard' `google.protobuf.Any`, so both shared libraries will generate code for it and try to initialize it with the Protobuf runtime when loaded. But Protobuf then crashes because it doesn't expect you to load the same definition twice. @westonpace do you have any thoughts on protobuf packaging? I see a few possible solutions: - Split out all protobuf code in Arrow into a single shared object that other libraries depend on. (I think this is the generally recommended path, but will complicate our CMake.) We already sort of do this with Substrait, from what I see, so we'd 'just' have to share this with Flight and Flight SQL. - See if we can enable LITE_RUNTIME for one or both Protobufs. (This requires editing the Protobuf definitions.) This _apparently_ reduces the amount of global shenanigans that Protobuf does but also disables reflection and doesn't seem to guarantee that it will fix the solution. -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: [email protected] For queries about this service, please contact Infrastructure at: [email protected]
