feat: set up delvewheel as the default repair wheel command for Windows (#2831)
* Add a default repair wheel command for Windows * Install `delvewheel` into Windows build tools * Add delvewheel to constraints file * Regenerate constraints * Docs * Suggest how to disable Windows wheel repair * Add tests * Run `delvewheel` with verbose mode as default * Add note about telling delvewheel where to look Suggested-by: Nils <nilsnolde@proton.me> * Partially revert 81374bb8fc43acefed76cb13d761a9e6cf6afa58 * Add `pip` and `uv` cases for build installations * Ignore `python-native.dll` for GraalPy * Ignore MSVC DLLs, try Windows amd64 graalpy happy * Fix last remaining Windows test failure (famous last words?) * Update constraints * Drop workaround unneeded with delvewheel v1.12.1 * Update docs/options.md Co-authored-by: Aohan Dang <adang1345@gmail.com> * Drop `test_delvewheel_default_on_windows` * Partially revert "Update constraints" This partially reverts commit 2dc4c0f4951858959e213463d90431a5ca03b96f. * Add a test case when repair command is `""` * Add back test that checks delvewheel run/disable * Add a C project with a missing DLL * Add tests for `missing_dll_project` * Partially undo virtualenv/python-discovery update * Fix test * Discard changes to cibuildwheel/resources/constraints-pyodide312.txt * Discard changes to cibuildwheel/resources/constraints-pyodide314.txt * Fix bad merge of constraints * Discard changes to cibuildwheel/resources/constraints-pyodide313.txt * Manually add more GraalPy pip markers * Dependency parsing was too naïve * Maybe a better way to invoke the compiler on Windows * Can we get away without a DLL? --------- Co-authored-by: Aohan Dang <adang1345@gmail.com>
This commit is contained in:
co-authored by
Aohan Dang
parent
6d9f4c9545
commit
78869d0cf6
@@ -10,7 +10,7 @@ from cibuildwheel.util import resources
|
||||
|
||||
from . import test_projects, utils
|
||||
|
||||
VERSION_REGEX = r"([\w-]+)==([^\s]+)"
|
||||
VERSION_REGEX = r"([\w-]+)==([^;\s]+)"
|
||||
|
||||
CHECK_VERSIONS_SCRIPT = """\
|
||||
'''
|
||||
@@ -73,7 +73,13 @@ def test_check_versions_script(
|
||||
def get_versions_from_constraint_file(constraint_file: Path) -> dict[str, str]:
|
||||
constraint_file_text = constraint_file.read_text(encoding="utf-8")
|
||||
|
||||
return dict(re.findall(VERSION_REGEX, constraint_file_text))
|
||||
# Use the first occurrence of each package name. The marker-bearing lines
|
||||
# (such as the GraalPy-specific pip pin) come after the default pin, so the
|
||||
# first match is the one that applies to the majority of builds.
|
||||
result: dict[str, str] = {}
|
||||
for name, version in re.findall(VERSION_REGEX, constraint_file_text):
|
||||
result.setdefault(name, version)
|
||||
return result
|
||||
|
||||
|
||||
@pytest.mark.parametrize("python_version", ["3.9", "3.13"])
|
||||
|
||||
Reference in New Issue
Block a user