Skip to content

Set up delvewheel as the default repair wheel command for Windows#2831

Open
agriyakhetarpal wants to merge 21 commits intopypa:mainfrom
agriyakhetarpal:delvewheel-windows
Open

Set up delvewheel as the default repair wheel command for Windows#2831
agriyakhetarpal wants to merge 21 commits intopypa:mainfrom
agriyakhetarpal:delvewheel-windows

Conversation

@agriyakhetarpal
Copy link
Copy Markdown
Member

@agriyakhetarpal agriyakhetarpal commented May 1, 2026

This PR adds delvewheel in the usual places for it to the default wheel repair command for our Windows platform in cibuildwheel v4. The current version is v1.12.0, and the project has become fairly stable as of 2026.

I think I covered everything, but please LMK if I missed anything. @joerick, since you expressed interest in adding this in various issues, it'd be great if you could take a look – and by all means, please feel free to push any further changes to my PR!

Also, cc: @adang1345 (I hope it is okay for us to ping you here!)

Thank you! :)

Also, perhaps we should look at #1567 too while we're at it, based on the open issues that reference "delvewheel".

@agriyakhetarpal
Copy link
Copy Markdown
Member Author

One of the concerns we had was listed in #2047 (comment), about users having to add --add-path to the Windows wheel repair. I think that can be resolved if we make a note of this in the docs, but I will wait for preliminary review suggestions to come, first.

@nilsnolde
Copy link
Copy Markdown

nilsnolde commented May 1, 2026

Thanks, I appreciate that:) I'll just reiterate that IMO this is a more general Windows limitation, they don't have a proper system package manager (EDIT: though I did see a winget randomly recently) and the way I always use it is to reference vcpkg/conan dll's (there's probably more scenarios for sure, but this might be the most dominant). Adding it to the docs will be appreciated by everyone. Much better than the current situation:)

Suggested-by: Nils <nilsnolde@proton.me>
@agriyakhetarpal
Copy link
Copy Markdown
Member Author

Thanks, I appreciate that:) I'll just reiterate that IMO this is a more general Windows limitation, they don't have a proper system package manager (EDIT: though I did see a winget randomly recently) and the way I always use it is to reference vcpkg/conan dll's (there's probably more scenarios for sure, but this might be the most dominant). Adding it to the docs will be appreciated by everyone. Much better than the current situation:)

Good point, thanks @nilsnolde. I agree that vcpkg is the closest to this kind of thing out there (and even Meson wraps is one more option). I added a note in 8cfdbf7. Does that suffice? :)

Comment thread cibuildwheel/platforms/windows.py Outdated
@agriyakhetarpal agriyakhetarpal requested a review from timfel May 1, 2026 18:19
@agriyakhetarpal

This comment was marked as resolved.

@agriyakhetarpal agriyakhetarpal added CI: GraalPy Run the integration test suite with GraalPy included CI: PyPy Run the integration test suite with PyPy included labels May 1, 2026
@nilsnolde
Copy link
Copy Markdown

nilsnolde commented May 2, 2026

I added a note in 8cfdbf7. Does that suffice? :)

@agriyakhetarpal IMO sounds perfect, thanks!

@adang1345
Copy link
Copy Markdown

By the way, I just made a new delvewheel release 1.12.1, which automatically excludes the DLLs provided by or required by GraalPy (vcruntime140.dll, vcruntime140_1.dll, and python-native.dll).

@agriyakhetarpal
Copy link
Copy Markdown
Member Author

Awesome, thanks a lot @adang1345!

@agriyakhetarpal agriyakhetarpal marked this pull request as draft May 6, 2026 22:10
@agriyakhetarpal agriyakhetarpal marked this pull request as ready for review May 6, 2026 22:14
Comment thread docs/options.md Outdated
Co-authored-by: Aohan Dang <adang1345@gmail.com>
Copy link
Copy Markdown
Contributor

@joerick joerick left a comment

Choose a reason for hiding this comment

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

Thanks for working on this agriya!

Looks good from my end overall.

Comment thread test/test_windows.py Outdated
Comment thread test/test_windows.py Outdated
@joerick
Copy link
Copy Markdown
Contributor

joerick commented May 8, 2026

While I'm thinking about it, this is a change that needs a good notice in release notes. Things to mention in the release notes

  • delvewheel runs by default , it will try to find and bundle dlls into your wheel
  • you can configure using repair-wheel-command, or
  • disable it (returning to pre-4.0 behaviour) by setting repair-wheel-command to empty-string.

I think the crucial thing to mention in release notes will be how to disable it for upgrading users that don't want this change yet.

@agriyakhetarpal agriyakhetarpal requested a review from joerick May 8, 2026 14:13
@agriyakhetarpal
Copy link
Copy Markdown
Member Author

FYI, I partially reverted the constraints bumps in 17d38ba because there was a failure likely due to pip==26.1.1 in https://github.com/pypa/cibuildwheel/actions/runs/25509576233/job/74864644182?pr=2831, which I was kind of stumped by, where GraalPy's pip was unable to install delvewheel at all. cc: @timfel for visibility. pip==26.0.1 works fine.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

CI: GraalPy Run the integration test suite with GraalPy included CI: PyPy Run the integration test suite with PyPy included

Projects

None yet

Development

Successfully merging this pull request may close these issues.

delvewheel as default for windows repair command

5 participants