Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fixes for PyArrow #59

Draft
wants to merge 1 commit into
base: master
Choose a base branch
from
Draft

Conversation

pitrou
Copy link

@pitrou pitrou commented Jan 2, 2025

Assorted fixes and improvements:

  • ensure the entire test suite passes under Linux
  • add --no-patch option to disable the DLL search path patching logic
  • add --mangle-only option to select individual DLL to name-mangle
  • dependencies already in the wheel are not copied into <distname>.libs anymore

Assorted fixes and improvements:

* ensure the entire test suite passes under Linux
* add `--no-patch` option to disable the DLL patch patching logic
* add `--mangle-only` option to select individual DLL to name-mangle
* dependencies already in the wheel are not copied into `<distname>.libs` anymore
@pitrou
Copy link
Author

pitrou commented Jan 2, 2025

This PR is probably not fit for merging (it lacks unit tests). If there is consensus on some of the changes, I can file individual PRs for them.

@adang1345

@pitrou pitrou mentioned this pull request Jan 2, 2025
@pitrou
Copy link
Author

pitrou commented Jan 2, 2025

I'm realizing there is a dev branch, should I rebase on that one?

pitrou added a commit to apache/arrow that referenced this pull request Jan 4, 2025
…#35323)

### Rationale for this change

We need to ship the C++ standard library with our Windows wheels, as it is not guaranteed that a recent enough version is present on the system. However, some other Python libraries may require an even more recent version than the one we ship. This may incur crashes when PyArrow is imported before such other Python library, as the older version of the C++ standard library would be used by both.

### What changes are included in this PR?

Use a [fixed-up version](adang1345/delvewheel#59) of delvewheel that allows us to name-mangle an individual DLL, and name-mangle `msvcp140.dll` to ensure that other Python libraries do not reuse the version we ship.

### Are these changes tested?

By regular wheel build tests.

* Closes: #44855
* GitHub Issue: #33981
* GitHub Issue: #44855

Lead-authored-by: Antoine Pitrou <[email protected]>
Co-authored-by: Raúl Cumplido <[email protected]>
Co-authored-by: Antoine Pitrou <[email protected]>
Signed-off-by: Antoine Pitrou <[email protected]>
@adang1345
Copy link
Owner

Let me know whether 0bc542d solves the problem for your use case. It adds an option to mangle the names of direct dependencies of DLLs that are already in the wheel.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants