Skip to content

GH-50648: [Packaging][Linux] Enable OpenTelemetry - #50650

Merged
raulcd merged 20 commits into
apache:mainfrom
kou:deb-otel
Aug 3, 2026
Merged

GH-50648: [Packaging][Linux] Enable OpenTelemetry#50650
raulcd merged 20 commits into
apache:mainfrom
kou:deb-otel

Conversation

@kou

@kou kou commented Jul 26, 2026

Copy link
Copy Markdown
Member

Rationale for this change

Debian GNU/Linux trixie or later and Ubuntu 26.04 or later provide opentelemetry-cpp-dev:

What changes are included in this PR?

  • Install opentelemetry-cpp-dev if it's available
  • Build bundled opentelemetry-cpp-dev if it's not available (including RPM)
  • Add missing dependencies for static build

Are these changes tested?

Yes.

Are there any user-facing changes?

Yes.

Copilot AI review requested due to automatic review settings July 26, 2026 20:53

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

@kou kou added the CI: Extra: Package: Linux Run extra Linux Packages CI label Jul 26, 2026
@github-actions

Copy link
Copy Markdown

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

@github-actions github-actions Bot added the awaiting committer review Awaiting committer review label Jul 26, 2026
Copilot AI review requested due to automatic review settings July 27, 2026 01:26

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

Copilot AI review requested due to automatic review settings July 27, 2026 07:08

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

Copilot AI review requested due to automatic review settings July 27, 2026 07:22

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

Copilot AI review requested due to automatic review settings July 27, 2026 07:59

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

Copilot AI review requested due to automatic review settings July 27, 2026 08:07

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

Copilot AI review requested due to automatic review settings July 27, 2026 08:08

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

@kou
kou requested a review from pitrou as a code owner July 27, 2026 12:20
Copilot AI review requested due to automatic review settings July 27, 2026 12:20

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

Copilot AI review requested due to automatic review settings July 27, 2026 13:43

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

Copilot AI review requested due to automatic review settings July 31, 2026 22:38

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

@kou

kou commented Aug 1, 2026

Copy link
Copy Markdown
Member Author

@github-actions crossbow submit -g wheel -g r *emscripten

@github-actions

github-actions Bot commented Aug 1, 2026

Copy link
Copy Markdown

Revision: 9c7c84c

Submitted crossbow builds: ursacomputing/crossbow @ actions-2a277f2dc1

