Skip to content

Commit

Permalink
Fix cross-platform compilation using `distutils._msvccompiler.MSVCCom…
Browse files Browse the repository at this point in the history
…piler`

Actually use the `plat_name` param in `MSVCCompiler.initialize`
Added tests
  • Loading branch information
Avasam committed Sep 14, 2024
1 parent 3ac1adc commit a0339c1
Show file tree
Hide file tree
Showing 3 changed files with 26 additions and 1 deletion.
2 changes: 1 addition & 1 deletion distutils/_msvccompiler.py
Original file line number Diff line number Diff line change
Expand Up @@ -284,7 +284,7 @@ def initialize(self, plat_name=None):
f"--plat-name must be one of {tuple(_vcvars_names)}"
)

plat_spec = _get_vcvars_spec(get_host_platform(), get_platform())
plat_spec = _get_vcvars_spec(get_host_platform(), plat_name)

vc_env = _get_vc_env(plat_spec)
if not vc_env:
Expand Down
24 changes: 24 additions & 0 deletions distutils/tests/test_msvccompiler.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,13 @@

import os
import sys
import sysconfig
import threading
import unittest.mock as mock
from distutils import _msvccompiler
from distutils.errors import DistutilsPlatformError
from distutils.tests import support
from distutils.util import get_platform

import pytest

Expand All @@ -28,6 +30,28 @@ def _find_vcvarsall(plat_spec):
'wont find this version',
)

@pytest.mark.skipif(
not sysconfig.get_platform().startswith("win"),
reason="Only run test for non-mingw Windows platforms",
)
@pytest.mark.parametrize(
"plat_name, expected",
[
("win-arm64", "win-arm64"),
("win-amd64", "win-amd64"),
(None, get_platform()),
],
)
def test_cross_platform_compilation_paths(self, monkeypatch, plat_name, expected):
compiler = _msvccompiler.MSVCCompiler()

# makes sure that the right target platform name is used
def _get_vcvars_spec(host_platform, platform):
assert platform == expected

monkeypatch.setattr(_msvccompiler, '_get_vcvars_spec', _get_vcvars_spec)
compiler.initialize(plat_name)

@needs_winreg
def test_get_vc_env_unicode(self):
test_var = 'ṰḖṤṪ┅ṼẨṜ'
Expand Down
1 change: 1 addition & 0 deletions newsfragments/298.bugfix.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Fix cross-platform compilation using `distutils._msvccompiler.MSVCCompiler` -- by :user:`saschanaz` and :user:`Avasam`

0 comments on commit a0339c1

Please sign in to comment.