Skip to content

Conversation

@darin-costello
Copy link
Contributor

Summary

Changes to recipe: *arrow/ **
When building with protobuf.

Motivation

Arrow uses protoc as a built tool.
When building with "*:shared=true" and options to enable protobuf and substrait, protoc can't find the shared libraries it needs to run.

Details

Adds a tool Require and build environment. Fixes the issue.


  • Read the contributing guidelines
  • Checked that this PR is not a duplicate: list of PRs by recipe
  • If this is a bug fix, please link related issue or provide bug details
  • Tested locally with at least one configuration using a recent version of Conan

Add a 👍 reaction to pull requests you find important to help the team prioritize, thanks!

When using protobuf, protoc is run at build time.
Without this change protoc will fail to run if protobuf is built with
shared=true.
@AbrilRBS AbrilRBS changed the title Add protobuf as tool_requires arrow: Add missing protobuf as tool_requires Nov 14, 2025
@AbrilRBS AbrilRBS self-assigned this Nov 14, 2025
Copy link
Contributor

@franramirez688 franramirez688 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hi @darin-costello

Thanks for this PR! 🙏

Looks great, but could you add the failure/success logs to your PR description before/after applying your fix? It helps a lot for reviewers and any other users 😁

@AbrilRBS
Copy link
Member

I can confirm that without this, building with -o="*:shared=True" -o="&:with_protobuf=True" -o="&:substrait=True" results in:

arrow/22.0.0: Running CMake.build()
arrow/22.0.0: RUN: cmake --build "/Users/abril/.conan2/p/b/arrow06a96bb6b006e/b/build/Release" -- -j12
[19/355] Performing download step (download, verify and extract) for 'substrait_ep'
-- Downloading...
   dst='/Users/abril/.conan2/p/b/arrow06a96bb6b006e/b/build/Release/substrait_ep-prefix/src/v0.44.0.tar.gz'
   timeout='none'
   inactivity timeout='none'
-- Using src='https://github.com/substrait-io/substrait/archive/v0.44.0.tar.gz'
-- verifying file...
       file='/Users/abril/.conan2/p/b/arrow06a96bb6b006e/b/build/Release/substrait_ep-prefix/src/v0.44.0.tar.gz'
-- Downloading... done
-- extracting...
     src='/Users/abril/.conan2/p/b/arrow06a96bb6b006e/b/build/Release/substrait_ep-prefix/src/v0.44.0.tar.gz'
     dst='/Users/abril/.conan2/p/b/arrow06a96bb6b006e/b/build/Release/substrait_ep-prefix/src/substrait_ep'
-- extracting... [tar xf]
-- extracting... [analysis]
-- extracting... [rename]
-- extracting... [clean up]
-- extracting... done
[243/355] Building CXX object src/arrow/acero/CMakeFiles/arrow_acero_objlib.dir/asof_join_node.cc.o
../../src/cpp/src/arrow/acero/asof_join_node.cc:794:17: warning: private field 'node_' is not used [-Wunused-private-field]
  794 |   AsofJoinNode* node_;
      |                 ^
../../src/cpp/src/arrow/acero/asof_join_node.cc:796:10: warning: private field 'index_' is not used [-Wunused-private-field]
  796 |   size_t index_;
      |          ^
2 warnings generated.
[312/355] Generating substrait_ep-generated/substrait/type.pb.cc, substrait_ep-generated/substrait/type.pb.h
FAILED: [code=134] substrait_ep-generated/substrait/type.pb.cc substrait_ep-generated/substrait/type.pb.h /Users/abril/.conan2/p/b/arrow06a96bb6b006e/b/build/Release/substrait_ep-generated/substrait/type.pb.cc /Users/abril/.conan2/p/b/arrow06a96bb6b006e/b/build/Release/substrait_ep-generated/substrait/type.pb.h 
cd /Users/abril/.conan2/p/b/arrow06a96bb6b006e/b/build/Release && /Users/abril/.conan2/p/protoe7c55155f01b7/p/bin/protoc -I/Users/abril/.conan2/p/b/arrow06a96bb6b006e/b/build/Release/substrait_ep-prefix/src/substrait_ep/proto --cpp_out=/Users/abril/.conan2/p/b/arrow06a96bb6b006e/b/build/Release/substrait_ep-generated /Users/abril/.conan2/p/b/arrow06a96bb6b006e/b/build/Release/substrait_ep-prefix/src/substrait_ep/proto/substrait/type.proto
dyld[8335]: Library not loaded: @rpath/libabsl_log_internal_check_op.2508.0.0.dylib
  Referenced from: <FD59A416-D3B8-3012-986A-D4ADBE405B84> /Users/abril/.conan2/p/protoe7c55155f01b7/p/bin/protoc-32.1.0
  Reason: tried: '/Users/abril/.conan2/p/protoe7c55155f01b7/p/bin/../lib/libabsl_log_internal_check_op.2508.0.0.dylib' (no such file), '/Users/abril/.conan2/p/protoe7c55155f01b7/p/bin/../lib/libabsl_log_internal_check_op.2508.0.0.dylib' (no such file)
/bin/sh: line 1:  8335 Abort trap: 6           /Users/abril/.conan2/p/protoe7c55155f01b7/p/bin/protoc -I/Users/abril/.conan2/p/b/arrow06a96bb6b006e/b/build/Release/substrait_ep-prefix/src/substrait_ep/proto --cpp_out=/Users/abril/.conan2/p/b/arrow06a96bb6b006e/b/build/Release/substrait_ep-generated /Users/abril/.conan2/p/b/arrow06a96bb6b006e/b/build/Release/substrait_ep-prefix/src/substrait_ep/proto/substrait/type.proto
[313/355] Generating substrait_ep-generated/substrait/algebra.pb.cc, substrait_ep-generated/substrait/algebra.pb.h
FAILED: [code=134] substrait_ep-generated/substrait/algebra.pb.cc substrait_ep-generated/substrait/algebra.pb.h /Users/abril/.conan2/p/b/arrow06a96bb6b006e/b/build/Release/substrait_ep-generated/substrait/algebra.pb.cc /Users/abril/.conan2/p/b/arrow06a96bb6b006e/b/build/Release/substrait_ep-generated/substrait/algebra.pb.h 
cd /Users/abril/.conan2/p/b/arrow06a96bb6b006e/b/build/Release && /Users/abril/.conan2/p/protoe7c55155f01b7/p/bin/protoc -I/Users/abril/.conan2/p/b/arrow06a96bb6b006e/b/build/Release/substrait_ep-prefix/src/substrait_ep/proto --cpp_out=/Users/abril/.conan2/p/b/arrow06a96bb6b006e/b/build/Release/substrait_ep-generated /Users/abril/.conan2/p/b/arrow06a96bb6b006e/b/build/Release/substrait_ep-prefix/src/substrait_ep/proto/substrait/algebra.proto
dyld[8326]: Library not loaded: @rpath/libabsl_log_internal_check_op.2508.0.0.dylib
  Referenced from: <FD59A416-D3B8-3012-986A-D4ADBE405B84> /Users/abril/.conan2/p/protoe7c55155f01b7/p/bin/protoc-32.1.0
  Reason: tried: '/Users/abril/.conan2/p/protoe7c55155f01b7/p/bin/../lib/libabsl_log_internal_check_op.2508.0.0.dylib' (no such file), '/Users/abril/.conan2/p/protoe7c55155f01b7/p/bin/../lib/libabsl_log_internal_check_op.2508.0.0.dylib' (no such file)
/bin/sh: line 1:  8326 Abort trap: 6           /Users/abril/.conan2/p/protoe7c55155f01b7/p/bin/protoc -I/Users/abril/.conan2/p/b/arrow06a96bb6b006e/b/build/Release/substrait_ep-prefix/src/substrait_ep/proto --cpp_out=/Users/abril/.conan2/p/b/arrow06a96bb6b006e/b/build/Release/substrait_ep-generated /Users/abril/.conan2/p/b/arrow06a96bb6b006e/b/build/Release/substrait_ep-prefix/src/substrait_ep/proto/substrait/algebra.proto
[314/355] Generating substrait_ep-generated/substrait/plan.pb.cc, substrait_ep-generated/substrait/plan.pb.h
FAILED: [code=134] substrait_ep-generated/substrait/plan.pb.cc substrait_ep-generated/substrait/plan.pb.h /Users/abril/.conan2/p/b/arrow06a96bb6b006e/b/build/Release/substrait_ep-generated/substrait/plan.pb.cc /Users/abril/.conan2/p/b/arrow06a96bb6b006e/b/build/Release/substrait_ep-generated/substrait/plan.pb.h 
cd /Users/abril/.conan2/p/b/arrow06a96bb6b006e/b/build/Release && /Users/abril/.conan2/p/protoe7c55155f01b7/p/bin/protoc -I/Users/abril/.conan2/p/b/arrow06a96bb6b006e/b/build/Release/substrait_ep-prefix/src/substrait_ep/proto --cpp_out=/Users/abril/.conan2/p/b/arrow06a96bb6b006e/b/build/Release/substrait_ep-generated /Users/abril/.conan2/p/b/arrow06a96bb6b006e/b/build/Release/substrait_ep-prefix/src/substrait_ep/proto/substrait/plan.proto
dyld[8333]: Library not loaded: @rpath/libabsl_log_internal_check_op.2508.0.0.dylib
  Referenced from: <FD59A416-D3B8-3012-986A-D4ADBE405B84> /Users/abril/.conan2/p/protoe7c55155f01b7/p/bin/protoc-32.1.0
  Reason: tried: '/Users/abril/.conan2/p/protoe7c55155f01b7/p/bin/../lib/libabsl_log_internal_check_op.2508.0.0.dylib' (no such file), '/Users/abril/.conan2/p/protoe7c55155f01b7/p/bin/../lib/libabsl_log_internal_check_op.2508.0.0.dylib' (no such file)
/bin/sh: line 1:  8333 Abort trap: 6           /Users/abril/.conan2/p/protoe7c55155f01b7/p/bin/protoc -I/Users/abril/.conan2/p/b/arrow06a96bb6b006e/b/build/Release/substrait_ep-prefix/src/substrait_ep/proto --cpp_out=/Users/abril/.conan2/p/b/arrow06a96bb6b006e/b/build/Release/substrait_ep-generated /Users/abril/.conan2/p/b/arrow06a96bb6b006e/b/build/Release/substrait_ep-prefix/src/substrait_ep/proto/substrait/plan.proto
[315/355] Generating substrait_ep-generated/substrait/extended_expression.pb.cc, substrait_ep-generated/substrait/extended_expression.pb.h
FAILED: [code=134] substrait_ep-generated/substrait/extended_expression.pb.cc substrait_ep-generated/substrait/extended_expression.pb.h /Users/abril/.conan2/p/b/arrow06a96bb6b006e/b/build/Release/substrait_ep-generated/substrait/extended_expression.pb.cc /Users/abril/.conan2/p/b/arrow06a96bb6b006e/b/build/Release/substrait_ep-generated/substrait/extended_expression.pb.h 
cd /Users/abril/.conan2/p/b/arrow06a96bb6b006e/b/build/Release && /Users/abril/.conan2/p/protoe7c55155f01b7/p/bin/protoc -I/Users/abril/.conan2/p/b/arrow06a96bb6b006e/b/build/Release/substrait_ep-prefix/src/substrait_ep/proto --cpp_out=/Users/abril/.conan2/p/b/arrow06a96bb6b006e/b/build/Release/substrait_ep-generated /Users/abril/.conan2/p/b/arrow06a96bb6b006e/b/build/Release/substrait_ep-prefix/src/substrait_ep/proto/substrait/extended_expression.proto
dyld[8327]: Library not loaded: @rpath/libabsl_log_internal_check_op.2508.0.0.dylib
  Referenced from: <FD59A416-D3B8-3012-986A-D4ADBE405B84> /Users/abril/.conan2/p/protoe7c55155f01b7/p/bin/protoc-32.1.0
  Reason: tried: '/Users/abril/.conan2/p/protoe7c55155f01b7/p/bin/../lib/libabsl_log_internal_check_op.2508.0.0.dylib' (no such file), '/Users/abril/.conan2/p/protoe7c55155f01b7/p/bin/../lib/libabsl_log_internal_check_op.2508.0.0.dylib' (no such file)
/bin/sh: line 1:  8327 Abort trap: 6           /Users/abril/.conan2/p/protoe7c55155f01b7/p/bin/protoc -I/Users/abril/.conan2/p/b/arrow06a96bb6b006e/b/build/Release/substrait_ep-prefix/src/substrait_ep/proto --cpp_out=/Users/abril/.conan2/p/b/arrow06a96bb6b006e/b/build/Release/substrait_ep-generated /Users/abril/.conan2/p/b/arrow06a96bb6b006e/b/build/Release/substrait_ep-prefix/src/substrait_ep/proto/substrait/extended_expression.proto
[316/355] Generating substrait_ep-generated/substrait/extension_rels.pb.cc, substrait_ep-generated/substrait/extension_rels.pb.h
FAILED: [code=134] substrait_ep-generated/substrait/extension_rels.pb.cc substrait_ep-generated/substrait/extension_rels.pb.h /Users/abril/.conan2/p/b/arrow06a96bb6b006e/b/build/Release/substrait_ep-generated/substrait/extension_rels.pb.cc /Users/abril/.conan2/p/b/arrow06a96bb6b006e/b/build/Release/substrait_ep-generated/substrait/extension_rels.pb.h 
cd /Users/abril/.conan2/p/b/arrow06a96bb6b006e/b/build/Release && /Users/abril/.conan2/p/protoe7c55155f01b7/p/bin/protoc -I/Users/abril/.conan2/p/b/arrow06a96bb6b006e/b/build/Release/substrait_ep-prefix/src/substrait_ep/proto -I/Users/abril/.conan2/p/b/arrow06a96bb6b006e/b/src/cpp/proto --cpp_out=/Users/abril/.conan2/p/b/arrow06a96bb6b006e/b/build/Release/substrait_ep-generated /Users/abril/.conan2/p/b/arrow06a96bb6b006e/b/src/cpp/proto/substrait/extension_rels.proto
dyld[8330]: Library not loaded: @rpath/libabsl_log_internal_check_op.2508.0.0.dylib
  Referenced from: <FD59A416-D3B8-3012-986A-D4ADBE405B84> /Users/abril/.conan2/p/protoe7c55155f01b7/p/bin/protoc-32.1.0
  Reason: tried: '/Users/abril/.conan2/p/protoe7c55155f01b7/p/bin/../lib/libabsl_log_internal_check_op.2508.0.0.dylib' (no such file), '/Users/abril/.conan2/p/protoe7c55155f01b7/p/bin/../lib/libabsl_log_internal_check_op.2508.0.0.dylib' (no such file)
/bin/sh: line 1:  8330 Abort trap: 6           /Users/abril/.conan2/p/protoe7c55155f01b7/p/bin/protoc -I/Users/abril/.conan2/p/b/arrow06a96bb6b006e/b/build/Release/substrait_ep-prefix/src/substrait_ep/proto -I/Users/abril/.conan2/p/b/arrow06a96bb6b006e/b/src/cpp/proto --cpp_out=/Users/abril/.conan2/p/b/arrow06a96bb6b006e/b/build/Release/substrait_ep-generated /Users/abril/.conan2/p/b/arrow06a96bb6b006e/b/src/cpp/proto/substrait/extension_rels.proto
[317/355] Generating substrait_ep-generated/substrait/extensions/extensions.pb.cc, substrait_ep-generated/substrait/extensions/extensions.pb.h
FAILED: [code=134] substrait_ep-generated/substrait/extensions/extensions.pb.cc substrait_ep-generated/substrait/extensions/extensions.pb.h /Users/abril/.conan2/p/b/arrow06a96bb6b006e/b/build/Release/substrait_ep-generated/substrait/extensions/extensions.pb.cc /Users/abril/.conan2/p/b/arrow06a96bb6b006e/b/build/Release/substrait_ep-generated/substrait/extensions/extensions.pb.h 
cd /Users/abril/.conan2/p/b/arrow06a96bb6b006e/b/build/Release && /Users/abril/.conan2/p/protoe7c55155f01b7/p/bin/protoc -I/Users/abril/.conan2/p/b/arrow06a96bb6b006e/b/build/Release/substrait_ep-prefix/src/substrait_ep/proto --cpp_out=/Users/abril/.conan2/p/b/arrow06a96bb6b006e/b/build/Release/substrait_ep-generated /Users/abril/.conan2/p/b/arrow06a96bb6b006e/b/build/Release/substrait_ep-prefix/src/substrait_ep/proto/substrait/extensions/extensions.proto
dyld[8331]: Library not loaded: @rpath/libabsl_log_internal_check_op.2508.0.0.dylib
  Referenced from: <FD59A416-D3B8-3012-986A-D4ADBE405B84> /Users/abril/.conan2/p/protoe7c55155f01b7/p/bin/protoc-32.1.0
  Reason: tried: '/Users/abril/.conan2/p/protoe7c55155f01b7/p/bin/../lib/libabsl_log_internal_check_op.2508.0.0.dylib' (no such file), '/Users/abril/.conan2/p/protoe7c55155f01b7/p/bin/../lib/libabsl_log_internal_check_op.2508.0.0.dylib' (no such file)
/bin/sh: line 1:  8331 Abort trap: 6           /Users/abril/.conan2/p/protoe7c55155f01b7/p/bin/protoc -I/Users/abril/.conan2/p/b/arrow06a96bb6b006e/b/build/Release/substrait_ep-prefix/src/substrait_ep/proto --cpp_out=/Users/abril/.conan2/p/b/arrow06a96bb6b006e/b/build/Release/substrait_ep-generated /Users/abril/.conan2/p/b/arrow06a96bb6b006e/b/build/Release/substrait_ep-prefix/src/substrait_ep/proto/substrait/extensions/extensions.proto
[323/355] Building CXX object src/arrow/dataset/CMakeFiles/arrow_dataset_objlib.dir/file_base.cc.o
ninja: build stopped: subcommand failed.

After the fix, this now compiles as expected, but it needs a further fix for the repro option

self.cpp_info.components["libarrow_substrait"].libs = [f"arrow_substrait{suffix}"]
self.cpp_info.components["libarrow_substrait"].requires = ["libparquet", "dataset"]
self.cpp_info.components["libarrow_substrait"].requires = ["libparquet"]
if self.options.dataset_modules:
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This fix is the result of:

  • The user reproduction case points to using -o="*:shared=True" -o="&:with_protobuf=True" -o="&:substrait=True"
  • But the dataset component is only created if the self.options.dataset_modules is not False, and as the option is False by default, Conan raised an exception here because no dataset component existed.
  • The fix just adds the internal requirement when it makes sense

In fact, the proper fix would be to force dataset when substrait is used, as per the sourccode:

add_arrow_lib(arrow_substrait
              CMAKE_PACKAGE_NAME
              ArrowSubstrait
              PKG_CONFIG_NAME
              arrow-substrait
              OUTPUTS
              ARROW_SUBSTRAIT_LIBRARIES
              SOURCES
              ${ARROW_SUBSTRAIT_SRCS}
              SHARED_LINK_FLAGS
              ${ARROW_VERSION_SCRIPT_FLAGS} # Defined in cpp/arrow/CMakeLists.txt
              SHARED_LINK_LIBS
              arrow_dataset_shared
              substrait
              SHARED_INSTALL_INTERFACE_LIBS
              ArrowDataset::arrow_dataset_shared
              STATIC_LINK_LIBS
              arrow_dataset_static
              substrait
              STATIC_INSTALL_INTERFACE_LIBS
              ArrowDataset::arrow_dataset_static
              PRIVATE_INCLUDES
              ${SUBSTRAIT_INCLUDES})

But went for this as it seemed more direct, but happy to change the approach

@jcar87 jcar87 merged commit 0446228 into conan-io:master Nov 17, 2025
12 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants