Skip to content

GH-51487: [CI] Fix Emscripten wheel load failure by disabling llvm-strip on install - #51488

Merged
raulcd merged 3 commits into
apache:mainfrom
tadeja:ems-load-pyarrow-dylink
Sep 30, 2026
Merged

raulcd merged 3 commits into
apache:mainfrom
tadeja:ems-load-pyarrow-dylink

Conversation

@tadeja

@tadeja tadeja commented Sep 24, 2026 •

Copy link
Copy Markdown
Member

Rationale for this change

Fix #51487 - starting with LLVM 23 the required dylink.0 is not kept during CMake install strip. (see llvm/llvm-project@52eb82e)

What changes are included in this PR?

Disable wheel install stripping with SKBUILD_INSTALL_STRIP=false
(applying alternative workaround llvm-strip --keep-section=dylink.0 would require more code changes)

Are these changes tested?

Verified by CI.

Are there any user-facing changes?

No.

Was AI used for this PR?

Just gpt-6-sol during initial analysis
PR code and description written by:

  • Human
  • AI

Reviewed before submission by:

  • Human
  • AI
  • Not reviewed

@github-actions

Copy link
Copy Markdown

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

@github-actions github-actions Bot added the awaiting committer review Awaiting committer review label Sep 24, 2026
@tadeja

tadeja commented Sep 24, 2026

Copy link
Copy Markdown
Member Author

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

@github-actions

Copy link
Copy Markdown

Revision: f001b5c

Submitted crossbow builds: ursacomputing/crossbow @ actions-8b6863eb0b

Task Status
test-conda-python-emscripten GitHub Actions

@tadeja tadeja changed the title GH-51487: [CI] Fix Emscripten wheel load failure by disabling llvm-strip GH-51487: [CI] Fix Emscripten wheel load failure by disabling llvm-strip on install Sep 24, 2026
@tadeja
tadeja marked this pull request as ready for review September 28, 2026 09:01
Copilot AI lite review requested due to automatic review settings September 28, 2026 09:01

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 review overview

🟢 Approval recommended

No unresolved review issues were identified.

Review effort: Lite
Findings: None

What changed in this PR

Disables Emscripten wheel installation stripping to preserve LLVM’s required dylink.0 section.

Changes:

  • Sets SKBUILD_INSTALL_STRIP=false before pyodide build.
File Description
ci/​scripts/​python_build_emscripten.sh Disables stripping during Emscripten wheel creation.

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.


pushd "${python_build_dir}"
# For LLVM 23 llvm-strip to not remove required dylink.0
export SKBUILD_INSTALL_STRIP=false

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.

I am wondering whether we want this happening on the rest of the wheels too.
Should we just try to add this section to the pyproject.toml:

[tool.scikit-build]
install.strip = false

We manually strip debug symbols on wheels when building but I am unsure we want to strip all as discussed in the past. Details here:

@rok what do you think?

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.

For my understanding - what level of symbols do we want to distribute in wheels? Debug or less? Should we have debug wheels (that we perhaps only distribute through github and not pypi to save pypi quota).
How about distributing debug symbols separately? (see generated prototype here https://github.com/rok/arrow/pull/59/changes)

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.

I think we can merge this. This seems to have been the behaviour since scikit-build-core 0.5 and we've had several releases with it. No need to change current behavior globally.

@github-actions github-actions Bot added awaiting changes Awaiting changes and removed awaiting committer review Awaiting committer review labels Sep 28, 2026

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

A minor comment nit. @tadeja what do you think about the comment?

Comment thread ci/scripts/python_build_emscripten.sh Outdated
fi

pushd "${python_build_dir}"
# For LLVM 23 llvm-strip to not remove required dylink.0

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.

I think the comment should also refer to scikit-build-core striping symbols.

Suggested change
# For LLVM 23 llvm-strip to not remove required dylink.0
# scikit-build-core strips unnecessary symbols by default.
# Avoid LLVM 23 llvm-strip to strip the required dylink.0

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.

@raulcd I've added your suggestion and also updated my previous comment with llvm/llvm-project#180246. I hope that looks alright now.

@github-actions github-actions Bot added awaiting review Awaiting review awaiting merge Awaiting merge and removed awaiting changes Awaiting changes labels Sep 30, 2026
Co-authored-by: Raúl Cumplido <raulcumplido@gmail.com>
@github-actions github-actions Bot added awaiting review Awaiting review and removed awaiting review Awaiting review awaiting merge Awaiting merge labels Sep 30, 2026
Comment thread ci/scripts/python_build_emscripten.sh Outdated
Copilot AI lite review requested due to automatic review settings September 30, 2026 09:45
@github-actions github-actions Bot added awaiting changes Awaiting changes and removed awaiting review Awaiting review labels Sep 30, 2026
@github-actions github-actions Bot added awaiting change review Awaiting change review and removed awaiting changes Awaiting changes labels Sep 30, 2026

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 review overview

🟢 Approval recommended

No unresolved review issues were identified.

Review effort: Lite
Findings: None

@github-actions github-actions Bot added awaiting changes Awaiting changes and removed awaiting change review Awaiting change review labels Sep 30, 2026

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

I am merging as the changes since last approval where just about the comment.

@raulcd
raulcd merged commit e3150f2 into apache:main Sep 30, 2026
41 checks passed
@raulcd raulcd removed the awaiting changes Awaiting changes label Sep 30, 2026
@github-actions github-actions Bot added the awaiting merge Awaiting merge label Sep 30, 2026
@tadeja
tadeja deleted the ems-load-pyarrow-dylink branch September 30, 2026 14:06
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

awaiting merge Awaiting merge

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[CI] Emscripten wheel load fails due to LLVM 23 llvm-strip removed dylink

4 participants