GH-47748: [C++][Dataset] Fix link error on macOS - #47749

Merged
raulcd merged 4 commits into
apache:mainfrom
kou:cpp-arrow-config-macos
Oct 10, 2025
Merged

GH-47748: [C++][Dataset] Fix link error on macOS#47749
raulcd merged 4 commits into
apache:mainfrom
kou:cpp-arrow-config-macos

Conversation

@kou

@koukou commented Oct 8, 2025

Copy link
Copy Markdown
Member

Rationale for this change

There are link errors with build options for JNI on macOS.

What changes are included in this PR?

ARROW_BUNDLED_STATIC_LIBS has CMake target names defined in Apache Arrow not find_package()-ed target names. So we should use aws-c-common not AWS::aws-c-common.

Recent aws-c-common or something use the Network framework. So add Network to Arrow::arrow_bundled_dependencies dependencies.

Don't use compute/kernels/temporal_internal.cc in libarrow.dylib and libarrow_compute.dylib to avoid duplicated symbols error.

Are these changes tested?

Yes.

Are there any user-facing changes?

Yes.

@github-actions

Copy link
Copy Markdown

⚠️ GitHub issue #47748has been automatically assigned in GitHub to PR creator.

@raulcdraulcd left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

This is beyond my comprehension, but is this because of a change we have introduced recently?
I am happy for this to be merged, just trying to understand :)

@github-actionsgithub-actionsBot added awaiting changes Awaiting changes and removed awaiting committer review Awaiting committer review labels Oct 8, 2025
@kou

kou commented Oct 9, 2025

Copy link
Copy Markdown
MemberAuthor

No... It was introduced in 2022...: #13911

BTW, this was not enough:

https://github.com/kou/arrow-java/actions/runs/18334827827/job/52217628114#step:12:2474

 : && /usr/bin/c++ -O3 -DNDEBUG -arch arm64 -mmacosx-version-min=14.0 -dynamiclib -Wl,-headerpad_max_install_names -o dataset/libarrow_dataset_jni.dylib -install_name @rpath/libarrow_dataset_jni.dylib dataset/CMakeFiles/arrow_java_jni_dataset.dir/src/main/cpp/jni_wrapper.cc.o dataset/CMakeFiles/arrow_java_jni_dataset.dir/src/main/cpp/jni_util.cc.o /Users/runner/work/arrow-java/arrow-java/build/cpp-install/lib/libarrow_dataset.a /Users/runner/work/arrow-java/arrow-java/build/cpp-install/lib/libarrow_substrait.a /Users/runner/work/arrow-java/arrow-java/build/cpp-install/lib/libarrow_dataset.a /Users/runner/work/arrow-java/arrow-java/build/cpp-install/lib/libparquet.a /opt/homebrew/Cellar/thrift/0.22.0/lib/libthrift.a /Users/runner/work/arrow-java/arrow-java/build/cpp-install/lib/libarrow_acero.a /Users/runner/work/arrow-java/arrow-java/build/cpp-install/lib/libarrow_compute.a /Users/runner/work/arrow-java/arrow-java/build/cpp-install/lib/libarrow.a /Users/runner/work/arrow-java/arrow-java/build/cpp-install/lib/libarrow_bundled_dependencies.a -framework CoreFoundation -framework Security /opt/homebrew/opt/openssl@3/lib/libssl.a /opt/homebrew/opt/openssl@3/lib/libcrypto.a /opt/homebrew/opt/lz4/lib/liblz4.a /opt/homebrew/lib/libsnappy.a /Applications/Xcode_15.4.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/lib/libz.tbd /opt/homebrew/lib/libzstd.a /Applications/Xcode_15.4.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/lib/libcurl.tbd /Applications/Xcode_15.4.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/lib/libcurl.tbd /opt/homebrew/lib/libutf8proc.a && :
ld: warning: ignoring duplicate libraries: '/Users/runner/work/arrow-java/arrow-java/build/cpp-install/lib/libarrow_dataset.a'
Undefined symbols for architecture arm64:
"__nw_content_context_default_message", referenced from:
_s_socket_write_fn in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"__nw_parameters_configure_protocol_disable", referenced from:
_s_setup_socket_params in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
_s_setup_socket_params in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_connection_cancel", referenced from:
_s_process_socket_cancel_task in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_connection_copy_current_path", referenced from:
_s_process_connection_state_changed_task in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_connection_copy_endpoint", referenced from:
_s_process_listener_success_task in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_connection_copy_protocol_metadata", referenced from:
_s_process_connection_state_changed_task in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_connection_create", referenced from:
_s_socket_connect_fn in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_connection_receive", referenced from:
_s_schedule_next_read in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_connection_send", referenced from:
_s_socket_write_fn in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_connection_set_queue", referenced from:
_s_client_set_dispatch_queue in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_connection_set_state_changed_handler", referenced from:
_s_socket_connect_fn in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
_s_process_listener_success_task in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_connection_start", referenced from:
_s_socket_connect_fn in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
_s_socket_assign_to_event_loop_fn in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_content_context_get_is_final", referenced from:
___s_schedule_next_read_block_invoke in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_endpoint_create_address", referenced from:
_s_socket_connect_fn in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
_s_socket_bind_fn in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_endpoint_get_hostname", referenced from:
_s_process_connection_state_changed_task in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
_s_process_listener_success_task in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_endpoint_get_port", referenced from:
_s_process_connection_state_changed_task in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
_s_process_listener_success_task in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_error_get_error_code", referenced from:
_s_handle_connection_state_changed_fn in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
___s_socket_start_accept_fn_block_invoke in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
___s_schedule_next_read_block_invoke in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
___s_socket_write_fn_block_invoke in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_listener_cancel", referenced from:
_s_socket_stop_accept_fn in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
_s_process_socket_cancel_task in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_listener_create", referenced from:
_s_socket_listen_fn in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_listener_get_port", referenced from:
_s_process_listener_state_changed_task in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_listener_set_new_connection_handler", referenced from:
_s_socket_start_accept_fn in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_listener_set_queue", referenced from:
_s_listener_set_dispatch_queue in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_listener_set_state_changed_handler", referenced from:
_s_socket_start_accept_fn in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_listener_start", referenced from:
_s_socket_start_accept_fn in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_parameters_create_secure_tcp", referenced from:
_s_setup_socket_params in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_parameters_create_secure_udp", referenced from:
_s_setup_socket_params in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_parameters_set_local_endpoint", referenced from:
_s_socket_bind_fn in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_parameters_set_reuse_local_address", referenced from:
_s_setup_socket_params in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_path_copy_effective_local_endpoint", referenced from:
_s_process_connection_state_changed_task in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_protocol_copy_tls_definition", referenced from:
_s_process_connection_state_changed_task in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_release", referenced from:
_s_socket_impl_destroy in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
_s_socket_connect_fn in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
_s_socket_bind_fn in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
_s_setup_socket_params in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
_s_process_connection_state_changed_task in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
_s_process_connection_state_changed_task in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
_s_process_connection_state_changed_task in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
...
"_nw_retain", referenced from:
_s_socket_connect_fn in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
_s_socket_listen_fn in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
___s_socket_start_accept_fn_block_invoke_2 in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_tcp_options_set_connection_timeout", referenced from:
_s_setup_tcp_options in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_tcp_options_set_enable_keepalive", referenced from:
_s_setup_tcp_options in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_tcp_options_set_keepalive_count", referenced from:
_s_setup_tcp_options in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_tcp_options_set_keepalive_idle_time", referenced from:
_s_setup_tcp_options in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_tcp_options_set_keepalive_interval", referenced from:
_s_setup_tcp_options in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_tcp_options_set_maximum_segment_size", referenced from:
_s_setup_tcp_options in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_tls_copy_sec_protocol_options", referenced from:
___s_setup_socket_params_block_invoke in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
ld: symbol(s) not found for architecture arm64

It seems that we need the Network framework too.

@github-actionsgithub-actionsBot added awaiting change review Awaiting change review and removed awaiting changes Awaiting changes labels Oct 9, 2025
@kou

kou commented Oct 9, 2025

Copy link
Copy Markdown
MemberAuthor

https://github.com/kou/arrow-java/actions/runs/18334827827/job/52321140360#step:12:2475

 FAILED: [code=1] dataset/libarrow_dataset_jni.dylib : && /usr/bin/c++ -O3 -DNDEBUG -arch arm64 -mmacosx-version-min=14.0 -dynamiclib -Wl,-headerpad_max_install_names -o dataset/libarrow_dataset_jni.dylib -install_name @rpath/libarrow_dataset_jni.dylib dataset/CMakeFiles/arrow_java_jni_dataset.dir/src/main/cpp/jni_wrapper.cc.o dataset/CMakeFiles/arrow_java_jni_dataset.dir/src/main/cpp/jni_util.cc.o /Users/runner/work/arrow-java/arrow-java/build/cpp-install/lib/libarrow_dataset.a /Users/runner/work/arrow-java/arrow-java/build/cpp-install/lib/libarrow_substrait.a /Users/runner/work/arrow-java/arrow-java/build/cpp-install/lib/libarrow_dataset.a /Users/runner/work/arrow-java/arrow-java/build/cpp-install/lib/libparquet.a /opt/homebrew/Cellar/thrift/0.22.0/lib/libthrift.a /Users/runner/work/arrow-java/arrow-java/build/cpp-install/lib/libarrow_acero.a /Users/runner/work/arrow-java/arrow-java/build/cpp-install/lib/libarrow_compute.a /Users/runner/work/arrow-java/arrow-java/build/cpp-install/lib/libarrow.a /Users/runner/work/arrow-java/arrow-java/build/cpp-install/lib/libarrow_bundled_dependencies.a -framework CoreFoundation -framework Network -framework Security /opt/homebrew/opt/openssl@3/lib/libssl.a /opt/homebrew/opt/openssl@3/lib/libcrypto.a /opt/homebrew/opt/lz4/lib/liblz4.a /opt/homebrew/lib/libsnappy.a /Applications/Xcode_15.4.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/lib/libz.tbd /opt/homebrew/lib/libzstd.a /Applications/Xcode_15.4.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/lib/libcurl.tbd /Applications/Xcode_15.4.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/lib/libcurl.tbd /opt/homebrew/lib/libutf8proc.a && :
ld: warning: ignoring duplicate libraries: '/Users/runner/work/arrow-java/arrow-java/build/cpp-install/lib/libarrow_dataset.a'
duplicate symbol '__ZN5arrow7compute8internal10LocateZoneENSt3__117basic_string_viewIcNS2_11char_traitsIcEEEE' in:
/Users/runner/work/arrow-java/arrow-java/build/cpp-install/lib/libarrow.a[10](unity_2_cxx.cxx.o)
/Users/runner/work/arrow-java/arrow-java/build/cpp-install/lib/libarrow_compute.a[4](unity_3_cxx.cxx.o)
ld: 1 duplicate symbols
clang: error: linker command failed with exit code 1 (use -v to see invocation)

arrow::compute::internal::LocateZone() is duplicated.

@koukou added the CI: Extra: C++ Run extra C++ CI label Oct 9, 2025
@koukou removed the CI: Extra: C++ Run extra C++ CI label Oct 9, 2025
@koukou changed the title GH-47748: [C++] Fix bundled aws-c-common detectionGH-47748: [C++][Dataset] Fix link error on macOSOct 9, 2025
@kou

kou commented Oct 9, 2025

Copy link
Copy Markdown
MemberAuthor

Fixed: https://github.com/kou/arrow-java/actions/runs/18370527401/job/52334724160#step:12:2489

 + cmake --build /Users/runner/work/arrow-java/arrow-java/build/java_jni --target install
[0/1] Install the project...
-- Install configuration: "release"
-- Installing: /Users/runner/work/arrow-java/arrow-java/build/java_jni/java-jni/lib/arrow_cdata_jni/aarch_64/libarrow_cdata_jni.dylib
-- Installing: /Users/runner/work/arrow-java/arrow-java/build/java_jni/java-jni/lib/arrow_dataset_jni/aarch_64/libarrow_dataset_jni.dylib
-- Installing: /Users/runner/work/arrow-java/arrow-java/build/java_jni/java-jni/lib/gandiva_jni/aarch_64/libgandiva_jni.dylib
-- Installing: /Users/runner/work/arrow-java/arrow-java/build/java_jni/java-jni/lib/arrow_orc_jni/aarch_64/libarrow_orc_jni.dylib

This is ready.

This error is another problem that should be fixed in apache/arrow-java:

https://github.com/kou/arrow-java/actions/runs/18370527401/job/52334724160#step:12:2535

 Error: Unexpected shared dependency found in arrow_dataset_jni/aarch_64/libarrow_dataset_jni.dylib: `Network`

compute/kernels/scalar_temporal_binary.cc
compute/kernels/scalar_temporal_unary.cc
compute/kernels/scalar_validity.cc
compute/kernels/temporal_internal.cc

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

that's a good find! Thanks for the fix!
Does this kernel has to be part of libarrow core, can't it be part of libarrow_compute instead? Maybe @rok
We should try to keep on libarrow only the core kernels (like cast, etcetera) that are required for libarrow.

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

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

I think that we need this in libarrow.so because

#include"arrow/compute/kernels/temporal_internal.h"
uses this.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

ok, let's merge this and maybe we could explore whether this is "really necessary" as a core kernel on a separate issue? @rok ?

@github-actionsgithub-actionsBot added awaiting changes Awaiting changes and removed awaiting change review Awaiting change review labels Oct 10, 2025
@raulcd
raulcd merged commit 7700dd4 into apache:mainOct 10, 2025
48 checks passed
@raulcdraulcd removed the awaiting changes Awaiting changes label Oct 10, 2025
@github-actionsgithub-actionsBot added the awaiting merge Awaiting merge label Oct 10, 2025
raulcd pushed a commit that referenced this pull request Oct 10, 2025
### Rationale for this change
There are link errors with build options for JNI on macOS.
### What changes are included in this PR?
`ARROW_BUNDLED_STATIC_LIBS` has CMake target names defined in Apache Arrow not `find_package()`-ed target names. So we should use `aws-c-common` not `AWS::aws-c-common`.
Recent aws-c-common or something use the Network framework. So add `Network` to `Arrow::arrow_bundled_dependencies` dependencies.
Don't use `compute/kernels/temporal_internal.cc` in `libarrow.dylib` and `libarrow_compute.dylib` to avoid duplicated symbols error.
### Are these changes tested?
Yes.
### Are there any user-facing changes?
Yes.
* GitHub Issue: #47748
Authored-by: Sutou Kouhei <kou@clear-code.com>
Signed-off-by: Raúl Cumplido <raulcumplido@gmail.com>
@kou
kou deleted the cpp-arrow-config-macos branch October 10, 2025 12:43
@conbench-apache-arrow

Copy link
Copy Markdown

After merging your PR, Conbench analyzed the 3 benchmarking runs that have been run so far on merge-commit 7700dd4.

There were no benchmark performance regressions. 🎉

The full Conbench report has more details.

zanmato1984 pushed a commit to zanmato1984/arrow that referenced this pull request Oct 15, 2025
### Rationale for this change
There are link errors with build options for JNI on macOS.
### What changes are included in this PR?
`ARROW_BUNDLED_STATIC_LIBS` has CMake target names defined in Apache Arrow not `find_package()`-ed target names. So we should use `aws-c-common` not `AWS::aws-c-common`.
Recent aws-c-common or something use the Network framework. So add `Network` to `Arrow::arrow_bundled_dependencies` dependencies.
Don't use `compute/kernels/temporal_internal.cc` in `libarrow.dylib` and `libarrow_compute.dylib` to avoid duplicated symbols error.
### Are these changes tested?
Yes.
### Are there any user-facing changes?
Yes.
* GitHub Issue: apache#47748
Authored-by: Sutou Kouhei <kou@clear-code.com>
Signed-off-by: Raúl Cumplido <raulcumplido@gmail.com>
Mottl pushed a commit to Mottl/arrow that referenced this pull request May 26, 2026
### Rationale for this change
There are link errors with build options for JNI on macOS.
### What changes are included in this PR?
`ARROW_BUNDLED_STATIC_LIBS` has CMake target names defined in Apache Arrow not `find_package()`-ed target names. So we should use `aws-c-common` not `AWS::aws-c-common`.
Recent aws-c-common or something use the Network framework. So add `Network` to `Arrow::arrow_bundled_dependencies` dependencies.
Don't use `compute/kernels/temporal_internal.cc` in `libarrow.dylib` and `libarrow_compute.dylib` to avoid duplicated symbols error.
### Are these changes tested?
Yes.
### Are there any user-facing changes?
Yes.
* GitHub Issue: apache#47748
Authored-by: Sutou Kouhei <kou@clear-code.com>
Signed-off-by: Raúl Cumplido <raulcumplido@gmail.com>
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@kou@raulcd
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

GH-47748: [C++][Dataset] Fix link error on macOS - #47749

Merged
raulcd merged 4 commits into
apache:mainfrom
kou:cpp-arrow-config-macos
Oct 10, 2025
Merged

GH-47748: [C++][Dataset] Fix link error on macOS#47749
raulcd merged 4 commits into
apache:mainfrom
kou:cpp-arrow-config-macos

Conversation

@kou

@koukou commented Oct 8, 2025

Copy link
Copy Markdown
Member

Rationale for this change

There are link errors with build options for JNI on macOS.

What changes are included in this PR?

ARROW_BUNDLED_STATIC_LIBS has CMake target names defined in Apache Arrow not find_package()-ed target names. So we should use aws-c-common not AWS::aws-c-common.

Recent aws-c-common or something use the Network framework. So add Network to Arrow::arrow_bundled_dependencies dependencies.

Don't use compute/kernels/temporal_internal.cc in libarrow.dylib and libarrow_compute.dylib to avoid duplicated symbols error.

Are these changes tested?

Yes.

Are there any user-facing changes?

Yes.

@github-actions

Copy link
Copy Markdown

⚠️ GitHub issue #47748has been automatically assigned in GitHub to PR creator.

@raulcdraulcd left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

This is beyond my comprehension, but is this because of a change we have introduced recently?
I am happy for this to be merged, just trying to understand :)

@github-actionsgithub-actionsBot added awaiting changes Awaiting changes and removed awaiting committer review Awaiting committer review labels Oct 8, 2025
@kou

kou commented Oct 9, 2025

Copy link
Copy Markdown
MemberAuthor

No... It was introduced in 2022...: #13911

BTW, this was not enough:

https://github.com/kou/arrow-java/actions/runs/18334827827/job/52217628114#step:12:2474

 : && /usr/bin/c++ -O3 -DNDEBUG -arch arm64 -mmacosx-version-min=14.0 -dynamiclib -Wl,-headerpad_max_install_names -o dataset/libarrow_dataset_jni.dylib -install_name @rpath/libarrow_dataset_jni.dylib dataset/CMakeFiles/arrow_java_jni_dataset.dir/src/main/cpp/jni_wrapper.cc.o dataset/CMakeFiles/arrow_java_jni_dataset.dir/src/main/cpp/jni_util.cc.o /Users/runner/work/arrow-java/arrow-java/build/cpp-install/lib/libarrow_dataset.a /Users/runner/work/arrow-java/arrow-java/build/cpp-install/lib/libarrow_substrait.a /Users/runner/work/arrow-java/arrow-java/build/cpp-install/lib/libarrow_dataset.a /Users/runner/work/arrow-java/arrow-java/build/cpp-install/lib/libparquet.a /opt/homebrew/Cellar/thrift/0.22.0/lib/libthrift.a /Users/runner/work/arrow-java/arrow-java/build/cpp-install/lib/libarrow_acero.a /Users/runner/work/arrow-java/arrow-java/build/cpp-install/lib/libarrow_compute.a /Users/runner/work/arrow-java/arrow-java/build/cpp-install/lib/libarrow.a /Users/runner/work/arrow-java/arrow-java/build/cpp-install/lib/libarrow_bundled_dependencies.a -framework CoreFoundation -framework Security /opt/homebrew/opt/openssl@3/lib/libssl.a /opt/homebrew/opt/openssl@3/lib/libcrypto.a /opt/homebrew/opt/lz4/lib/liblz4.a /opt/homebrew/lib/libsnappy.a /Applications/Xcode_15.4.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/lib/libz.tbd /opt/homebrew/lib/libzstd.a /Applications/Xcode_15.4.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/lib/libcurl.tbd /Applications/Xcode_15.4.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/lib/libcurl.tbd /opt/homebrew/lib/libutf8proc.a && :
ld: warning: ignoring duplicate libraries: '/Users/runner/work/arrow-java/arrow-java/build/cpp-install/lib/libarrow_dataset.a'
Undefined symbols for architecture arm64:
"__nw_content_context_default_message", referenced from:
_s_socket_write_fn in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"__nw_parameters_configure_protocol_disable", referenced from:
_s_setup_socket_params in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
_s_setup_socket_params in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_connection_cancel", referenced from:
_s_process_socket_cancel_task in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_connection_copy_current_path", referenced from:
_s_process_connection_state_changed_task in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_connection_copy_endpoint", referenced from:
_s_process_listener_success_task in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_connection_copy_protocol_metadata", referenced from:
_s_process_connection_state_changed_task in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_connection_create", referenced from:
_s_socket_connect_fn in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_connection_receive", referenced from:
_s_schedule_next_read in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_connection_send", referenced from:
_s_socket_write_fn in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_connection_set_queue", referenced from:
_s_client_set_dispatch_queue in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_connection_set_state_changed_handler", referenced from:
_s_socket_connect_fn in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
_s_process_listener_success_task in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_connection_start", referenced from:
_s_socket_connect_fn in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
_s_socket_assign_to_event_loop_fn in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_content_context_get_is_final", referenced from:
___s_schedule_next_read_block_invoke in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_endpoint_create_address", referenced from:
_s_socket_connect_fn in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
_s_socket_bind_fn in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_endpoint_get_hostname", referenced from:
_s_process_connection_state_changed_task in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
_s_process_listener_success_task in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_endpoint_get_port", referenced from:
_s_process_connection_state_changed_task in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
_s_process_listener_success_task in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_error_get_error_code", referenced from:
_s_handle_connection_state_changed_fn in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
___s_socket_start_accept_fn_block_invoke in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
___s_schedule_next_read_block_invoke in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
___s_socket_write_fn_block_invoke in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_listener_cancel", referenced from:
_s_socket_stop_accept_fn in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
_s_process_socket_cancel_task in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_listener_create", referenced from:
_s_socket_listen_fn in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_listener_get_port", referenced from:
_s_process_listener_state_changed_task in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_listener_set_new_connection_handler", referenced from:
_s_socket_start_accept_fn in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_listener_set_queue", referenced from:
_s_listener_set_dispatch_queue in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_listener_set_state_changed_handler", referenced from:
_s_socket_start_accept_fn in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_listener_start", referenced from:
_s_socket_start_accept_fn in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_parameters_create_secure_tcp", referenced from:
_s_setup_socket_params in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_parameters_create_secure_udp", referenced from:
_s_setup_socket_params in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_parameters_set_local_endpoint", referenced from:
_s_socket_bind_fn in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_parameters_set_reuse_local_address", referenced from:
_s_setup_socket_params in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_path_copy_effective_local_endpoint", referenced from:
_s_process_connection_state_changed_task in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_protocol_copy_tls_definition", referenced from:
_s_process_connection_state_changed_task in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_release", referenced from:
_s_socket_impl_destroy in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
_s_socket_connect_fn in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
_s_socket_bind_fn in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
_s_setup_socket_params in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
_s_process_connection_state_changed_task in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
_s_process_connection_state_changed_task in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
_s_process_connection_state_changed_task in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
...
"_nw_retain", referenced from:
_s_socket_connect_fn in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
_s_socket_listen_fn in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
___s_socket_start_accept_fn_block_invoke_2 in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_tcp_options_set_connection_timeout", referenced from:
_s_setup_tcp_options in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_tcp_options_set_enable_keepalive", referenced from:
_s_setup_tcp_options in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_tcp_options_set_keepalive_count", referenced from:
_s_setup_tcp_options in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_tcp_options_set_keepalive_idle_time", referenced from:
_s_setup_tcp_options in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_tcp_options_set_keepalive_interval", referenced from:
_s_setup_tcp_options in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_tcp_options_set_maximum_segment_size", referenced from:
_s_setup_tcp_options in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_tls_copy_sec_protocol_options", referenced from:
___s_setup_socket_params_block_invoke in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
ld: symbol(s) not found for architecture arm64

It seems that we need the Network framework too.

@github-actionsgithub-actionsBot added awaiting change review Awaiting change review and removed awaiting changes Awaiting changes labels Oct 9, 2025
@kou

kou commented Oct 9, 2025

Copy link
Copy Markdown
MemberAuthor

https://github.com/kou/arrow-java/actions/runs/18334827827/job/52321140360#step:12:2475

 FAILED: [code=1] dataset/libarrow_dataset_jni.dylib : && /usr/bin/c++ -O3 -DNDEBUG -arch arm64 -mmacosx-version-min=14.0 -dynamiclib -Wl,-headerpad_max_install_names -o dataset/libarrow_dataset_jni.dylib -install_name @rpath/libarrow_dataset_jni.dylib dataset/CMakeFiles/arrow_java_jni_dataset.dir/src/main/cpp/jni_wrapper.cc.o dataset/CMakeFiles/arrow_java_jni_dataset.dir/src/main/cpp/jni_util.cc.o /Users/runner/work/arrow-java/arrow-java/build/cpp-install/lib/libarrow_dataset.a /Users/runner/work/arrow-java/arrow-java/build/cpp-install/lib/libarrow_substrait.a /Users/runner/work/arrow-java/arrow-java/build/cpp-install/lib/libarrow_dataset.a /Users/runner/work/arrow-java/arrow-java/build/cpp-install/lib/libparquet.a /opt/homebrew/Cellar/thrift/0.22.0/lib/libthrift.a /Users/runner/work/arrow-java/arrow-java/build/cpp-install/lib/libarrow_acero.a /Users/runner/work/arrow-java/arrow-java/build/cpp-install/lib/libarrow_compute.a /Users/runner/work/arrow-java/arrow-java/build/cpp-install/lib/libarrow.a /Users/runner/work/arrow-java/arrow-java/build/cpp-install/lib/libarrow_bundled_dependencies.a -framework CoreFoundation -framework Network -framework Security /opt/homebrew/opt/openssl@3/lib/libssl.a /opt/homebrew/opt/openssl@3/lib/libcrypto.a /opt/homebrew/opt/lz4/lib/liblz4.a /opt/homebrew/lib/libsnappy.a /Applications/Xcode_15.4.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/lib/libz.tbd /opt/homebrew/lib/libzstd.a /Applications/Xcode_15.4.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/lib/libcurl.tbd /Applications/Xcode_15.4.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/lib/libcurl.tbd /opt/homebrew/lib/libutf8proc.a && :
ld: warning: ignoring duplicate libraries: '/Users/runner/work/arrow-java/arrow-java/build/cpp-install/lib/libarrow_dataset.a'
duplicate symbol '__ZN5arrow7compute8internal10LocateZoneENSt3__117basic_string_viewIcNS2_11char_traitsIcEEEE' in:
/Users/runner/work/arrow-java/arrow-java/build/cpp-install/lib/libarrow.a[10](unity_2_cxx.cxx.o)
/Users/runner/work/arrow-java/arrow-java/build/cpp-install/lib/libarrow_compute.a[4](unity_3_cxx.cxx.o)
ld: 1 duplicate symbols
clang: error: linker command failed with exit code 1 (use -v to see invocation)

arrow::compute::internal::LocateZone() is duplicated.

@koukou added the CI: Extra: C++ Run extra C++ CI label Oct 9, 2025
@koukou removed the CI: Extra: C++ Run extra C++ CI label Oct 9, 2025
@koukou changed the title GH-47748: [C++] Fix bundled aws-c-common detectionGH-47748: [C++][Dataset] Fix link error on macOSOct 9, 2025
@kou

kou commented Oct 9, 2025

Copy link
Copy Markdown
MemberAuthor

Fixed: https://github.com/kou/arrow-java/actions/runs/18370527401/job/52334724160#step:12:2489

 + cmake --build /Users/runner/work/arrow-java/arrow-java/build/java_jni --target install
[0/1] Install the project...
-- Install configuration: "release"
-- Installing: /Users/runner/work/arrow-java/arrow-java/build/java_jni/java-jni/lib/arrow_cdata_jni/aarch_64/libarrow_cdata_jni.dylib
-- Installing: /Users/runner/work/arrow-java/arrow-java/build/java_jni/java-jni/lib/arrow_dataset_jni/aarch_64/libarrow_dataset_jni.dylib
-- Installing: /Users/runner/work/arrow-java/arrow-java/build/java_jni/java-jni/lib/gandiva_jni/aarch_64/libgandiva_jni.dylib
-- Installing: /Users/runner/work/arrow-java/arrow-java/build/java_jni/java-jni/lib/arrow_orc_jni/aarch_64/libarrow_orc_jni.dylib

This is ready.

This error is another problem that should be fixed in apache/arrow-java:

https://github.com/kou/arrow-java/actions/runs/18370527401/job/52334724160#step:12:2535

 Error: Unexpected shared dependency found in arrow_dataset_jni/aarch_64/libarrow_dataset_jni.dylib: `Network`

compute/kernels/scalar_temporal_binary.cc
compute/kernels/scalar_temporal_unary.cc
compute/kernels/scalar_validity.cc
compute/kernels/temporal_internal.cc

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

that's a good find! Thanks for the fix!
Does this kernel has to be part of libarrow core, can't it be part of libarrow_compute instead? Maybe @rok
We should try to keep on libarrow only the core kernels (like cast, etcetera) that are required for libarrow.

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

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

I think that we need this in libarrow.so because

#include"arrow/compute/kernels/temporal_internal.h"
uses this.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

ok, let's merge this and maybe we could explore whether this is "really necessary" as a core kernel on a separate issue? @rok ?

@github-actionsgithub-actionsBot added awaiting changes Awaiting changes and removed awaiting change review Awaiting change review labels Oct 10, 2025
@raulcd
raulcd merged commit 7700dd4 into apache:mainOct 10, 2025
48 checks passed
@raulcdraulcd removed the awaiting changes Awaiting changes label Oct 10, 2025
@github-actionsgithub-actionsBot added the awaiting merge Awaiting merge label Oct 10, 2025
raulcd pushed a commit that referenced this pull request Oct 10, 2025
### Rationale for this change
There are link errors with build options for JNI on macOS.
### What changes are included in this PR?
`ARROW_BUNDLED_STATIC_LIBS` has CMake target names defined in Apache Arrow not `find_package()`-ed target names. So we should use `aws-c-common` not `AWS::aws-c-common`.
Recent aws-c-common or something use the Network framework. So add `Network` to `Arrow::arrow_bundled_dependencies` dependencies.
Don't use `compute/kernels/temporal_internal.cc` in `libarrow.dylib` and `libarrow_compute.dylib` to avoid duplicated symbols error.
### Are these changes tested?
Yes.
### Are there any user-facing changes?
Yes.
* GitHub Issue: #47748
Authored-by: Sutou Kouhei <kou@clear-code.com>
Signed-off-by: Raúl Cumplido <raulcumplido@gmail.com>
@kou
kou deleted the cpp-arrow-config-macos branch October 10, 2025 12:43
@conbench-apache-arrow

Copy link
Copy Markdown

After merging your PR, Conbench analyzed the 3 benchmarking runs that have been run so far on merge-commit 7700dd4.

There were no benchmark performance regressions. 🎉

The full Conbench report has more details.

zanmato1984 pushed a commit to zanmato1984/arrow that referenced this pull request Oct 15, 2025
### Rationale for this change
There are link errors with build options for JNI on macOS.
### What changes are included in this PR?
`ARROW_BUNDLED_STATIC_LIBS` has CMake target names defined in Apache Arrow not `find_package()`-ed target names. So we should use `aws-c-common` not `AWS::aws-c-common`.
Recent aws-c-common or something use the Network framework. So add `Network` to `Arrow::arrow_bundled_dependencies` dependencies.
Don't use `compute/kernels/temporal_internal.cc` in `libarrow.dylib` and `libarrow_compute.dylib` to avoid duplicated symbols error.
### Are these changes tested?
Yes.
### Are there any user-facing changes?
Yes.
* GitHub Issue: apache#47748
Authored-by: Sutou Kouhei <kou@clear-code.com>
Signed-off-by: Raúl Cumplido <raulcumplido@gmail.com>
Mottl pushed a commit to Mottl/arrow that referenced this pull request May 26, 2026
### Rationale for this change
There are link errors with build options for JNI on macOS.
### What changes are included in this PR?
`ARROW_BUNDLED_STATIC_LIBS` has CMake target names defined in Apache Arrow not `find_package()`-ed target names. So we should use `aws-c-common` not `AWS::aws-c-common`.
Recent aws-c-common or something use the Network framework. So add `Network` to `Arrow::arrow_bundled_dependencies` dependencies.
Don't use `compute/kernels/temporal_internal.cc` in `libarrow.dylib` and `libarrow_compute.dylib` to avoid duplicated symbols error.
### Are these changes tested?
Yes.
### Are there any user-facing changes?
Yes.
* GitHub Issue: apache#47748
Authored-by: Sutou Kouhei <kou@clear-code.com>
Signed-off-by: Raúl Cumplido <raulcumplido@gmail.com>
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@kou@raulcd
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

GH-47748: [C++][Dataset] Fix link error on macOS - #47749

Merged
raulcd merged 4 commits into
apache:mainfrom
kou:cpp-arrow-config-macos
Oct 10, 2025
Merged

GH-47748: [C++][Dataset] Fix link error on macOS#47749
raulcd merged 4 commits into
apache:mainfrom
kou:cpp-arrow-config-macos

Conversation

@kou

@koukou commented Oct 8, 2025

Copy link
Copy Markdown
Member

Rationale for this change

There are link errors with build options for JNI on macOS.

What changes are included in this PR?

ARROW_BUNDLED_STATIC_LIBS has CMake target names defined in Apache Arrow not find_package()-ed target names. So we should use aws-c-common not AWS::aws-c-common.

Recent aws-c-common or something use the Network framework. So add Network to Arrow::arrow_bundled_dependencies dependencies.

Don't use compute/kernels/temporal_internal.cc in libarrow.dylib and libarrow_compute.dylib to avoid duplicated symbols error.

Are these changes tested?

Yes.

Are there any user-facing changes?

Yes.

@github-actions

Copy link
Copy Markdown

⚠️ GitHub issue #47748has been automatically assigned in GitHub to PR creator.

@raulcdraulcd left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

This is beyond my comprehension, but is this because of a change we have introduced recently?
I am happy for this to be merged, just trying to understand :)

@github-actionsgithub-actionsBot added awaiting changes Awaiting changes and removed awaiting committer review Awaiting committer review labels Oct 8, 2025
@kou

kou commented Oct 9, 2025

Copy link
Copy Markdown
MemberAuthor

No... It was introduced in 2022...: #13911

BTW, this was not enough:

https://github.com/kou/arrow-java/actions/runs/18334827827/job/52217628114#step:12:2474

 : && /usr/bin/c++ -O3 -DNDEBUG -arch arm64 -mmacosx-version-min=14.0 -dynamiclib -Wl,-headerpad_max_install_names -o dataset/libarrow_dataset_jni.dylib -install_name @rpath/libarrow_dataset_jni.dylib dataset/CMakeFiles/arrow_java_jni_dataset.dir/src/main/cpp/jni_wrapper.cc.o dataset/CMakeFiles/arrow_java_jni_dataset.dir/src/main/cpp/jni_util.cc.o /Users/runner/work/arrow-java/arrow-java/build/cpp-install/lib/libarrow_dataset.a /Users/runner/work/arrow-java/arrow-java/build/cpp-install/lib/libarrow_substrait.a /Users/runner/work/arrow-java/arrow-java/build/cpp-install/lib/libarrow_dataset.a /Users/runner/work/arrow-java/arrow-java/build/cpp-install/lib/libparquet.a /opt/homebrew/Cellar/thrift/0.22.0/lib/libthrift.a /Users/runner/work/arrow-java/arrow-java/build/cpp-install/lib/libarrow_acero.a /Users/runner/work/arrow-java/arrow-java/build/cpp-install/lib/libarrow_compute.a /Users/runner/work/arrow-java/arrow-java/build/cpp-install/lib/libarrow.a /Users/runner/work/arrow-java/arrow-java/build/cpp-install/lib/libarrow_bundled_dependencies.a -framework CoreFoundation -framework Security /opt/homebrew/opt/openssl@3/lib/libssl.a /opt/homebrew/opt/openssl@3/lib/libcrypto.a /opt/homebrew/opt/lz4/lib/liblz4.a /opt/homebrew/lib/libsnappy.a /Applications/Xcode_15.4.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/lib/libz.tbd /opt/homebrew/lib/libzstd.a /Applications/Xcode_15.4.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/lib/libcurl.tbd /Applications/Xcode_15.4.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/lib/libcurl.tbd /opt/homebrew/lib/libutf8proc.a && :
ld: warning: ignoring duplicate libraries: '/Users/runner/work/arrow-java/arrow-java/build/cpp-install/lib/libarrow_dataset.a'
Undefined symbols for architecture arm64:
"__nw_content_context_default_message", referenced from:
_s_socket_write_fn in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"__nw_parameters_configure_protocol_disable", referenced from:
_s_setup_socket_params in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
_s_setup_socket_params in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_connection_cancel", referenced from:
_s_process_socket_cancel_task in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_connection_copy_current_path", referenced from:
_s_process_connection_state_changed_task in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_connection_copy_endpoint", referenced from:
_s_process_listener_success_task in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_connection_copy_protocol_metadata", referenced from:
_s_process_connection_state_changed_task in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_connection_create", referenced from:
_s_socket_connect_fn in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_connection_receive", referenced from:
_s_schedule_next_read in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_connection_send", referenced from:
_s_socket_write_fn in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_connection_set_queue", referenced from:
_s_client_set_dispatch_queue in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_connection_set_state_changed_handler", referenced from:
_s_socket_connect_fn in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
_s_process_listener_success_task in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_connection_start", referenced from:
_s_socket_connect_fn in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
_s_socket_assign_to_event_loop_fn in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_content_context_get_is_final", referenced from:
___s_schedule_next_read_block_invoke in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_endpoint_create_address", referenced from:
_s_socket_connect_fn in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
_s_socket_bind_fn in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_endpoint_get_hostname", referenced from:
_s_process_connection_state_changed_task in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
_s_process_listener_success_task in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_endpoint_get_port", referenced from:
_s_process_connection_state_changed_task in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
_s_process_listener_success_task in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_error_get_error_code", referenced from:
_s_handle_connection_state_changed_fn in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
___s_socket_start_accept_fn_block_invoke in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
___s_schedule_next_read_block_invoke in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
___s_socket_write_fn_block_invoke in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_listener_cancel", referenced from:
_s_socket_stop_accept_fn in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
_s_process_socket_cancel_task in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_listener_create", referenced from:
_s_socket_listen_fn in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_listener_get_port", referenced from:
_s_process_listener_state_changed_task in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_listener_set_new_connection_handler", referenced from:
_s_socket_start_accept_fn in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_listener_set_queue", referenced from:
_s_listener_set_dispatch_queue in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_listener_set_state_changed_handler", referenced from:
_s_socket_start_accept_fn in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_listener_start", referenced from:
_s_socket_start_accept_fn in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_parameters_create_secure_tcp", referenced from:
_s_setup_socket_params in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_parameters_create_secure_udp", referenced from:
_s_setup_socket_params in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_parameters_set_local_endpoint", referenced from:
_s_socket_bind_fn in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_parameters_set_reuse_local_address", referenced from:
_s_setup_socket_params in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_path_copy_effective_local_endpoint", referenced from:
_s_process_connection_state_changed_task in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_protocol_copy_tls_definition", referenced from:
_s_process_connection_state_changed_task in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_release", referenced from:
_s_socket_impl_destroy in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
_s_socket_connect_fn in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
_s_socket_bind_fn in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
_s_setup_socket_params in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
_s_process_connection_state_changed_task in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
_s_process_connection_state_changed_task in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
_s_process_connection_state_changed_task in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
...
"_nw_retain", referenced from:
_s_socket_connect_fn in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
_s_socket_listen_fn in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
___s_socket_start_accept_fn_block_invoke_2 in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_tcp_options_set_connection_timeout", referenced from:
_s_setup_tcp_options in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_tcp_options_set_enable_keepalive", referenced from:
_s_setup_tcp_options in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_tcp_options_set_keepalive_count", referenced from:
_s_setup_tcp_options in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_tcp_options_set_keepalive_idle_time", referenced from:
_s_setup_tcp_options in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_tcp_options_set_keepalive_interval", referenced from:
_s_setup_tcp_options in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_tcp_options_set_maximum_segment_size", referenced from:
_s_setup_tcp_options in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_tls_copy_sec_protocol_options", referenced from:
___s_setup_socket_params_block_invoke in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
ld: symbol(s) not found for architecture arm64

It seems that we need the Network framework too.

@github-actionsgithub-actionsBot added awaiting change review Awaiting change review and removed awaiting changes Awaiting changes labels Oct 9, 2025
@kou

kou commented Oct 9, 2025

Copy link
Copy Markdown
MemberAuthor

https://github.com/kou/arrow-java/actions/runs/18334827827/job/52321140360#step:12:2475

 FAILED: [code=1] dataset/libarrow_dataset_jni.dylib : && /usr/bin/c++ -O3 -DNDEBUG -arch arm64 -mmacosx-version-min=14.0 -dynamiclib -Wl,-headerpad_max_install_names -o dataset/libarrow_dataset_jni.dylib -install_name @rpath/libarrow_dataset_jni.dylib dataset/CMakeFiles/arrow_java_jni_dataset.dir/src/main/cpp/jni_wrapper.cc.o dataset/CMakeFiles/arrow_java_jni_dataset.dir/src/main/cpp/jni_util.cc.o /Users/runner/work/arrow-java/arrow-java/build/cpp-install/lib/libarrow_dataset.a /Users/runner/work/arrow-java/arrow-java/build/cpp-install/lib/libarrow_substrait.a /Users/runner/work/arrow-java/arrow-java/build/cpp-install/lib/libarrow_dataset.a /Users/runner/work/arrow-java/arrow-java/build/cpp-install/lib/libparquet.a /opt/homebrew/Cellar/thrift/0.22.0/lib/libthrift.a /Users/runner/work/arrow-java/arrow-java/build/cpp-install/lib/libarrow_acero.a /Users/runner/work/arrow-java/arrow-java/build/cpp-install/lib/libarrow_compute.a /Users/runner/work/arrow-java/arrow-java/build/cpp-install/lib/libarrow.a /Users/runner/work/arrow-java/arrow-java/build/cpp-install/lib/libarrow_bundled_dependencies.a -framework CoreFoundation -framework Network -framework Security /opt/homebrew/opt/openssl@3/lib/libssl.a /opt/homebrew/opt/openssl@3/lib/libcrypto.a /opt/homebrew/opt/lz4/lib/liblz4.a /opt/homebrew/lib/libsnappy.a /Applications/Xcode_15.4.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/lib/libz.tbd /opt/homebrew/lib/libzstd.a /Applications/Xcode_15.4.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/lib/libcurl.tbd /Applications/Xcode_15.4.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/lib/libcurl.tbd /opt/homebrew/lib/libutf8proc.a && :
ld: warning: ignoring duplicate libraries: '/Users/runner/work/arrow-java/arrow-java/build/cpp-install/lib/libarrow_dataset.a'
duplicate symbol '__ZN5arrow7compute8internal10LocateZoneENSt3__117basic_string_viewIcNS2_11char_traitsIcEEEE' in:
/Users/runner/work/arrow-java/arrow-java/build/cpp-install/lib/libarrow.a[10](unity_2_cxx.cxx.o)
/Users/runner/work/arrow-java/arrow-java/build/cpp-install/lib/libarrow_compute.a[4](unity_3_cxx.cxx.o)
ld: 1 duplicate symbols
clang: error: linker command failed with exit code 1 (use -v to see invocation)

arrow::compute::internal::LocateZone() is duplicated.

@koukou added the CI: Extra: C++ Run extra C++ CI label Oct 9, 2025
@koukou removed the CI: Extra: C++ Run extra C++ CI label Oct 9, 2025
@koukou changed the title GH-47748: [C++] Fix bundled aws-c-common detectionGH-47748: [C++][Dataset] Fix link error on macOSOct 9, 2025
@kou

kou commented Oct 9, 2025

Copy link
Copy Markdown
MemberAuthor

Fixed: https://github.com/kou/arrow-java/actions/runs/18370527401/job/52334724160#step:12:2489

 + cmake --build /Users/runner/work/arrow-java/arrow-java/build/java_jni --target install
[0/1] Install the project...
-- Install configuration: "release"
-- Installing: /Users/runner/work/arrow-java/arrow-java/build/java_jni/java-jni/lib/arrow_cdata_jni/aarch_64/libarrow_cdata_jni.dylib
-- Installing: /Users/runner/work/arrow-java/arrow-java/build/java_jni/java-jni/lib/arrow_dataset_jni/aarch_64/libarrow_dataset_jni.dylib
-- Installing: /Users/runner/work/arrow-java/arrow-java/build/java_jni/java-jni/lib/gandiva_jni/aarch_64/libgandiva_jni.dylib
-- Installing: /Users/runner/work/arrow-java/arrow-java/build/java_jni/java-jni/lib/arrow_orc_jni/aarch_64/libarrow_orc_jni.dylib

This is ready.

This error is another problem that should be fixed in apache/arrow-java:

https://github.com/kou/arrow-java/actions/runs/18370527401/job/52334724160#step:12:2535

 Error: Unexpected shared dependency found in arrow_dataset_jni/aarch_64/libarrow_dataset_jni.dylib: `Network`

compute/kernels/scalar_temporal_binary.cc
compute/kernels/scalar_temporal_unary.cc
compute/kernels/scalar_validity.cc
compute/kernels/temporal_internal.cc

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

that's a good find! Thanks for the fix!
Does this kernel has to be part of libarrow core, can't it be part of libarrow_compute instead? Maybe @rok
We should try to keep on libarrow only the core kernels (like cast, etcetera) that are required for libarrow.

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

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

I think that we need this in libarrow.so because

#include"arrow/compute/kernels/temporal_internal.h"
uses this.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

ok, let's merge this and maybe we could explore whether this is "really necessary" as a core kernel on a separate issue? @rok ?

@github-actionsgithub-actionsBot added awaiting changes Awaiting changes and removed awaiting change review Awaiting change review labels Oct 10, 2025
@raulcd
raulcd merged commit 7700dd4 into apache:mainOct 10, 2025
48 checks passed
@raulcdraulcd removed the awaiting changes Awaiting changes label Oct 10, 2025
@github-actionsgithub-actionsBot added the awaiting merge Awaiting merge label Oct 10, 2025
raulcd pushed a commit that referenced this pull request Oct 10, 2025
### Rationale for this change
There are link errors with build options for JNI on macOS.
### What changes are included in this PR?
`ARROW_BUNDLED_STATIC_LIBS` has CMake target names defined in Apache Arrow not `find_package()`-ed target names. So we should use `aws-c-common` not `AWS::aws-c-common`.
Recent aws-c-common or something use the Network framework. So add `Network` to `Arrow::arrow_bundled_dependencies` dependencies.
Don't use `compute/kernels/temporal_internal.cc` in `libarrow.dylib` and `libarrow_compute.dylib` to avoid duplicated symbols error.
### Are these changes tested?
Yes.
### Are there any user-facing changes?
Yes.
* GitHub Issue: #47748
Authored-by: Sutou Kouhei <kou@clear-code.com>
Signed-off-by: Raúl Cumplido <raulcumplido@gmail.com>
@kou
kou deleted the cpp-arrow-config-macos branch October 10, 2025 12:43
@conbench-apache-arrow

Copy link
Copy Markdown

After merging your PR, Conbench analyzed the 3 benchmarking runs that have been run so far on merge-commit 7700dd4.

There were no benchmark performance regressions. 🎉

The full Conbench report has more details.

zanmato1984 pushed a commit to zanmato1984/arrow that referenced this pull request Oct 15, 2025
### Rationale for this change
There are link errors with build options for JNI on macOS.
### What changes are included in this PR?
`ARROW_BUNDLED_STATIC_LIBS` has CMake target names defined in Apache Arrow not `find_package()`-ed target names. So we should use `aws-c-common` not `AWS::aws-c-common`.
Recent aws-c-common or something use the Network framework. So add `Network` to `Arrow::arrow_bundled_dependencies` dependencies.
Don't use `compute/kernels/temporal_internal.cc` in `libarrow.dylib` and `libarrow_compute.dylib` to avoid duplicated symbols error.
### Are these changes tested?
Yes.
### Are there any user-facing changes?
Yes.
* GitHub Issue: apache#47748
Authored-by: Sutou Kouhei <kou@clear-code.com>
Signed-off-by: Raúl Cumplido <raulcumplido@gmail.com>
Mottl pushed a commit to Mottl/arrow that referenced this pull request May 26, 2026
### Rationale for this change
There are link errors with build options for JNI on macOS.
### What changes are included in this PR?
`ARROW_BUNDLED_STATIC_LIBS` has CMake target names defined in Apache Arrow not `find_package()`-ed target names. So we should use `aws-c-common` not `AWS::aws-c-common`.
Recent aws-c-common or something use the Network framework. So add `Network` to `Arrow::arrow_bundled_dependencies` dependencies.
Don't use `compute/kernels/temporal_internal.cc` in `libarrow.dylib` and `libarrow_compute.dylib` to avoid duplicated symbols error.
### Are these changes tested?
Yes.
### Are there any user-facing changes?
Yes.
* GitHub Issue: apache#47748
Authored-by: Sutou Kouhei <kou@clear-code.com>
Signed-off-by: Raúl Cumplido <raulcumplido@gmail.com>
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@kou@raulcd
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

GH-47748: [C++][Dataset] Fix link error on macOS - #47749

Merged
raulcd merged 4 commits into
apache:mainfrom
kou:cpp-arrow-config-macos
Oct 10, 2025
Merged

GH-47748: [C++][Dataset] Fix link error on macOS#47749
raulcd merged 4 commits into
apache:mainfrom
kou:cpp-arrow-config-macos

Conversation

@kou

@koukou commented Oct 8, 2025

Copy link
Copy Markdown
Member

Rationale for this change

There are link errors with build options for JNI on macOS.

What changes are included in this PR?

ARROW_BUNDLED_STATIC_LIBS has CMake target names defined in Apache Arrow not find_package()-ed target names. So we should use aws-c-common not AWS::aws-c-common.

Recent aws-c-common or something use the Network framework. So add Network to Arrow::arrow_bundled_dependencies dependencies.

Don't use compute/kernels/temporal_internal.cc in libarrow.dylib and libarrow_compute.dylib to avoid duplicated symbols error.

Are these changes tested?

Yes.

Are there any user-facing changes?

Yes.

@github-actions

Copy link
Copy Markdown

⚠️ GitHub issue #47748has been automatically assigned in GitHub to PR creator.

@raulcdraulcd left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

This is beyond my comprehension, but is this because of a change we have introduced recently?
I am happy for this to be merged, just trying to understand :)

@github-actionsgithub-actionsBot added awaiting changes Awaiting changes and removed awaiting committer review Awaiting committer review labels Oct 8, 2025
@kou

kou commented Oct 9, 2025

Copy link
Copy Markdown
MemberAuthor

No... It was introduced in 2022...: #13911

BTW, this was not enough:

https://github.com/kou/arrow-java/actions/runs/18334827827/job/52217628114#step:12:2474

 : && /usr/bin/c++ -O3 -DNDEBUG -arch arm64 -mmacosx-version-min=14.0 -dynamiclib -Wl,-headerpad_max_install_names -o dataset/libarrow_dataset_jni.dylib -install_name @rpath/libarrow_dataset_jni.dylib dataset/CMakeFiles/arrow_java_jni_dataset.dir/src/main/cpp/jni_wrapper.cc.o dataset/CMakeFiles/arrow_java_jni_dataset.dir/src/main/cpp/jni_util.cc.o /Users/runner/work/arrow-java/arrow-java/build/cpp-install/lib/libarrow_dataset.a /Users/runner/work/arrow-java/arrow-java/build/cpp-install/lib/libarrow_substrait.a /Users/runner/work/arrow-java/arrow-java/build/cpp-install/lib/libarrow_dataset.a /Users/runner/work/arrow-java/arrow-java/build/cpp-install/lib/libparquet.a /opt/homebrew/Cellar/thrift/0.22.0/lib/libthrift.a /Users/runner/work/arrow-java/arrow-java/build/cpp-install/lib/libarrow_acero.a /Users/runner/work/arrow-java/arrow-java/build/cpp-install/lib/libarrow_compute.a /Users/runner/work/arrow-java/arrow-java/build/cpp-install/lib/libarrow.a /Users/runner/work/arrow-java/arrow-java/build/cpp-install/lib/libarrow_bundled_dependencies.a -framework CoreFoundation -framework Security /opt/homebrew/opt/openssl@3/lib/libssl.a /opt/homebrew/opt/openssl@3/lib/libcrypto.a /opt/homebrew/opt/lz4/lib/liblz4.a /opt/homebrew/lib/libsnappy.a /Applications/Xcode_15.4.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/lib/libz.tbd /opt/homebrew/lib/libzstd.a /Applications/Xcode_15.4.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/lib/libcurl.tbd /Applications/Xcode_15.4.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/lib/libcurl.tbd /opt/homebrew/lib/libutf8proc.a && :
ld: warning: ignoring duplicate libraries: '/Users/runner/work/arrow-java/arrow-java/build/cpp-install/lib/libarrow_dataset.a'
Undefined symbols for architecture arm64:
"__nw_content_context_default_message", referenced from:
_s_socket_write_fn in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"__nw_parameters_configure_protocol_disable", referenced from:
_s_setup_socket_params in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
_s_setup_socket_params in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_connection_cancel", referenced from:
_s_process_socket_cancel_task in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_connection_copy_current_path", referenced from:
_s_process_connection_state_changed_task in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_connection_copy_endpoint", referenced from:
_s_process_listener_success_task in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_connection_copy_protocol_metadata", referenced from:
_s_process_connection_state_changed_task in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_connection_create", referenced from:
_s_socket_connect_fn in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_connection_receive", referenced from:
_s_schedule_next_read in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_connection_send", referenced from:
_s_socket_write_fn in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_connection_set_queue", referenced from:
_s_client_set_dispatch_queue in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_connection_set_state_changed_handler", referenced from:
_s_socket_connect_fn in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
_s_process_listener_success_task in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_connection_start", referenced from:
_s_socket_connect_fn in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
_s_socket_assign_to_event_loop_fn in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_content_context_get_is_final", referenced from:
___s_schedule_next_read_block_invoke in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_endpoint_create_address", referenced from:
_s_socket_connect_fn in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
_s_socket_bind_fn in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_endpoint_get_hostname", referenced from:
_s_process_connection_state_changed_task in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
_s_process_listener_success_task in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_endpoint_get_port", referenced from:
_s_process_connection_state_changed_task in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
_s_process_listener_success_task in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_error_get_error_code", referenced from:
_s_handle_connection_state_changed_fn in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
___s_socket_start_accept_fn_block_invoke in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
___s_schedule_next_read_block_invoke in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
___s_socket_write_fn_block_invoke in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_listener_cancel", referenced from:
_s_socket_stop_accept_fn in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
_s_process_socket_cancel_task in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_listener_create", referenced from:
_s_socket_listen_fn in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_listener_get_port", referenced from:
_s_process_listener_state_changed_task in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_listener_set_new_connection_handler", referenced from:
_s_socket_start_accept_fn in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_listener_set_queue", referenced from:
_s_listener_set_dispatch_queue in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_listener_set_state_changed_handler", referenced from:
_s_socket_start_accept_fn in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_listener_start", referenced from:
_s_socket_start_accept_fn in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_parameters_create_secure_tcp", referenced from:
_s_setup_socket_params in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_parameters_create_secure_udp", referenced from:
_s_setup_socket_params in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_parameters_set_local_endpoint", referenced from:
_s_socket_bind_fn in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_parameters_set_reuse_local_address", referenced from:
_s_setup_socket_params in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_path_copy_effective_local_endpoint", referenced from:
_s_process_connection_state_changed_task in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_protocol_copy_tls_definition", referenced from:
_s_process_connection_state_changed_task in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_release", referenced from:
_s_socket_impl_destroy in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
_s_socket_connect_fn in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
_s_socket_bind_fn in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
_s_setup_socket_params in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
_s_process_connection_state_changed_task in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
_s_process_connection_state_changed_task in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
_s_process_connection_state_changed_task in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
...
"_nw_retain", referenced from:
_s_socket_connect_fn in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
_s_socket_listen_fn in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
___s_socket_start_accept_fn_block_invoke_2 in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_tcp_options_set_connection_timeout", referenced from:
_s_setup_tcp_options in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_tcp_options_set_enable_keepalive", referenced from:
_s_setup_tcp_options in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_tcp_options_set_keepalive_count", referenced from:
_s_setup_tcp_options in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_tcp_options_set_keepalive_idle_time", referenced from:
_s_setup_tcp_options in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_tcp_options_set_keepalive_interval", referenced from:
_s_setup_tcp_options in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_tcp_options_set_maximum_segment_size", referenced from:
_s_setup_tcp_options in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_tls_copy_sec_protocol_options", referenced from:
___s_setup_socket_params_block_invoke in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
ld: symbol(s) not found for architecture arm64

It seems that we need the Network framework too.

@github-actionsgithub-actionsBot added awaiting change review Awaiting change review and removed awaiting changes Awaiting changes labels Oct 9, 2025
@kou

kou commented Oct 9, 2025

Copy link
Copy Markdown
MemberAuthor

https://github.com/kou/arrow-java/actions/runs/18334827827/job/52321140360#step:12:2475

 FAILED: [code=1] dataset/libarrow_dataset_jni.dylib : && /usr/bin/c++ -O3 -DNDEBUG -arch arm64 -mmacosx-version-min=14.0 -dynamiclib -Wl,-headerpad_max_install_names -o dataset/libarrow_dataset_jni.dylib -install_name @rpath/libarrow_dataset_jni.dylib dataset/CMakeFiles/arrow_java_jni_dataset.dir/src/main/cpp/jni_wrapper.cc.o dataset/CMakeFiles/arrow_java_jni_dataset.dir/src/main/cpp/jni_util.cc.o /Users/runner/work/arrow-java/arrow-java/build/cpp-install/lib/libarrow_dataset.a /Users/runner/work/arrow-java/arrow-java/build/cpp-install/lib/libarrow_substrait.a /Users/runner/work/arrow-java/arrow-java/build/cpp-install/lib/libarrow_dataset.a /Users/runner/work/arrow-java/arrow-java/build/cpp-install/lib/libparquet.a /opt/homebrew/Cellar/thrift/0.22.0/lib/libthrift.a /Users/runner/work/arrow-java/arrow-java/build/cpp-install/lib/libarrow_acero.a /Users/runner/work/arrow-java/arrow-java/build/cpp-install/lib/libarrow_compute.a /Users/runner/work/arrow-java/arrow-java/build/cpp-install/lib/libarrow.a /Users/runner/work/arrow-java/arrow-java/build/cpp-install/lib/libarrow_bundled_dependencies.a -framework CoreFoundation -framework Network -framework Security /opt/homebrew/opt/openssl@3/lib/libssl.a /opt/homebrew/opt/openssl@3/lib/libcrypto.a /opt/homebrew/opt/lz4/lib/liblz4.a /opt/homebrew/lib/libsnappy.a /Applications/Xcode_15.4.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/lib/libz.tbd /opt/homebrew/lib/libzstd.a /Applications/Xcode_15.4.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/lib/libcurl.tbd /Applications/Xcode_15.4.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/lib/libcurl.tbd /opt/homebrew/lib/libutf8proc.a && :
ld: warning: ignoring duplicate libraries: '/Users/runner/work/arrow-java/arrow-java/build/cpp-install/lib/libarrow_dataset.a'
duplicate symbol '__ZN5arrow7compute8internal10LocateZoneENSt3__117basic_string_viewIcNS2_11char_traitsIcEEEE' in:
/Users/runner/work/arrow-java/arrow-java/build/cpp-install/lib/libarrow.a[10](unity_2_cxx.cxx.o)
/Users/runner/work/arrow-java/arrow-java/build/cpp-install/lib/libarrow_compute.a[4](unity_3_cxx.cxx.o)
ld: 1 duplicate symbols
clang: error: linker command failed with exit code 1 (use -v to see invocation)

arrow::compute::internal::LocateZone() is duplicated.

@koukou added the CI: Extra: C++ Run extra C++ CI label Oct 9, 2025
@koukou removed the CI: Extra: C++ Run extra C++ CI label Oct 9, 2025
@koukou changed the title GH-47748: [C++] Fix bundled aws-c-common detectionGH-47748: [C++][Dataset] Fix link error on macOSOct 9, 2025
@kou

kou commented Oct 9, 2025

Copy link
Copy Markdown
MemberAuthor

Fixed: https://github.com/kou/arrow-java/actions/runs/18370527401/job/52334724160#step:12:2489

 + cmake --build /Users/runner/work/arrow-java/arrow-java/build/java_jni --target install
[0/1] Install the project...
-- Install configuration: "release"
-- Installing: /Users/runner/work/arrow-java/arrow-java/build/java_jni/java-jni/lib/arrow_cdata_jni/aarch_64/libarrow_cdata_jni.dylib
-- Installing: /Users/runner/work/arrow-java/arrow-java/build/java_jni/java-jni/lib/arrow_dataset_jni/aarch_64/libarrow_dataset_jni.dylib
-- Installing: /Users/runner/work/arrow-java/arrow-java/build/java_jni/java-jni/lib/gandiva_jni/aarch_64/libgandiva_jni.dylib
-- Installing: /Users/runner/work/arrow-java/arrow-java/build/java_jni/java-jni/lib/arrow_orc_jni/aarch_64/libarrow_orc_jni.dylib

This is ready.

This error is another problem that should be fixed in apache/arrow-java:

https://github.com/kou/arrow-java/actions/runs/18370527401/job/52334724160#step:12:2535

 Error: Unexpected shared dependency found in arrow_dataset_jni/aarch_64/libarrow_dataset_jni.dylib: `Network`

compute/kernels/scalar_temporal_binary.cc
compute/kernels/scalar_temporal_unary.cc
compute/kernels/scalar_validity.cc
compute/kernels/temporal_internal.cc

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

that's a good find! Thanks for the fix!
Does this kernel has to be part of libarrow core, can't it be part of libarrow_compute instead? Maybe @rok
We should try to keep on libarrow only the core kernels (like cast, etcetera) that are required for libarrow.

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

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

I think that we need this in libarrow.so because

#include"arrow/compute/kernels/temporal_internal.h"
uses this.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

ok, let's merge this and maybe we could explore whether this is "really necessary" as a core kernel on a separate issue? @rok ?

@github-actionsgithub-actionsBot added awaiting changes Awaiting changes and removed awaiting change review Awaiting change review labels Oct 10, 2025
@raulcd
raulcd merged commit 7700dd4 into apache:mainOct 10, 2025
48 checks passed
@raulcdraulcd removed the awaiting changes Awaiting changes label Oct 10, 2025
@github-actionsgithub-actionsBot added the awaiting merge Awaiting merge label Oct 10, 2025
raulcd pushed a commit that referenced this pull request Oct 10, 2025
### Rationale for this change
There are link errors with build options for JNI on macOS.
### What changes are included in this PR?
`ARROW_BUNDLED_STATIC_LIBS` has CMake target names defined in Apache Arrow not `find_package()`-ed target names. So we should use `aws-c-common` not `AWS::aws-c-common`.
Recent aws-c-common or something use the Network framework. So add `Network` to `Arrow::arrow_bundled_dependencies` dependencies.
Don't use `compute/kernels/temporal_internal.cc` in `libarrow.dylib` and `libarrow_compute.dylib` to avoid duplicated symbols error.
### Are these changes tested?
Yes.
### Are there any user-facing changes?
Yes.
* GitHub Issue: #47748
Authored-by: Sutou Kouhei <kou@clear-code.com>
Signed-off-by: Raúl Cumplido <raulcumplido@gmail.com>
@kou
kou deleted the cpp-arrow-config-macos branch October 10, 2025 12:43
@conbench-apache-arrow

Copy link
Copy Markdown

After merging your PR, Conbench analyzed the 3 benchmarking runs that have been run so far on merge-commit 7700dd4.

There were no benchmark performance regressions. 🎉

The full Conbench report has more details.

zanmato1984 pushed a commit to zanmato1984/arrow that referenced this pull request Oct 15, 2025
### Rationale for this change
There are link errors with build options for JNI on macOS.
### What changes are included in this PR?
`ARROW_BUNDLED_STATIC_LIBS` has CMake target names defined in Apache Arrow not `find_package()`-ed target names. So we should use `aws-c-common` not `AWS::aws-c-common`.
Recent aws-c-common or something use the Network framework. So add `Network` to `Arrow::arrow_bundled_dependencies` dependencies.
Don't use `compute/kernels/temporal_internal.cc` in `libarrow.dylib` and `libarrow_compute.dylib` to avoid duplicated symbols error.
### Are these changes tested?
Yes.
### Are there any user-facing changes?
Yes.
* GitHub Issue: apache#47748
Authored-by: Sutou Kouhei <kou@clear-code.com>
Signed-off-by: Raúl Cumplido <raulcumplido@gmail.com>
Mottl pushed a commit to Mottl/arrow that referenced this pull request May 26, 2026
### Rationale for this change
There are link errors with build options for JNI on macOS.
### What changes are included in this PR?
`ARROW_BUNDLED_STATIC_LIBS` has CMake target names defined in Apache Arrow not `find_package()`-ed target names. So we should use `aws-c-common` not `AWS::aws-c-common`.
Recent aws-c-common or something use the Network framework. So add `Network` to `Arrow::arrow_bundled_dependencies` dependencies.
Don't use `compute/kernels/temporal_internal.cc` in `libarrow.dylib` and `libarrow_compute.dylib` to avoid duplicated symbols error.
### Are these changes tested?
Yes.
### Are there any user-facing changes?
Yes.
* GitHub Issue: apache#47748
Authored-by: Sutou Kouhei <kou@clear-code.com>
Signed-off-by: Raúl Cumplido <raulcumplido@gmail.com>
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@kou@raulcd
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

GH-47748: [C++][Dataset] Fix link error on macOS - #47749

Merged
raulcd merged 4 commits into
apache:mainfrom
kou:cpp-arrow-config-macos
Oct 10, 2025
Merged

GH-47748: [C++][Dataset] Fix link error on macOS#47749
raulcd merged 4 commits into
apache:mainfrom
kou:cpp-arrow-config-macos

Conversation

@kou

@koukou commented Oct 8, 2025

Copy link
Copy Markdown
Member

Rationale for this change

There are link errors with build options for JNI on macOS.

What changes are included in this PR?

ARROW_BUNDLED_STATIC_LIBS has CMake target names defined in Apache Arrow not find_package()-ed target names. So we should use aws-c-common not AWS::aws-c-common.

Recent aws-c-common or something use the Network framework. So add Network to Arrow::arrow_bundled_dependencies dependencies.

Don't use compute/kernels/temporal_internal.cc in libarrow.dylib and libarrow_compute.dylib to avoid duplicated symbols error.

Are these changes tested?

Yes.

Are there any user-facing changes?

Yes.

@github-actions

Copy link
Copy Markdown

⚠️ GitHub issue #47748has been automatically assigned in GitHub to PR creator.

@raulcdraulcd left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

This is beyond my comprehension, but is this because of a change we have introduced recently?
I am happy for this to be merged, just trying to understand :)

@github-actionsgithub-actionsBot added awaiting changes Awaiting changes and removed awaiting committer review Awaiting committer review labels Oct 8, 2025
@kou

kou commented Oct 9, 2025

Copy link
Copy Markdown
MemberAuthor

No... It was introduced in 2022...: #13911

BTW, this was not enough:

https://github.com/kou/arrow-java/actions/runs/18334827827/job/52217628114#step:12:2474

 : && /usr/bin/c++ -O3 -DNDEBUG -arch arm64 -mmacosx-version-min=14.0 -dynamiclib -Wl,-headerpad_max_install_names -o dataset/libarrow_dataset_jni.dylib -install_name @rpath/libarrow_dataset_jni.dylib dataset/CMakeFiles/arrow_java_jni_dataset.dir/src/main/cpp/jni_wrapper.cc.o dataset/CMakeFiles/arrow_java_jni_dataset.dir/src/main/cpp/jni_util.cc.o /Users/runner/work/arrow-java/arrow-java/build/cpp-install/lib/libarrow_dataset.a /Users/runner/work/arrow-java/arrow-java/build/cpp-install/lib/libarrow_substrait.a /Users/runner/work/arrow-java/arrow-java/build/cpp-install/lib/libarrow_dataset.a /Users/runner/work/arrow-java/arrow-java/build/cpp-install/lib/libparquet.a /opt/homebrew/Cellar/thrift/0.22.0/lib/libthrift.a /Users/runner/work/arrow-java/arrow-java/build/cpp-install/lib/libarrow_acero.a /Users/runner/work/arrow-java/arrow-java/build/cpp-install/lib/libarrow_compute.a /Users/runner/work/arrow-java/arrow-java/build/cpp-install/lib/libarrow.a /Users/runner/work/arrow-java/arrow-java/build/cpp-install/lib/libarrow_bundled_dependencies.a -framework CoreFoundation -framework Security /opt/homebrew/opt/openssl@3/lib/libssl.a /opt/homebrew/opt/openssl@3/lib/libcrypto.a /opt/homebrew/opt/lz4/lib/liblz4.a /opt/homebrew/lib/libsnappy.a /Applications/Xcode_15.4.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/lib/libz.tbd /opt/homebrew/lib/libzstd.a /Applications/Xcode_15.4.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/lib/libcurl.tbd /Applications/Xcode_15.4.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/lib/libcurl.tbd /opt/homebrew/lib/libutf8proc.a && :
ld: warning: ignoring duplicate libraries: '/Users/runner/work/arrow-java/arrow-java/build/cpp-install/lib/libarrow_dataset.a'
Undefined symbols for architecture arm64:
"__nw_content_context_default_message", referenced from:
_s_socket_write_fn in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"__nw_parameters_configure_protocol_disable", referenced from:
_s_setup_socket_params in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
_s_setup_socket_params in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_connection_cancel", referenced from:
_s_process_socket_cancel_task in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_connection_copy_current_path", referenced from:
_s_process_connection_state_changed_task in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_connection_copy_endpoint", referenced from:
_s_process_listener_success_task in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_connection_copy_protocol_metadata", referenced from:
_s_process_connection_state_changed_task in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_connection_create", referenced from:
_s_socket_connect_fn in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_connection_receive", referenced from:
_s_schedule_next_read in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_connection_send", referenced from:
_s_socket_write_fn in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_connection_set_queue", referenced from:
_s_client_set_dispatch_queue in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_connection_set_state_changed_handler", referenced from:
_s_socket_connect_fn in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
_s_process_listener_success_task in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_connection_start", referenced from:
_s_socket_connect_fn in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
_s_socket_assign_to_event_loop_fn in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_content_context_get_is_final", referenced from:
___s_schedule_next_read_block_invoke in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_endpoint_create_address", referenced from:
_s_socket_connect_fn in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
_s_socket_bind_fn in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_endpoint_get_hostname", referenced from:
_s_process_connection_state_changed_task in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
_s_process_listener_success_task in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_endpoint_get_port", referenced from:
_s_process_connection_state_changed_task in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
_s_process_listener_success_task in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_error_get_error_code", referenced from:
_s_handle_connection_state_changed_fn in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
___s_socket_start_accept_fn_block_invoke in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
___s_schedule_next_read_block_invoke in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
___s_socket_write_fn_block_invoke in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_listener_cancel", referenced from:
_s_socket_stop_accept_fn in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
_s_process_socket_cancel_task in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_listener_create", referenced from:
_s_socket_listen_fn in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_listener_get_port", referenced from:
_s_process_listener_state_changed_task in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_listener_set_new_connection_handler", referenced from:
_s_socket_start_accept_fn in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_listener_set_queue", referenced from:
_s_listener_set_dispatch_queue in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_listener_set_state_changed_handler", referenced from:
_s_socket_start_accept_fn in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_listener_start", referenced from:
_s_socket_start_accept_fn in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_parameters_create_secure_tcp", referenced from:
_s_setup_socket_params in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_parameters_create_secure_udp", referenced from:
_s_setup_socket_params in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_parameters_set_local_endpoint", referenced from:
_s_socket_bind_fn in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_parameters_set_reuse_local_address", referenced from:
_s_setup_socket_params in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_path_copy_effective_local_endpoint", referenced from:
_s_process_connection_state_changed_task in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_protocol_copy_tls_definition", referenced from:
_s_process_connection_state_changed_task in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_release", referenced from:
_s_socket_impl_destroy in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
_s_socket_connect_fn in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
_s_socket_bind_fn in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
_s_setup_socket_params in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
_s_process_connection_state_changed_task in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
_s_process_connection_state_changed_task in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
_s_process_connection_state_changed_task in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
...
"_nw_retain", referenced from:
_s_socket_connect_fn in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
_s_socket_listen_fn in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
___s_socket_start_accept_fn_block_invoke_2 in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_tcp_options_set_connection_timeout", referenced from:
_s_setup_tcp_options in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_tcp_options_set_enable_keepalive", referenced from:
_s_setup_tcp_options in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_tcp_options_set_keepalive_count", referenced from:
_s_setup_tcp_options in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_tcp_options_set_keepalive_idle_time", referenced from:
_s_setup_tcp_options in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_tcp_options_set_keepalive_interval", referenced from:
_s_setup_tcp_options in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_tcp_options_set_maximum_segment_size", referenced from:
_s_setup_tcp_options in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_tls_copy_sec_protocol_options", referenced from:
___s_setup_socket_params_block_invoke in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
ld: symbol(s) not found for architecture arm64

It seems that we need the Network framework too.

@github-actionsgithub-actionsBot added awaiting change review Awaiting change review and removed awaiting changes Awaiting changes labels Oct 9, 2025
@kou

kou commented Oct 9, 2025

Copy link
Copy Markdown
MemberAuthor

https://github.com/kou/arrow-java/actions/runs/18334827827/job/52321140360#step:12:2475

 FAILED: [code=1] dataset/libarrow_dataset_jni.dylib : && /usr/bin/c++ -O3 -DNDEBUG -arch arm64 -mmacosx-version-min=14.0 -dynamiclib -Wl,-headerpad_max_install_names -o dataset/libarrow_dataset_jni.dylib -install_name @rpath/libarrow_dataset_jni.dylib dataset/CMakeFiles/arrow_java_jni_dataset.dir/src/main/cpp/jni_wrapper.cc.o dataset/CMakeFiles/arrow_java_jni_dataset.dir/src/main/cpp/jni_util.cc.o /Users/runner/work/arrow-java/arrow-java/build/cpp-install/lib/libarrow_dataset.a /Users/runner/work/arrow-java/arrow-java/build/cpp-install/lib/libarrow_substrait.a /Users/runner/work/arrow-java/arrow-java/build/cpp-install/lib/libarrow_dataset.a /Users/runner/work/arrow-java/arrow-java/build/cpp-install/lib/libparquet.a /opt/homebrew/Cellar/thrift/0.22.0/lib/libthrift.a /Users/runner/work/arrow-java/arrow-java/build/cpp-install/lib/libarrow_acero.a /Users/runner/work/arrow-java/arrow-java/build/cpp-install/lib/libarrow_compute.a /Users/runner/work/arrow-java/arrow-java/build/cpp-install/lib/libarrow.a /Users/runner/work/arrow-java/arrow-java/build/cpp-install/lib/libarrow_bundled_dependencies.a -framework CoreFoundation -framework Network -framework Security /opt/homebrew/opt/openssl@3/lib/libssl.a /opt/homebrew/opt/openssl@3/lib/libcrypto.a /opt/homebrew/opt/lz4/lib/liblz4.a /opt/homebrew/lib/libsnappy.a /Applications/Xcode_15.4.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/lib/libz.tbd /opt/homebrew/lib/libzstd.a /Applications/Xcode_15.4.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/lib/libcurl.tbd /Applications/Xcode_15.4.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/lib/libcurl.tbd /opt/homebrew/lib/libutf8proc.a && :
ld: warning: ignoring duplicate libraries: '/Users/runner/work/arrow-java/arrow-java/build/cpp-install/lib/libarrow_dataset.a'
duplicate symbol '__ZN5arrow7compute8internal10LocateZoneENSt3__117basic_string_viewIcNS2_11char_traitsIcEEEE' in:
/Users/runner/work/arrow-java/arrow-java/build/cpp-install/lib/libarrow.a[10](unity_2_cxx.cxx.o)
/Users/runner/work/arrow-java/arrow-java/build/cpp-install/lib/libarrow_compute.a[4](unity_3_cxx.cxx.o)
ld: 1 duplicate symbols
clang: error: linker command failed with exit code 1 (use -v to see invocation)

arrow::compute::internal::LocateZone() is duplicated.

@koukou added the CI: Extra: C++ Run extra C++ CI label Oct 9, 2025
@koukou removed the CI: Extra: C++ Run extra C++ CI label Oct 9, 2025
@koukou changed the title GH-47748: [C++] Fix bundled aws-c-common detectionGH-47748: [C++][Dataset] Fix link error on macOSOct 9, 2025
@kou

kou commented Oct 9, 2025

Copy link
Copy Markdown
MemberAuthor

Fixed: https://github.com/kou/arrow-java/actions/runs/18370527401/job/52334724160#step:12:2489

 + cmake --build /Users/runner/work/arrow-java/arrow-java/build/java_jni --target install
[0/1] Install the project...
-- Install configuration: "release"
-- Installing: /Users/runner/work/arrow-java/arrow-java/build/java_jni/java-jni/lib/arrow_cdata_jni/aarch_64/libarrow_cdata_jni.dylib
-- Installing: /Users/runner/work/arrow-java/arrow-java/build/java_jni/java-jni/lib/arrow_dataset_jni/aarch_64/libarrow_dataset_jni.dylib
-- Installing: /Users/runner/work/arrow-java/arrow-java/build/java_jni/java-jni/lib/gandiva_jni/aarch_64/libgandiva_jni.dylib
-- Installing: /Users/runner/work/arrow-java/arrow-java/build/java_jni/java-jni/lib/arrow_orc_jni/aarch_64/libarrow_orc_jni.dylib

This is ready.

This error is another problem that should be fixed in apache/arrow-java:

https://github.com/kou/arrow-java/actions/runs/18370527401/job/52334724160#step:12:2535

 Error: Unexpected shared dependency found in arrow_dataset_jni/aarch_64/libarrow_dataset_jni.dylib: `Network`

compute/kernels/scalar_temporal_binary.cc
compute/kernels/scalar_temporal_unary.cc
compute/kernels/scalar_validity.cc
compute/kernels/temporal_internal.cc

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

that's a good find! Thanks for the fix!
Does this kernel has to be part of libarrow core, can't it be part of libarrow_compute instead? Maybe @rok
We should try to keep on libarrow only the core kernels (like cast, etcetera) that are required for libarrow.

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

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

I think that we need this in libarrow.so because

#include"arrow/compute/kernels/temporal_internal.h"
uses this.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

ok, let's merge this and maybe we could explore whether this is "really necessary" as a core kernel on a separate issue? @rok ?

@github-actionsgithub-actionsBot added awaiting changes Awaiting changes and removed awaiting change review Awaiting change review labels Oct 10, 2025
@raulcd
raulcd merged commit 7700dd4 into apache:mainOct 10, 2025
48 checks passed
@raulcdraulcd removed the awaiting changes Awaiting changes label Oct 10, 2025
@github-actionsgithub-actionsBot added the awaiting merge Awaiting merge label Oct 10, 2025
raulcd pushed a commit that referenced this pull request Oct 10, 2025
### Rationale for this change
There are link errors with build options for JNI on macOS.
### What changes are included in this PR?
`ARROW_BUNDLED_STATIC_LIBS` has CMake target names defined in Apache Arrow not `find_package()`-ed target names. So we should use `aws-c-common` not `AWS::aws-c-common`.
Recent aws-c-common or something use the Network framework. So add `Network` to `Arrow::arrow_bundled_dependencies` dependencies.
Don't use `compute/kernels/temporal_internal.cc` in `libarrow.dylib` and `libarrow_compute.dylib` to avoid duplicated symbols error.
### Are these changes tested?
Yes.
### Are there any user-facing changes?
Yes.
* GitHub Issue: #47748
Authored-by: Sutou Kouhei <kou@clear-code.com>
Signed-off-by: Raúl Cumplido <raulcumplido@gmail.com>
@kou
kou deleted the cpp-arrow-config-macos branch October 10, 2025 12:43
@conbench-apache-arrow

Copy link
Copy Markdown

After merging your PR, Conbench analyzed the 3 benchmarking runs that have been run so far on merge-commit 7700dd4.

There were no benchmark performance regressions. 🎉

The full Conbench report has more details.

zanmato1984 pushed a commit to zanmato1984/arrow that referenced this pull request Oct 15, 2025
### Rationale for this change
There are link errors with build options for JNI on macOS.
### What changes are included in this PR?
`ARROW_BUNDLED_STATIC_LIBS` has CMake target names defined in Apache Arrow not `find_package()`-ed target names. So we should use `aws-c-common` not `AWS::aws-c-common`.
Recent aws-c-common or something use the Network framework. So add `Network` to `Arrow::arrow_bundled_dependencies` dependencies.
Don't use `compute/kernels/temporal_internal.cc` in `libarrow.dylib` and `libarrow_compute.dylib` to avoid duplicated symbols error.
### Are these changes tested?
Yes.
### Are there any user-facing changes?
Yes.
* GitHub Issue: apache#47748
Authored-by: Sutou Kouhei <kou@clear-code.com>
Signed-off-by: Raúl Cumplido <raulcumplido@gmail.com>
Mottl pushed a commit to Mottl/arrow that referenced this pull request May 26, 2026
### Rationale for this change
There are link errors with build options for JNI on macOS.
### What changes are included in this PR?
`ARROW_BUNDLED_STATIC_LIBS` has CMake target names defined in Apache Arrow not `find_package()`-ed target names. So we should use `aws-c-common` not `AWS::aws-c-common`.
Recent aws-c-common or something use the Network framework. So add `Network` to `Arrow::arrow_bundled_dependencies` dependencies.
Don't use `compute/kernels/temporal_internal.cc` in `libarrow.dylib` and `libarrow_compute.dylib` to avoid duplicated symbols error.
### Are these changes tested?
Yes.
### Are there any user-facing changes?
Yes.
* GitHub Issue: apache#47748
Authored-by: Sutou Kouhei <kou@clear-code.com>
Signed-off-by: Raúl Cumplido <raulcumplido@gmail.com>
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@kou@raulcd
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

GH-47748: [C++][Dataset] Fix link error on macOS - #47749

Merged
raulcd merged 4 commits into
apache:mainfrom
kou:cpp-arrow-config-macos
Oct 10, 2025
Merged

GH-47748: [C++][Dataset] Fix link error on macOS#47749
raulcd merged 4 commits into
apache:mainfrom
kou:cpp-arrow-config-macos

Conversation

@kou

@koukou commented Oct 8, 2025

Copy link
Copy Markdown
Member

Rationale for this change

There are link errors with build options for JNI on macOS.

What changes are included in this PR?

ARROW_BUNDLED_STATIC_LIBS has CMake target names defined in Apache Arrow not find_package()-ed target names. So we should use aws-c-common not AWS::aws-c-common.

Recent aws-c-common or something use the Network framework. So add Network to Arrow::arrow_bundled_dependencies dependencies.

Don't use compute/kernels/temporal_internal.cc in libarrow.dylib and libarrow_compute.dylib to avoid duplicated symbols error.

Are these changes tested?

Yes.

Are there any user-facing changes?

Yes.

@github-actions

Copy link
Copy Markdown

⚠️ GitHub issue #47748has been automatically assigned in GitHub to PR creator.

@raulcdraulcd left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

This is beyond my comprehension, but is this because of a change we have introduced recently?
I am happy for this to be merged, just trying to understand :)

@github-actionsgithub-actionsBot added awaiting changes Awaiting changes and removed awaiting committer review Awaiting committer review labels Oct 8, 2025
@kou

kou commented Oct 9, 2025

Copy link
Copy Markdown
MemberAuthor

No... It was introduced in 2022...: #13911

BTW, this was not enough:

https://github.com/kou/arrow-java/actions/runs/18334827827/job/52217628114#step:12:2474

 : && /usr/bin/c++ -O3 -DNDEBUG -arch arm64 -mmacosx-version-min=14.0 -dynamiclib -Wl,-headerpad_max_install_names -o dataset/libarrow_dataset_jni.dylib -install_name @rpath/libarrow_dataset_jni.dylib dataset/CMakeFiles/arrow_java_jni_dataset.dir/src/main/cpp/jni_wrapper.cc.o dataset/CMakeFiles/arrow_java_jni_dataset.dir/src/main/cpp/jni_util.cc.o /Users/runner/work/arrow-java/arrow-java/build/cpp-install/lib/libarrow_dataset.a /Users/runner/work/arrow-java/arrow-java/build/cpp-install/lib/libarrow_substrait.a /Users/runner/work/arrow-java/arrow-java/build/cpp-install/lib/libarrow_dataset.a /Users/runner/work/arrow-java/arrow-java/build/cpp-install/lib/libparquet.a /opt/homebrew/Cellar/thrift/0.22.0/lib/libthrift.a /Users/runner/work/arrow-java/arrow-java/build/cpp-install/lib/libarrow_acero.a /Users/runner/work/arrow-java/arrow-java/build/cpp-install/lib/libarrow_compute.a /Users/runner/work/arrow-java/arrow-java/build/cpp-install/lib/libarrow.a /Users/runner/work/arrow-java/arrow-java/build/cpp-install/lib/libarrow_bundled_dependencies.a -framework CoreFoundation -framework Security /opt/homebrew/opt/openssl@3/lib/libssl.a /opt/homebrew/opt/openssl@3/lib/libcrypto.a /opt/homebrew/opt/lz4/lib/liblz4.a /opt/homebrew/lib/libsnappy.a /Applications/Xcode_15.4.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/lib/libz.tbd /opt/homebrew/lib/libzstd.a /Applications/Xcode_15.4.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/lib/libcurl.tbd /Applications/Xcode_15.4.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/lib/libcurl.tbd /opt/homebrew/lib/libutf8proc.a && :
ld: warning: ignoring duplicate libraries: '/Users/runner/work/arrow-java/arrow-java/build/cpp-install/lib/libarrow_dataset.a'
Undefined symbols for architecture arm64:
"__nw_content_context_default_message", referenced from:
_s_socket_write_fn in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"__nw_parameters_configure_protocol_disable", referenced from:
_s_setup_socket_params in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
_s_setup_socket_params in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_connection_cancel", referenced from:
_s_process_socket_cancel_task in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_connection_copy_current_path", referenced from:
_s_process_connection_state_changed_task in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_connection_copy_endpoint", referenced from:
_s_process_listener_success_task in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_connection_copy_protocol_metadata", referenced from:
_s_process_connection_state_changed_task in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_connection_create", referenced from:
_s_socket_connect_fn in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_connection_receive", referenced from:
_s_schedule_next_read in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_connection_send", referenced from:
_s_socket_write_fn in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_connection_set_queue", referenced from:
_s_client_set_dispatch_queue in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_connection_set_state_changed_handler", referenced from:
_s_socket_connect_fn in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
_s_process_listener_success_task in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_connection_start", referenced from:
_s_socket_connect_fn in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
_s_socket_assign_to_event_loop_fn in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_content_context_get_is_final", referenced from:
___s_schedule_next_read_block_invoke in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_endpoint_create_address", referenced from:
_s_socket_connect_fn in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
_s_socket_bind_fn in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_endpoint_get_hostname", referenced from:
_s_process_connection_state_changed_task in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
_s_process_listener_success_task in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_endpoint_get_port", referenced from:
_s_process_connection_state_changed_task in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
_s_process_listener_success_task in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_error_get_error_code", referenced from:
_s_handle_connection_state_changed_fn in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
___s_socket_start_accept_fn_block_invoke in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
___s_schedule_next_read_block_invoke in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
___s_socket_write_fn_block_invoke in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_listener_cancel", referenced from:
_s_socket_stop_accept_fn in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
_s_process_socket_cancel_task in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_listener_create", referenced from:
_s_socket_listen_fn in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_listener_get_port", referenced from:
_s_process_listener_state_changed_task in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_listener_set_new_connection_handler", referenced from:
_s_socket_start_accept_fn in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_listener_set_queue", referenced from:
_s_listener_set_dispatch_queue in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_listener_set_state_changed_handler", referenced from:
_s_socket_start_accept_fn in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_listener_start", referenced from:
_s_socket_start_accept_fn in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_parameters_create_secure_tcp", referenced from:
_s_setup_socket_params in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_parameters_create_secure_udp", referenced from:
_s_setup_socket_params in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_parameters_set_local_endpoint", referenced from:
_s_socket_bind_fn in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_parameters_set_reuse_local_address", referenced from:
_s_setup_socket_params in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_path_copy_effective_local_endpoint", referenced from:
_s_process_connection_state_changed_task in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_protocol_copy_tls_definition", referenced from:
_s_process_connection_state_changed_task in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_release", referenced from:
_s_socket_impl_destroy in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
_s_socket_connect_fn in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
_s_socket_bind_fn in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
_s_setup_socket_params in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
_s_process_connection_state_changed_task in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
_s_process_connection_state_changed_task in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
_s_process_connection_state_changed_task in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
...
"_nw_retain", referenced from:
_s_socket_connect_fn in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
_s_socket_listen_fn in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
___s_socket_start_accept_fn_block_invoke_2 in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_tcp_options_set_connection_timeout", referenced from:
_s_setup_tcp_options in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_tcp_options_set_enable_keepalive", referenced from:
_s_setup_tcp_options in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_tcp_options_set_keepalive_count", referenced from:
_s_setup_tcp_options in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_tcp_options_set_keepalive_idle_time", referenced from:
_s_setup_tcp_options in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_tcp_options_set_keepalive_interval", referenced from:
_s_setup_tcp_options in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_tcp_options_set_maximum_segment_size", referenced from:
_s_setup_tcp_options in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_tls_copy_sec_protocol_options", referenced from:
___s_setup_socket_params_block_invoke in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
ld: symbol(s) not found for architecture arm64

It seems that we need the Network framework too.

@github-actionsgithub-actionsBot added awaiting change review Awaiting change review and removed awaiting changes Awaiting changes labels Oct 9, 2025
@kou

kou commented Oct 9, 2025

Copy link
Copy Markdown
MemberAuthor

https://github.com/kou/arrow-java/actions/runs/18334827827/job/52321140360#step:12:2475

 FAILED: [code=1] dataset/libarrow_dataset_jni.dylib : && /usr/bin/c++ -O3 -DNDEBUG -arch arm64 -mmacosx-version-min=14.0 -dynamiclib -Wl,-headerpad_max_install_names -o dataset/libarrow_dataset_jni.dylib -install_name @rpath/libarrow_dataset_jni.dylib dataset/CMakeFiles/arrow_java_jni_dataset.dir/src/main/cpp/jni_wrapper.cc.o dataset/CMakeFiles/arrow_java_jni_dataset.dir/src/main/cpp/jni_util.cc.o /Users/runner/work/arrow-java/arrow-java/build/cpp-install/lib/libarrow_dataset.a /Users/runner/work/arrow-java/arrow-java/build/cpp-install/lib/libarrow_substrait.a /Users/runner/work/arrow-java/arrow-java/build/cpp-install/lib/libarrow_dataset.a /Users/runner/work/arrow-java/arrow-java/build/cpp-install/lib/libparquet.a /opt/homebrew/Cellar/thrift/0.22.0/lib/libthrift.a /Users/runner/work/arrow-java/arrow-java/build/cpp-install/lib/libarrow_acero.a /Users/runner/work/arrow-java/arrow-java/build/cpp-install/lib/libarrow_compute.a /Users/runner/work/arrow-java/arrow-java/build/cpp-install/lib/libarrow.a /Users/runner/work/arrow-java/arrow-java/build/cpp-install/lib/libarrow_bundled_dependencies.a -framework CoreFoundation -framework Network -framework Security /opt/homebrew/opt/openssl@3/lib/libssl.a /opt/homebrew/opt/openssl@3/lib/libcrypto.a /opt/homebrew/opt/lz4/lib/liblz4.a /opt/homebrew/lib/libsnappy.a /Applications/Xcode_15.4.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/lib/libz.tbd /opt/homebrew/lib/libzstd.a /Applications/Xcode_15.4.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/lib/libcurl.tbd /Applications/Xcode_15.4.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/lib/libcurl.tbd /opt/homebrew/lib/libutf8proc.a && :
ld: warning: ignoring duplicate libraries: '/Users/runner/work/arrow-java/arrow-java/build/cpp-install/lib/libarrow_dataset.a'
duplicate symbol '__ZN5arrow7compute8internal10LocateZoneENSt3__117basic_string_viewIcNS2_11char_traitsIcEEEE' in:
/Users/runner/work/arrow-java/arrow-java/build/cpp-install/lib/libarrow.a[10](unity_2_cxx.cxx.o)
/Users/runner/work/arrow-java/arrow-java/build/cpp-install/lib/libarrow_compute.a[4](unity_3_cxx.cxx.o)
ld: 1 duplicate symbols
clang: error: linker command failed with exit code 1 (use -v to see invocation)

arrow::compute::internal::LocateZone() is duplicated.

@koukou added the CI: Extra: C++ Run extra C++ CI label Oct 9, 2025
@koukou removed the CI: Extra: C++ Run extra C++ CI label Oct 9, 2025
@koukou changed the title GH-47748: [C++] Fix bundled aws-c-common detectionGH-47748: [C++][Dataset] Fix link error on macOSOct 9, 2025
@kou

kou commented Oct 9, 2025

Copy link
Copy Markdown
MemberAuthor

Fixed: https://github.com/kou/arrow-java/actions/runs/18370527401/job/52334724160#step:12:2489

 + cmake --build /Users/runner/work/arrow-java/arrow-java/build/java_jni --target install
[0/1] Install the project...
-- Install configuration: "release"
-- Installing: /Users/runner/work/arrow-java/arrow-java/build/java_jni/java-jni/lib/arrow_cdata_jni/aarch_64/libarrow_cdata_jni.dylib
-- Installing: /Users/runner/work/arrow-java/arrow-java/build/java_jni/java-jni/lib/arrow_dataset_jni/aarch_64/libarrow_dataset_jni.dylib
-- Installing: /Users/runner/work/arrow-java/arrow-java/build/java_jni/java-jni/lib/gandiva_jni/aarch_64/libgandiva_jni.dylib
-- Installing: /Users/runner/work/arrow-java/arrow-java/build/java_jni/java-jni/lib/arrow_orc_jni/aarch_64/libarrow_orc_jni.dylib

This is ready.

This error is another problem that should be fixed in apache/arrow-java:

https://github.com/kou/arrow-java/actions/runs/18370527401/job/52334724160#step:12:2535

 Error: Unexpected shared dependency found in arrow_dataset_jni/aarch_64/libarrow_dataset_jni.dylib: `Network`

compute/kernels/scalar_temporal_binary.cc
compute/kernels/scalar_temporal_unary.cc
compute/kernels/scalar_validity.cc
compute/kernels/temporal_internal.cc

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

that's a good find! Thanks for the fix!
Does this kernel has to be part of libarrow core, can't it be part of libarrow_compute instead? Maybe @rok
We should try to keep on libarrow only the core kernels (like cast, etcetera) that are required for libarrow.

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

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

I think that we need this in libarrow.so because

#include"arrow/compute/kernels/temporal_internal.h"
uses this.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

ok, let's merge this and maybe we could explore whether this is "really necessary" as a core kernel on a separate issue? @rok ?

@github-actionsgithub-actionsBot added awaiting changes Awaiting changes and removed awaiting change review Awaiting change review labels Oct 10, 2025
@raulcd
raulcd merged commit 7700dd4 into apache:mainOct 10, 2025
48 checks passed
@raulcdraulcd removed the awaiting changes Awaiting changes label Oct 10, 2025
@github-actionsgithub-actionsBot added the awaiting merge Awaiting merge label Oct 10, 2025
raulcd pushed a commit that referenced this pull request Oct 10, 2025
### Rationale for this change
There are link errors with build options for JNI on macOS.
### What changes are included in this PR?
`ARROW_BUNDLED_STATIC_LIBS` has CMake target names defined in Apache Arrow not `find_package()`-ed target names. So we should use `aws-c-common` not `AWS::aws-c-common`.
Recent aws-c-common or something use the Network framework. So add `Network` to `Arrow::arrow_bundled_dependencies` dependencies.
Don't use `compute/kernels/temporal_internal.cc` in `libarrow.dylib` and `libarrow_compute.dylib` to avoid duplicated symbols error.
### Are these changes tested?
Yes.
### Are there any user-facing changes?
Yes.
* GitHub Issue: #47748
Authored-by: Sutou Kouhei <kou@clear-code.com>
Signed-off-by: Raúl Cumplido <raulcumplido@gmail.com>
@kou
kou deleted the cpp-arrow-config-macos branch October 10, 2025 12:43
@conbench-apache-arrow

Copy link
Copy Markdown

After merging your PR, Conbench analyzed the 3 benchmarking runs that have been run so far on merge-commit 7700dd4.

There were no benchmark performance regressions. 🎉

The full Conbench report has more details.

zanmato1984 pushed a commit to zanmato1984/arrow that referenced this pull request Oct 15, 2025
### Rationale for this change
There are link errors with build options for JNI on macOS.
### What changes are included in this PR?
`ARROW_BUNDLED_STATIC_LIBS` has CMake target names defined in Apache Arrow not `find_package()`-ed target names. So we should use `aws-c-common` not `AWS::aws-c-common`.
Recent aws-c-common or something use the Network framework. So add `Network` to `Arrow::arrow_bundled_dependencies` dependencies.
Don't use `compute/kernels/temporal_internal.cc` in `libarrow.dylib` and `libarrow_compute.dylib` to avoid duplicated symbols error.
### Are these changes tested?
Yes.
### Are there any user-facing changes?
Yes.
* GitHub Issue: apache#47748
Authored-by: Sutou Kouhei <kou@clear-code.com>
Signed-off-by: Raúl Cumplido <raulcumplido@gmail.com>
Mottl pushed a commit to Mottl/arrow that referenced this pull request May 26, 2026
### Rationale for this change
There are link errors with build options for JNI on macOS.
### What changes are included in this PR?
`ARROW_BUNDLED_STATIC_LIBS` has CMake target names defined in Apache Arrow not `find_package()`-ed target names. So we should use `aws-c-common` not `AWS::aws-c-common`.
Recent aws-c-common or something use the Network framework. So add `Network` to `Arrow::arrow_bundled_dependencies` dependencies.
Don't use `compute/kernels/temporal_internal.cc` in `libarrow.dylib` and `libarrow_compute.dylib` to avoid duplicated symbols error.
### Are these changes tested?
Yes.
### Are there any user-facing changes?
Yes.
* GitHub Issue: apache#47748
Authored-by: Sutou Kouhei <kou@clear-code.com>
Signed-off-by: Raúl Cumplido <raulcumplido@gmail.com>
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@kou@raulcd
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

GH-47748: [C++][Dataset] Fix link error on macOS - #47749

Merged
raulcd merged 4 commits into
apache:mainfrom
kou:cpp-arrow-config-macos
Oct 10, 2025
Merged

GH-47748: [C++][Dataset] Fix link error on macOS#47749
raulcd merged 4 commits into
apache:mainfrom
kou:cpp-arrow-config-macos

Conversation

@kou

@koukou commented Oct 8, 2025

Copy link
Copy Markdown
Member

Rationale for this change

There are link errors with build options for JNI on macOS.

What changes are included in this PR?

ARROW_BUNDLED_STATIC_LIBS has CMake target names defined in Apache Arrow not find_package()-ed target names. So we should use aws-c-common not AWS::aws-c-common.

Recent aws-c-common or something use the Network framework. So add Network to Arrow::arrow_bundled_dependencies dependencies.

Don't use compute/kernels/temporal_internal.cc in libarrow.dylib and libarrow_compute.dylib to avoid duplicated symbols error.

Are these changes tested?

Yes.

Are there any user-facing changes?

Yes.

@github-actions

Copy link
Copy Markdown

⚠️ GitHub issue #47748has been automatically assigned in GitHub to PR creator.

@raulcdraulcd left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

This is beyond my comprehension, but is this because of a change we have introduced recently?
I am happy for this to be merged, just trying to understand :)

@github-actionsgithub-actionsBot added awaiting changes Awaiting changes and removed awaiting committer review Awaiting committer review labels Oct 8, 2025
@kou

kou commented Oct 9, 2025

Copy link
Copy Markdown
MemberAuthor

No... It was introduced in 2022...: #13911

BTW, this was not enough:

https://github.com/kou/arrow-java/actions/runs/18334827827/job/52217628114#step:12:2474

 : && /usr/bin/c++ -O3 -DNDEBUG -arch arm64 -mmacosx-version-min=14.0 -dynamiclib -Wl,-headerpad_max_install_names -o dataset/libarrow_dataset_jni.dylib -install_name @rpath/libarrow_dataset_jni.dylib dataset/CMakeFiles/arrow_java_jni_dataset.dir/src/main/cpp/jni_wrapper.cc.o dataset/CMakeFiles/arrow_java_jni_dataset.dir/src/main/cpp/jni_util.cc.o /Users/runner/work/arrow-java/arrow-java/build/cpp-install/lib/libarrow_dataset.a /Users/runner/work/arrow-java/arrow-java/build/cpp-install/lib/libarrow_substrait.a /Users/runner/work/arrow-java/arrow-java/build/cpp-install/lib/libarrow_dataset.a /Users/runner/work/arrow-java/arrow-java/build/cpp-install/lib/libparquet.a /opt/homebrew/Cellar/thrift/0.22.0/lib/libthrift.a /Users/runner/work/arrow-java/arrow-java/build/cpp-install/lib/libarrow_acero.a /Users/runner/work/arrow-java/arrow-java/build/cpp-install/lib/libarrow_compute.a /Users/runner/work/arrow-java/arrow-java/build/cpp-install/lib/libarrow.a /Users/runner/work/arrow-java/arrow-java/build/cpp-install/lib/libarrow_bundled_dependencies.a -framework CoreFoundation -framework Security /opt/homebrew/opt/openssl@3/lib/libssl.a /opt/homebrew/opt/openssl@3/lib/libcrypto.a /opt/homebrew/opt/lz4/lib/liblz4.a /opt/homebrew/lib/libsnappy.a /Applications/Xcode_15.4.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/lib/libz.tbd /opt/homebrew/lib/libzstd.a /Applications/Xcode_15.4.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/lib/libcurl.tbd /Applications/Xcode_15.4.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/lib/libcurl.tbd /opt/homebrew/lib/libutf8proc.a && :
ld: warning: ignoring duplicate libraries: '/Users/runner/work/arrow-java/arrow-java/build/cpp-install/lib/libarrow_dataset.a'
Undefined symbols for architecture arm64:
"__nw_content_context_default_message", referenced from:
_s_socket_write_fn in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"__nw_parameters_configure_protocol_disable", referenced from:
_s_setup_socket_params in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
_s_setup_socket_params in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_connection_cancel", referenced from:
_s_process_socket_cancel_task in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_connection_copy_current_path", referenced from:
_s_process_connection_state_changed_task in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_connection_copy_endpoint", referenced from:
_s_process_listener_success_task in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_connection_copy_protocol_metadata", referenced from:
_s_process_connection_state_changed_task in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_connection_create", referenced from:
_s_socket_connect_fn in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_connection_receive", referenced from:
_s_schedule_next_read in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_connection_send", referenced from:
_s_socket_write_fn in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_connection_set_queue", referenced from:
_s_client_set_dispatch_queue in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_connection_set_state_changed_handler", referenced from:
_s_socket_connect_fn in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
_s_process_listener_success_task in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_connection_start", referenced from:
_s_socket_connect_fn in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
_s_socket_assign_to_event_loop_fn in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_content_context_get_is_final", referenced from:
___s_schedule_next_read_block_invoke in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_endpoint_create_address", referenced from:
_s_socket_connect_fn in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
_s_socket_bind_fn in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_endpoint_get_hostname", referenced from:
_s_process_connection_state_changed_task in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
_s_process_listener_success_task in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_endpoint_get_port", referenced from:
_s_process_connection_state_changed_task in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
_s_process_listener_success_task in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_error_get_error_code", referenced from:
_s_handle_connection_state_changed_fn in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
___s_socket_start_accept_fn_block_invoke in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
___s_schedule_next_read_block_invoke in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
___s_socket_write_fn_block_invoke in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_listener_cancel", referenced from:
_s_socket_stop_accept_fn in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
_s_process_socket_cancel_task in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_listener_create", referenced from:
_s_socket_listen_fn in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_listener_get_port", referenced from:
_s_process_listener_state_changed_task in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_listener_set_new_connection_handler", referenced from:
_s_socket_start_accept_fn in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_listener_set_queue", referenced from:
_s_listener_set_dispatch_queue in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_listener_set_state_changed_handler", referenced from:
_s_socket_start_accept_fn in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_listener_start", referenced from:
_s_socket_start_accept_fn in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_parameters_create_secure_tcp", referenced from:
_s_setup_socket_params in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_parameters_create_secure_udp", referenced from:
_s_setup_socket_params in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_parameters_set_local_endpoint", referenced from:
_s_socket_bind_fn in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_parameters_set_reuse_local_address", referenced from:
_s_setup_socket_params in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_path_copy_effective_local_endpoint", referenced from:
_s_process_connection_state_changed_task in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_protocol_copy_tls_definition", referenced from:
_s_process_connection_state_changed_task in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_release", referenced from:
_s_socket_impl_destroy in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
_s_socket_connect_fn in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
_s_socket_bind_fn in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
_s_setup_socket_params in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
_s_process_connection_state_changed_task in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
_s_process_connection_state_changed_task in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
_s_process_connection_state_changed_task in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
...
"_nw_retain", referenced from:
_s_socket_connect_fn in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
_s_socket_listen_fn in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
___s_socket_start_accept_fn_block_invoke_2 in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_tcp_options_set_connection_timeout", referenced from:
_s_setup_tcp_options in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_tcp_options_set_enable_keepalive", referenced from:
_s_setup_tcp_options in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_tcp_options_set_keepalive_count", referenced from:
_s_setup_tcp_options in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_tcp_options_set_keepalive_idle_time", referenced from:
_s_setup_tcp_options in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_tcp_options_set_keepalive_interval", referenced from:
_s_setup_tcp_options in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_tcp_options_set_maximum_segment_size", referenced from:
_s_setup_tcp_options in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_tls_copy_sec_protocol_options", referenced from:
___s_setup_socket_params_block_invoke in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
ld: symbol(s) not found for architecture arm64

It seems that we need the Network framework too.

@github-actionsgithub-actionsBot added awaiting change review Awaiting change review and removed awaiting changes Awaiting changes labels Oct 9, 2025
@kou

kou commented Oct 9, 2025

Copy link
Copy Markdown
MemberAuthor

https://github.com/kou/arrow-java/actions/runs/18334827827/job/52321140360#step:12:2475

 FAILED: [code=1] dataset/libarrow_dataset_jni.dylib : && /usr/bin/c++ -O3 -DNDEBUG -arch arm64 -mmacosx-version-min=14.0 -dynamiclib -Wl,-headerpad_max_install_names -o dataset/libarrow_dataset_jni.dylib -install_name @rpath/libarrow_dataset_jni.dylib dataset/CMakeFiles/arrow_java_jni_dataset.dir/src/main/cpp/jni_wrapper.cc.o dataset/CMakeFiles/arrow_java_jni_dataset.dir/src/main/cpp/jni_util.cc.o /Users/runner/work/arrow-java/arrow-java/build/cpp-install/lib/libarrow_dataset.a /Users/runner/work/arrow-java/arrow-java/build/cpp-install/lib/libarrow_substrait.a /Users/runner/work/arrow-java/arrow-java/build/cpp-install/lib/libarrow_dataset.a /Users/runner/work/arrow-java/arrow-java/build/cpp-install/lib/libparquet.a /opt/homebrew/Cellar/thrift/0.22.0/lib/libthrift.a /Users/runner/work/arrow-java/arrow-java/build/cpp-install/lib/libarrow_acero.a /Users/runner/work/arrow-java/arrow-java/build/cpp-install/lib/libarrow_compute.a /Users/runner/work/arrow-java/arrow-java/build/cpp-install/lib/libarrow.a /Users/runner/work/arrow-java/arrow-java/build/cpp-install/lib/libarrow_bundled_dependencies.a -framework CoreFoundation -framework Network -framework Security /opt/homebrew/opt/openssl@3/lib/libssl.a /opt/homebrew/opt/openssl@3/lib/libcrypto.a /opt/homebrew/opt/lz4/lib/liblz4.a /opt/homebrew/lib/libsnappy.a /Applications/Xcode_15.4.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/lib/libz.tbd /opt/homebrew/lib/libzstd.a /Applications/Xcode_15.4.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/lib/libcurl.tbd /Applications/Xcode_15.4.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/lib/libcurl.tbd /opt/homebrew/lib/libutf8proc.a && :
ld: warning: ignoring duplicate libraries: '/Users/runner/work/arrow-java/arrow-java/build/cpp-install/lib/libarrow_dataset.a'
duplicate symbol '__ZN5arrow7compute8internal10LocateZoneENSt3__117basic_string_viewIcNS2_11char_traitsIcEEEE' in:
/Users/runner/work/arrow-java/arrow-java/build/cpp-install/lib/libarrow.a[10](unity_2_cxx.cxx.o)
/Users/runner/work/arrow-java/arrow-java/build/cpp-install/lib/libarrow_compute.a[4](unity_3_cxx.cxx.o)
ld: 1 duplicate symbols
clang: error: linker command failed with exit code 1 (use -v to see invocation)

arrow::compute::internal::LocateZone() is duplicated.

@koukou added the CI: Extra: C++ Run extra C++ CI label Oct 9, 2025
@koukou removed the CI: Extra: C++ Run extra C++ CI label Oct 9, 2025
@koukou changed the title GH-47748: [C++] Fix bundled aws-c-common detectionGH-47748: [C++][Dataset] Fix link error on macOSOct 9, 2025
@kou

kou commented Oct 9, 2025

Copy link
Copy Markdown
MemberAuthor

Fixed: https://github.com/kou/arrow-java/actions/runs/18370527401/job/52334724160#step:12:2489

 + cmake --build /Users/runner/work/arrow-java/arrow-java/build/java_jni --target install
[0/1] Install the project...
-- Install configuration: "release"
-- Installing: /Users/runner/work/arrow-java/arrow-java/build/java_jni/java-jni/lib/arrow_cdata_jni/aarch_64/libarrow_cdata_jni.dylib
-- Installing: /Users/runner/work/arrow-java/arrow-java/build/java_jni/java-jni/lib/arrow_dataset_jni/aarch_64/libarrow_dataset_jni.dylib
-- Installing: /Users/runner/work/arrow-java/arrow-java/build/java_jni/java-jni/lib/gandiva_jni/aarch_64/libgandiva_jni.dylib
-- Installing: /Users/runner/work/arrow-java/arrow-java/build/java_jni/java-jni/lib/arrow_orc_jni/aarch_64/libarrow_orc_jni.dylib

This is ready.

This error is another problem that should be fixed in apache/arrow-java:

https://github.com/kou/arrow-java/actions/runs/18370527401/job/52334724160#step:12:2535

 Error: Unexpected shared dependency found in arrow_dataset_jni/aarch_64/libarrow_dataset_jni.dylib: `Network`

compute/kernels/scalar_temporal_binary.cc
compute/kernels/scalar_temporal_unary.cc
compute/kernels/scalar_validity.cc
compute/kernels/temporal_internal.cc

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

that's a good find! Thanks for the fix!
Does this kernel has to be part of libarrow core, can't it be part of libarrow_compute instead? Maybe @rok
We should try to keep on libarrow only the core kernels (like cast, etcetera) that are required for libarrow.

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

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

I think that we need this in libarrow.so because

#include"arrow/compute/kernels/temporal_internal.h"
uses this.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

ok, let's merge this and maybe we could explore whether this is "really necessary" as a core kernel on a separate issue? @rok ?

@github-actionsgithub-actionsBot added awaiting changes Awaiting changes and removed awaiting change review Awaiting change review labels Oct 10, 2025
@raulcd
raulcd merged commit 7700dd4 into apache:mainOct 10, 2025
48 checks passed
@raulcdraulcd removed the awaiting changes Awaiting changes label Oct 10, 2025
@github-actionsgithub-actionsBot added the awaiting merge Awaiting merge label Oct 10, 2025
raulcd pushed a commit that referenced this pull request Oct 10, 2025
### Rationale for this change
There are link errors with build options for JNI on macOS.
### What changes are included in this PR?
`ARROW_BUNDLED_STATIC_LIBS` has CMake target names defined in Apache Arrow not `find_package()`-ed target names. So we should use `aws-c-common` not `AWS::aws-c-common`.
Recent aws-c-common or something use the Network framework. So add `Network` to `Arrow::arrow_bundled_dependencies` dependencies.
Don't use `compute/kernels/temporal_internal.cc` in `libarrow.dylib` and `libarrow_compute.dylib` to avoid duplicated symbols error.
### Are these changes tested?
Yes.
### Are there any user-facing changes?
Yes.
* GitHub Issue: #47748
Authored-by: Sutou Kouhei <kou@clear-code.com>
Signed-off-by: Raúl Cumplido <raulcumplido@gmail.com>
@kou
kou deleted the cpp-arrow-config-macos branch October 10, 2025 12:43
@conbench-apache-arrow

Copy link
Copy Markdown

After merging your PR, Conbench analyzed the 3 benchmarking runs that have been run so far on merge-commit 7700dd4.

There were no benchmark performance regressions. 🎉

The full Conbench report has more details.

zanmato1984 pushed a commit to zanmato1984/arrow that referenced this pull request Oct 15, 2025
### Rationale for this change
There are link errors with build options for JNI on macOS.
### What changes are included in this PR?
`ARROW_BUNDLED_STATIC_LIBS` has CMake target names defined in Apache Arrow not `find_package()`-ed target names. So we should use `aws-c-common` not `AWS::aws-c-common`.
Recent aws-c-common or something use the Network framework. So add `Network` to `Arrow::arrow_bundled_dependencies` dependencies.
Don't use `compute/kernels/temporal_internal.cc` in `libarrow.dylib` and `libarrow_compute.dylib` to avoid duplicated symbols error.
### Are these changes tested?
Yes.
### Are there any user-facing changes?
Yes.
* GitHub Issue: apache#47748
Authored-by: Sutou Kouhei <kou@clear-code.com>
Signed-off-by: Raúl Cumplido <raulcumplido@gmail.com>
Mottl pushed a commit to Mottl/arrow that referenced this pull request May 26, 2026
### Rationale for this change
There are link errors with build options for JNI on macOS.
### What changes are included in this PR?
`ARROW_BUNDLED_STATIC_LIBS` has CMake target names defined in Apache Arrow not `find_package()`-ed target names. So we should use `aws-c-common` not `AWS::aws-c-common`.
Recent aws-c-common or something use the Network framework. So add `Network` to `Arrow::arrow_bundled_dependencies` dependencies.
Don't use `compute/kernels/temporal_internal.cc` in `libarrow.dylib` and `libarrow_compute.dylib` to avoid duplicated symbols error.
### Are these changes tested?
Yes.
### Are there any user-facing changes?
Yes.
* GitHub Issue: apache#47748
Authored-by: Sutou Kouhei <kou@clear-code.com>
Signed-off-by: Raúl Cumplido <raulcumplido@gmail.com>
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@kou@raulcd
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

GH-47748: [C++][Dataset] Fix link error on macOS - #47749

Merged
raulcd merged 4 commits into
apache:mainfrom
kou:cpp-arrow-config-macos
Oct 10, 2025
Merged

GH-47748: [C++][Dataset] Fix link error on macOS#47749
raulcd merged 4 commits into
apache:mainfrom
kou:cpp-arrow-config-macos

Conversation

@kou

@koukou commented Oct 8, 2025

Copy link
Copy Markdown
Member

Rationale for this change

There are link errors with build options for JNI on macOS.

What changes are included in this PR?

ARROW_BUNDLED_STATIC_LIBS has CMake target names defined in Apache Arrow not find_package()-ed target names. So we should use aws-c-common not AWS::aws-c-common.

Recent aws-c-common or something use the Network framework. So add Network to Arrow::arrow_bundled_dependencies dependencies.

Don't use compute/kernels/temporal_internal.cc in libarrow.dylib and libarrow_compute.dylib to avoid duplicated symbols error.

Are these changes tested?

Yes.

Are there any user-facing changes?

Yes.

@github-actions

Copy link
Copy Markdown

⚠️ GitHub issue #47748has been automatically assigned in GitHub to PR creator.

@raulcdraulcd left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

This is beyond my comprehension, but is this because of a change we have introduced recently?
I am happy for this to be merged, just trying to understand :)

@github-actionsgithub-actionsBot added awaiting changes Awaiting changes and removed awaiting committer review Awaiting committer review labels Oct 8, 2025
@kou

kou commented Oct 9, 2025

Copy link
Copy Markdown
MemberAuthor

No... It was introduced in 2022...: #13911

BTW, this was not enough:

https://github.com/kou/arrow-java/actions/runs/18334827827/job/52217628114#step:12:2474

 : && /usr/bin/c++ -O3 -DNDEBUG -arch arm64 -mmacosx-version-min=14.0 -dynamiclib -Wl,-headerpad_max_install_names -o dataset/libarrow_dataset_jni.dylib -install_name @rpath/libarrow_dataset_jni.dylib dataset/CMakeFiles/arrow_java_jni_dataset.dir/src/main/cpp/jni_wrapper.cc.o dataset/CMakeFiles/arrow_java_jni_dataset.dir/src/main/cpp/jni_util.cc.o /Users/runner/work/arrow-java/arrow-java/build/cpp-install/lib/libarrow_dataset.a /Users/runner/work/arrow-java/arrow-java/build/cpp-install/lib/libarrow_substrait.a /Users/runner/work/arrow-java/arrow-java/build/cpp-install/lib/libarrow_dataset.a /Users/runner/work/arrow-java/arrow-java/build/cpp-install/lib/libparquet.a /opt/homebrew/Cellar/thrift/0.22.0/lib/libthrift.a /Users/runner/work/arrow-java/arrow-java/build/cpp-install/lib/libarrow_acero.a /Users/runner/work/arrow-java/arrow-java/build/cpp-install/lib/libarrow_compute.a /Users/runner/work/arrow-java/arrow-java/build/cpp-install/lib/libarrow.a /Users/runner/work/arrow-java/arrow-java/build/cpp-install/lib/libarrow_bundled_dependencies.a -framework CoreFoundation -framework Security /opt/homebrew/opt/openssl@3/lib/libssl.a /opt/homebrew/opt/openssl@3/lib/libcrypto.a /opt/homebrew/opt/lz4/lib/liblz4.a /opt/homebrew/lib/libsnappy.a /Applications/Xcode_15.4.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/lib/libz.tbd /opt/homebrew/lib/libzstd.a /Applications/Xcode_15.4.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/lib/libcurl.tbd /Applications/Xcode_15.4.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/lib/libcurl.tbd /opt/homebrew/lib/libutf8proc.a && :
ld: warning: ignoring duplicate libraries: '/Users/runner/work/arrow-java/arrow-java/build/cpp-install/lib/libarrow_dataset.a'
Undefined symbols for architecture arm64:
"__nw_content_context_default_message", referenced from:
_s_socket_write_fn in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"__nw_parameters_configure_protocol_disable", referenced from:
_s_setup_socket_params in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
_s_setup_socket_params in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_connection_cancel", referenced from:
_s_process_socket_cancel_task in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_connection_copy_current_path", referenced from:
_s_process_connection_state_changed_task in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_connection_copy_endpoint", referenced from:
_s_process_listener_success_task in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_connection_copy_protocol_metadata", referenced from:
_s_process_connection_state_changed_task in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_connection_create", referenced from:
_s_socket_connect_fn in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_connection_receive", referenced from:
_s_schedule_next_read in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_connection_send", referenced from:
_s_socket_write_fn in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_connection_set_queue", referenced from:
_s_client_set_dispatch_queue in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_connection_set_state_changed_handler", referenced from:
_s_socket_connect_fn in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
_s_process_listener_success_task in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_connection_start", referenced from:
_s_socket_connect_fn in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
_s_socket_assign_to_event_loop_fn in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_content_context_get_is_final", referenced from:
___s_schedule_next_read_block_invoke in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_endpoint_create_address", referenced from:
_s_socket_connect_fn in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
_s_socket_bind_fn in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_endpoint_get_hostname", referenced from:
_s_process_connection_state_changed_task in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
_s_process_listener_success_task in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_endpoint_get_port", referenced from:
_s_process_connection_state_changed_task in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
_s_process_listener_success_task in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_error_get_error_code", referenced from:
_s_handle_connection_state_changed_fn in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
___s_socket_start_accept_fn_block_invoke in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
___s_schedule_next_read_block_invoke in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
___s_socket_write_fn_block_invoke in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_listener_cancel", referenced from:
_s_socket_stop_accept_fn in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
_s_process_socket_cancel_task in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_listener_create", referenced from:
_s_socket_listen_fn in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_listener_get_port", referenced from:
_s_process_listener_state_changed_task in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_listener_set_new_connection_handler", referenced from:
_s_socket_start_accept_fn in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_listener_set_queue", referenced from:
_s_listener_set_dispatch_queue in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_listener_set_state_changed_handler", referenced from:
_s_socket_start_accept_fn in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_listener_start", referenced from:
_s_socket_start_accept_fn in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_parameters_create_secure_tcp", referenced from:
_s_setup_socket_params in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_parameters_create_secure_udp", referenced from:
_s_setup_socket_params in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_parameters_set_local_endpoint", referenced from:
_s_socket_bind_fn in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_parameters_set_reuse_local_address", referenced from:
_s_setup_socket_params in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_path_copy_effective_local_endpoint", referenced from:
_s_process_connection_state_changed_task in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_protocol_copy_tls_definition", referenced from:
_s_process_connection_state_changed_task in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_release", referenced from:
_s_socket_impl_destroy in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
_s_socket_connect_fn in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
_s_socket_bind_fn in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
_s_setup_socket_params in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
_s_process_connection_state_changed_task in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
_s_process_connection_state_changed_task in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
_s_process_connection_state_changed_task in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
...
"_nw_retain", referenced from:
_s_socket_connect_fn in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
_s_socket_listen_fn in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
___s_socket_start_accept_fn_block_invoke_2 in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_tcp_options_set_connection_timeout", referenced from:
_s_setup_tcp_options in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_tcp_options_set_enable_keepalive", referenced from:
_s_setup_tcp_options in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_tcp_options_set_keepalive_count", referenced from:
_s_setup_tcp_options in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_tcp_options_set_keepalive_idle_time", referenced from:
_s_setup_tcp_options in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_tcp_options_set_keepalive_interval", referenced from:
_s_setup_tcp_options in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_tcp_options_set_maximum_segment_size", referenced from:
_s_setup_tcp_options in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
"_nw_tls_copy_sec_protocol_options", referenced from:
___s_setup_socket_params_block_invoke in libarrow_bundled_dependencies.a[417](nw_socket.c.o)
ld: symbol(s) not found for architecture arm64

It seems that we need the Network framework too.

@github-actionsgithub-actionsBot added awaiting change review Awaiting change review and removed awaiting changes Awaiting changes labels Oct 9, 2025
@kou

kou commented Oct 9, 2025

Copy link
Copy Markdown
MemberAuthor

https://github.com/kou/arrow-java/actions/runs/18334827827/job/52321140360#step:12:2475

 FAILED: [code=1] dataset/libarrow_dataset_jni.dylib : && /usr/bin/c++ -O3 -DNDEBUG -arch arm64 -mmacosx-version-min=14.0 -dynamiclib -Wl,-headerpad_max_install_names -o dataset/libarrow_dataset_jni.dylib -install_name @rpath/libarrow_dataset_jni.dylib dataset/CMakeFiles/arrow_java_jni_dataset.dir/src/main/cpp/jni_wrapper.cc.o dataset/CMakeFiles/arrow_java_jni_dataset.dir/src/main/cpp/jni_util.cc.o /Users/runner/work/arrow-java/arrow-java/build/cpp-install/lib/libarrow_dataset.a /Users/runner/work/arrow-java/arrow-java/build/cpp-install/lib/libarrow_substrait.a /Users/runner/work/arrow-java/arrow-java/build/cpp-install/lib/libarrow_dataset.a /Users/runner/work/arrow-java/arrow-java/build/cpp-install/lib/libparquet.a /opt/homebrew/Cellar/thrift/0.22.0/lib/libthrift.a /Users/runner/work/arrow-java/arrow-java/build/cpp-install/lib/libarrow_acero.a /Users/runner/work/arrow-java/arrow-java/build/cpp-install/lib/libarrow_compute.a /Users/runner/work/arrow-java/arrow-java/build/cpp-install/lib/libarrow.a /Users/runner/work/arrow-java/arrow-java/build/cpp-install/lib/libarrow_bundled_dependencies.a -framework CoreFoundation -framework Network -framework Security /opt/homebrew/opt/openssl@3/lib/libssl.a /opt/homebrew/opt/openssl@3/lib/libcrypto.a /opt/homebrew/opt/lz4/lib/liblz4.a /opt/homebrew/lib/libsnappy.a /Applications/Xcode_15.4.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/lib/libz.tbd /opt/homebrew/lib/libzstd.a /Applications/Xcode_15.4.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/lib/libcurl.tbd /Applications/Xcode_15.4.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/lib/libcurl.tbd /opt/homebrew/lib/libutf8proc.a && :
ld: warning: ignoring duplicate libraries: '/Users/runner/work/arrow-java/arrow-java/build/cpp-install/lib/libarrow_dataset.a'
duplicate symbol '__ZN5arrow7compute8internal10LocateZoneENSt3__117basic_string_viewIcNS2_11char_traitsIcEEEE' in:
/Users/runner/work/arrow-java/arrow-java/build/cpp-install/lib/libarrow.a[10](unity_2_cxx.cxx.o)
/Users/runner/work/arrow-java/arrow-java/build/cpp-install/lib/libarrow_compute.a[4](unity_3_cxx.cxx.o)
ld: 1 duplicate symbols
clang: error: linker command failed with exit code 1 (use -v to see invocation)

arrow::compute::internal::LocateZone() is duplicated.

@koukou added the CI: Extra: C++ Run extra C++ CI label Oct 9, 2025
@koukou removed the CI: Extra: C++ Run extra C++ CI label Oct 9, 2025
@koukou changed the title GH-47748: [C++] Fix bundled aws-c-common detectionGH-47748: [C++][Dataset] Fix link error on macOSOct 9, 2025
@kou

kou commented Oct 9, 2025

Copy link
Copy Markdown
MemberAuthor

Fixed: https://github.com/kou/arrow-java/actions/runs/18370527401/job/52334724160#step:12:2489

 + cmake --build /Users/runner/work/arrow-java/arrow-java/build/java_jni --target install
[0/1] Install the project...
-- Install configuration: "release"
-- Installing: /Users/runner/work/arrow-java/arrow-java/build/java_jni/java-jni/lib/arrow_cdata_jni/aarch_64/libarrow_cdata_jni.dylib
-- Installing: /Users/runner/work/arrow-java/arrow-java/build/java_jni/java-jni/lib/arrow_dataset_jni/aarch_64/libarrow_dataset_jni.dylib
-- Installing: /Users/runner/work/arrow-java/arrow-java/build/java_jni/java-jni/lib/gandiva_jni/aarch_64/libgandiva_jni.dylib
-- Installing: /Users/runner/work/arrow-java/arrow-java/build/java_jni/java-jni/lib/arrow_orc_jni/aarch_64/libarrow_orc_jni.dylib

This is ready.

This error is another problem that should be fixed in apache/arrow-java:

https://github.com/kou/arrow-java/actions/runs/18370527401/job/52334724160#step:12:2535

 Error: Unexpected shared dependency found in arrow_dataset_jni/aarch_64/libarrow_dataset_jni.dylib: `Network`

compute/kernels/scalar_temporal_binary.cc
compute/kernels/scalar_temporal_unary.cc
compute/kernels/scalar_validity.cc
compute/kernels/temporal_internal.cc

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

that's a good find! Thanks for the fix!
Does this kernel has to be part of libarrow core, can't it be part of libarrow_compute instead? Maybe @rok
We should try to keep on libarrow only the core kernels (like cast, etcetera) that are required for libarrow.

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

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

I think that we need this in libarrow.so because

#include"arrow/compute/kernels/temporal_internal.h"
uses this.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

ok, let's merge this and maybe we could explore whether this is "really necessary" as a core kernel on a separate issue? @rok ?

@github-actionsgithub-actionsBot added awaiting changes Awaiting changes and removed awaiting change review Awaiting change review labels Oct 10, 2025
@raulcd
raulcd merged commit 7700dd4 into apache:mainOct 10, 2025
48 checks passed
@raulcdraulcd removed the awaiting changes Awaiting changes label Oct 10, 2025
@github-actionsgithub-actionsBot added the awaiting merge Awaiting merge label Oct 10, 2025
raulcd pushed a commit that referenced this pull request Oct 10, 2025
### Rationale for this change
There are link errors with build options for JNI on macOS.
### What changes are included in this PR?
`ARROW_BUNDLED_STATIC_LIBS` has CMake target names defined in Apache Arrow not `find_package()`-ed target names. So we should use `aws-c-common` not `AWS::aws-c-common`.
Recent aws-c-common or something use the Network framework. So add `Network` to `Arrow::arrow_bundled_dependencies` dependencies.
Don't use `compute/kernels/temporal_internal.cc` in `libarrow.dylib` and `libarrow_compute.dylib` to avoid duplicated symbols error.
### Are these changes tested?
Yes.
### Are there any user-facing changes?
Yes.
* GitHub Issue: #47748
Authored-by: Sutou Kouhei <kou@clear-code.com>
Signed-off-by: Raúl Cumplido <raulcumplido@gmail.com>
@kou
kou deleted the cpp-arrow-config-macos branch October 10, 2025 12:43
@conbench-apache-arrow

Copy link
Copy Markdown

After merging your PR, Conbench analyzed the 3 benchmarking runs that have been run so far on merge-commit 7700dd4.

There were no benchmark performance regressions. 🎉

The full Conbench report has more details.

zanmato1984 pushed a commit to zanmato1984/arrow that referenced this pull request Oct 15, 2025
### Rationale for this change
There are link errors with build options for JNI on macOS.
### What changes are included in this PR?
`ARROW_BUNDLED_STATIC_LIBS` has CMake target names defined in Apache Arrow not `find_package()`-ed target names. So we should use `aws-c-common` not `AWS::aws-c-common`.
Recent aws-c-common or something use the Network framework. So add `Network` to `Arrow::arrow_bundled_dependencies` dependencies.
Don't use `compute/kernels/temporal_internal.cc` in `libarrow.dylib` and `libarrow_compute.dylib` to avoid duplicated symbols error.
### Are these changes tested?
Yes.
### Are there any user-facing changes?
Yes.
* GitHub Issue: apache#47748
Authored-by: Sutou Kouhei <kou@clear-code.com>
Signed-off-by: Raúl Cumplido <raulcumplido@gmail.com>
Mottl pushed a commit to Mottl/arrow that referenced this pull request May 26, 2026
### Rationale for this change
There are link errors with build options for JNI on macOS.
### What changes are included in this PR?
`ARROW_BUNDLED_STATIC_LIBS` has CMake target names defined in Apache Arrow not `find_package()`-ed target names. So we should use `aws-c-common` not `AWS::aws-c-common`.
Recent aws-c-common or something use the Network framework. So add `Network` to `Arrow::arrow_bundled_dependencies` dependencies.
Don't use `compute/kernels/temporal_internal.cc` in `libarrow.dylib` and `libarrow_compute.dylib` to avoid duplicated symbols error.
### Are these changes tested?
Yes.
### Are there any user-facing changes?
Yes.
* GitHub Issue: apache#47748
Authored-by: Sutou Kouhei <kou@clear-code.com>
Signed-off-by: Raúl Cumplido <raulcumplido@gmail.com>
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@kou@raulcd