Task Status
python-sdist GitHub Actions
r-binary-packages GitHub Actions
r-recheck-most GitHub Actions
test-conda-python-emscripten GitHub Actions
test-r-alpine-linux-cran GitHub Actions
test-r-arrow-backwards-compatibility GitHub Actions
test-r-depsource-system GitHub Actions
test-r-dev-duckdb GitHub Actions
test-r-devdocs GitHub Actions
test-r-extra-packages GitHub Actions
test-r-fedora-clang GitHub Actions
test-r-gcc-11 GitHub Actions
test-r-gcc-12 GitHub Actions
test-r-install-local GitHub Actions
test-r-install-local-minsizerel GitHub Actions
test-r-linux-as-cran GitHub Actions
test-r-linux-rchk GitHub Actions
test-r-linux-sanitizers GitHub Actions
test-r-linux-valgrind GitHub Actions
test-r-m1-san GitHub Actions
test-r-macos-as-cran GitHub Actions
test-r-offline-maximal GitHub Actions
test-r-ubuntu-22.04 GitHub Actions
test-r-versions GitHub Actions
test-r-wasm GitHub Actions
test-ubuntu-22.04-cpp-emscripten GitHub Actions
wheel-macos-monterey-cp311-cp311-amd64 GitHub Actions
wheel-macos-monterey-cp311-cp311-arm64 GitHub Actions
wheel-macos-monterey-cp312-cp312-amd64 GitHub Actions
wheel-macos-monterey-cp312-cp312-arm64 GitHub Actions
wheel-macos-monterey-cp313-cp313-amd64 GitHub Actions
wheel-macos-monterey-cp313-cp313-arm64 GitHub Actions
wheel-macos-monterey-cp314-cp314-amd64 GitHub Actions
wheel-macos-monterey-cp314-cp314-arm64 GitHub Actions
wheel-macos-monterey-cp314-cp314t-amd64 GitHub Actions
wheel-macos-monterey-cp314-cp314t-arm64 GitHub Actions
wheel-manylinux-2-28-cp311-cp311-amd64 GitHub Actions
wheel-manylinux-2-28-cp311-cp311-arm64 GitHub Actions
wheel-manylinux-2-28-cp312-cp312-amd64 GitHub Actions
wheel-manylinux-2-28-cp312-cp312-arm64 GitHub Actions
wheel-manylinux-2-28-cp313-cp313-amd64 GitHub Actions
wheel-manylinux-2-28-cp313-cp313-arm64 GitHub Actions
wheel-manylinux-2-28-cp314-cp314-amd64 GitHub Actions
wheel-manylinux-2-28-cp314-cp314-arm64 GitHub Actions
wheel-manylinux-2-28-cp314-cp314t-amd64 GitHub Actions
wheel-manylinux-2-28-cp314-cp314t-arm64 GitHub Actions
wheel-musllinux-1-2-cp311-cp311-amd64 GitHub Actions
wheel-musllinux-1-2-cp311-cp311-arm64 GitHub Actions
wheel-musllinux-1-2-cp312-cp312-amd64 GitHub Actions
wheel-musllinux-1-2-cp312-cp312-arm64 GitHub Actions
wheel-musllinux-1-2-cp313-cp313-amd64 GitHub Actions
wheel-musllinux-1-2-cp313-cp313-arm64 GitHub Actions
wheel-musllinux-1-2-cp314-cp314-amd64 GitHub Actions
wheel-musllinux-1-2-cp314-cp314-arm64 GitHub Actions
wheel-musllinux-1-2-cp314-cp314t-amd64 GitHub Actions
wheel-musllinux-1-2-cp314-cp314t-arm64 GitHub Actions
wheel-windows-cp311-cp311-amd64 GitHub Actions
wheel-windows-cp312-cp312-amd64 GitHub Actions
wheel-windows-cp313-cp313-amd64 GitHub Actions
wheel-windows-cp314-cp314-amd64 GitHub Actions
wheel-windows-cp314-cp314t-amd64 GitHub Actions

Copilot AI review requested due to automatic review settings August 1, 2026 07:21
@kou

kou commented Aug 1, 2026

Copy link
Copy Markdown
Member Author

@github-actions crossbow submit test-conda-python-emscripten

@github-actions

github-actions Bot commented Aug 1, 2026

Copy link
Copy Markdown

Revision: dc0fb97

Submitted crossbow builds: ursacomputing/crossbow @ actions-446f8349e0

Task Status
test-conda-python-emscripten GitHub Actions

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Pull request overview

Copilot reviewed 11 out of 11 changed files in this pull request and generated no new comments.

Suppressed comments (1)

cpp/src/arrow/ArrowConfig.cmake.in:85

  • In this if() branch, using if(${dependency} STREQUAL "opentelemetry-cpp") is fragile because unquoted values can be re-interpreted by CMake’s if() expression rules (e.g., as variable/keyword tokens), which can lead to unexpected evaluation if the dependency list ever contains an empty element or a token that matches an existing variable/keyword. Quoting the expanded value makes the comparison robust.
    if(${dependency} STREQUAL "opentelemetry-cpp")
      find_dependency(${dependency}
                      COMPONENTS
                      exporters_ostream
                      exporters_otlp_http

@kou

kou commented Aug 3, 2026

Copy link
Copy Markdown
Member Author

Only Pyodide + Emscripten build is still failing... It's difficult to debug... Can we open a new issue for it and work on it as a separated task...?

@raulcd

raulcd commented Aug 3, 2026

Copy link
Copy Markdown
Member

Can we open a new issue for it and work on it as a separated task...?

I am ok with opening a separate issue for emscripten.

@kou

kou commented Aug 3, 2026

Copy link
Copy Markdown
Member Author

Thanks. I opened it as #50774.

@raulcd raulcd 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.

LGTM, some questions to fully understand all the changes and the reason. Thanks @kou for working on this!

Comment thread dev/tasks/linux-packages/apache-arrow/Rakefile
set(AZURE_SDK_VENDORED
TRUE
PARENT_SCOPE)
list(PREPEND

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.

All the prepends are because we were overriding?

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

Hmm, no.

We build bundled dependencies from products that are depended upon (e.g. Abseil) to products that depend on them (e.g. Protobuf). If we use APPEND, ARROW_BUNDLED_STATIC_LIBS uses Abseil -> Protobuf order. In general, static linking command line uses Protobuf -> Abseil order to resolve Abseil symbols in Protobuf. But this may not be needed for libarrow_bundled_dependencies.a because it includes all symbols in one .a.

If we ensure using produces that are depended upon -> products that depend on them order, we can't use alphabetical order for all Abseil CMake targets (absl::*). But in this PR, I used alphabetical order for Abseil CMake targets because I don't want to check all dependency list. And it works.

Should we keep using APPEND because PREPEND may show that we want to use produces that are depended upon -> products that depend on them order?

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.

Thanks for the explanation. In my opinion using PREPEND makes sense here even if not strictly necessary. The benefit of not having to check all Abseil CMake targets is enough to justify. Maintaining reverse order based on our build dependency resolution (build_abseil, build_protobuf: Protobud -> Abseil) even though not being required makes sense to me.

@github-actions github-actions Bot added awaiting merge Awaiting merge awaiting changes Awaiting changes and removed awaiting committer review Awaiting committer review awaiting merge Awaiting merge labels Aug 3, 2026
@raulcd
raulcd merged commit f3a0848 into apache:main Aug 3, 2026
162 of 166 checks passed
@raulcd raulcd removed the awaiting changes Awaiting changes label Aug 3, 2026
@kou
kou deleted the deb-otel branch August 3, 2026 20:59
@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 f3a0848.

There were no benchmark performance regressions. 🎉

The full Conbench report has more details. It also includes information about 5 possible false positives for unstable benchmarks that are known to sometimes produce them.

kou pushed a commit that referenced this pull request Aug 6, 2026
…bstrait and ORC (#50792)

### Rationale for this change
Fix #50774. After #50650, the Pyodide build failed while loading PyArrow with `  ImportError: dynamic module does not define module export function (PyInit_lib)`.
The ImportError is misleading because the `PyInit_lib` is present. The actual failure is an earlier abort during static initialization of `libarrow_python.so`, in Protobuf descriptor registration.

#50650 changed the order of libraries merged into `libarrow_bundled_dependencies.a`. The archive contains duplicate weak Protobuf/Abseil symbols emitted by the Protobuf runtime and generated code in Substrait and in ORC. These symbols had inconsistent visibility:
a) Protobuf was compiled with *hidden* visibility,
b) Substrait and ORC generated Protobuf code used default visibility,
so the order change caused `wasm-ld` to select symbols with different visibility.
 (e.g. `google::protobuf::internal::ZeroFieldsBase::Clear()` changed from hidden in Protobuf's `empty.pb.cc.o` to default visible in Substrait's `algebra.pb.cc.o`)

The failure showed up in Emscripten, no failures on other platforms, but matching visibility globally is desirable to prevent any unintended exports and symbol interposition.

### What changes are included in this PR?
Compile bundled Substrait and ORC with the same hidden visibility for symbols as Protobuf so not depending on archive order.
Also add debug for Emscripten CI builds `--profiling-funcs`.

### Are these changes tested?
Yes, `test-conda-python-emscripten` passes
(Local repro, debug and fix verification with `ARCH=amd64 archery docker run conda-python-emscripten`, for symbols `llvm-nm` and `wasm-ld`)

### Are there any user-facing changes?
No.
* GitHub Issue: #50774

Authored-by: Tadeja Kadunc <tadeja.kadunc@gmail.com>
Signed-off-by: Sutou Kouhei <kou@clear-code.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

CI: Extra: C++ Run extra C++ CI CI: Extra: Package: Linux Run extra Linux Packages CI CI: Extra: R Run extra R CI Component: C++

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants