anku94 opened a new issue, #45959: URL: https://github.com/apache/arrow/issues/45959
### Describe the bug, including details regarding any error messages, version, and platform. I am getting some cmake configuration errors in `find_package(Arrow::arrow_static)` on Arrow built with Flight/FlightSQL support enabled but without internal protobuf. Specifically, the generated `ArrowTargets.cmake` incorrectly specifies `protobuf::libprotobuf` as an interface dependency for `Arrow::arrow_static`, even though Arrow itself (core library) does not depend on protobuf—only ArrowFlight and ArrowFlightSQL do. ``` -- Arrow version: 19.0.0 -- Found the Arrow shared library: /install-tree/lib/libarrow.so.1900.0.0 -- Found the Arrow import library: ARROW_IMPORT_LIB-NOTFOUND -- Found the Arrow static library: /install-tree/lib/libarrow.a -- Parquet version: 19.0.0 -- Found the Parquet shared library: /install-tree/lib/libparquet.so.1900.0.0 -- Found the Parquet import library: PARQUET_IMPORT_LIB-NOTFOUND -- Found the Parquet static library: /install-tree/lib/libparquet.a -- Arrow version: 19.0.0 -- Found the Arrow shared library: /install-tree/lib/libarrow.so.1900.0.0 -- Found the Arrow import library: ARROW_IMPORT_LIB-NOTFOUND -- Found the Arrow static library: /install-tree/lib/libarrow.a -- Arrow version: 19.0.0 -- Found the Arrow shared library: /install-tree/lib/libarrow.so.1900.0.0 -- Found the Arrow import library: ARROW_IMPORT_LIB-NOTFOUND -- Found the Arrow static library: /install-tree/lib/libarrow.a -- Parquet version: 19.0.0 -- Found the Parquet shared library: /install-tree/lib/libparquet.so.1900.0.0 -- Found the Parquet import library: PARQUET_IMPORT_LIB-NOTFOUND -- Found the Parquet static library: /install-tree/lib/libparquet.a -- Configuring done (0.4s) CMake Error at /install-tree/lib/cmake/Arrow/ArrowTargets.cmake:70 (set_target_properties): The link interface of target "Arrow::arrow_static" contains: protobuf::libprotobuf but the target was not found. Possible reasons include: * There is a typo in the target name. * A find_package call is missing for an IMPORTED target. * An ALIAS target is missing. Call Stack (most recent call first): /install-tree/lib/cmake/Arrow/ArrowConfig.cmake:125 (include) src/CMakeLists.txt:6 (find_package) ``` I am building Arrow from the git tag `apache-arrow-19.0.0` with Flight, FlightSql, and Parquet enabled. Protobuf is being built separately. The problem seems to be that `ArrowTargets.cmake` specifies protobuf in its `INTERFACE_LINK_LIBRARIES`, but `ArrowConfig.cmake` does not trigger a `find_dependency` for protobuf because Arrow does not need protobuf, only ArrowFlight and ArrowFlightSql do. From `ArrowTargets.cmake`: ``` set_target_properties(Arrow::arrow_static PROPERTIES INTERFACE_COMPILE_FEATURES "cxx_std_17" INTERFACE_INCLUDE_DIRECTORIES "${_IMPORT_PREFIX}/include" INTERFACE_LINK_LIBRARIES "Arrow::arrow_bundled_dependencies;OpenSSL::Crypto;OpenSSL::SSL;ZLIB::ZLIB;re2::re2;protobuf::libprotobuf;Threads::Threads;dl;rt" ) ``` From `ArrowConfig.cmake`: ``` set(ARROW_SYSTEM_DEPENDENCIES "OpenSSLAlt;ZLIB;re2Alt") # This is used to trigger arrow_find_dependencies in the following lines ``` For reference, `ArrowFlightConfig.cmake` does include protobuf and it builds correctly: ``` set(ARROW_FLIGHT_SYSTEM_DEPENDENCIES "ProtobufAlt;abslAlt;gRPCAlt") ``` --- I think the problem arises because of how `ARROW_WITH_PROTOBUF` is tracked. From `cpp/cmake_modules/ThirdpartyToolchain.cmake`: ``` if(ARROW_ORC OR ARROW_FLIGHT) set(ARROW_WITH_PROTOBUF ON) endif() if(ARROW_SUBSTRAIT) set(ARROW_WITH_PROTOBUF ON) endif() ``` And from `cpp/src/arrow/CMakeLists.txt`: ``` # This should be done after if(ARROW_ORC) and if(ARROW_WITH_OPENTELEMETRY) # because they depend on Protobuf. if(ARROW_WITH_PROTOBUF) if(Protobuf_SOURCE STREQUAL "SYSTEM") list(APPEND ARROW_STATIC_INSTALL_INTERFACE_LIBS ${ARROW_PROTOBUF_LIBPROTOBUF}) endif() endif() ``` If the triggering condition is `ARROW_FLIGHT`, Arrow itself contains no references to protobuf, and only the `INTERFACE_LINK_LIBRARIES` for `ArrowFlight::arrow_flight_static` should contain `protobuf::libprotobuf`. ### Component(s) C++ -- 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: issues-unsubscr...@arrow.apache.org.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org