|
1 | | -import json |
2 | 1 | import os |
3 | 2 | import platform |
4 | 3 | import re |
5 | 4 | import subprocess |
6 | 5 | import sys |
| 6 | +import pathlib |
7 | 7 | import tempfile |
8 | 8 | from importlib.metadata import ( |
9 | 9 | version as get_version, |
@@ -52,24 +52,40 @@ def _find_cl(): |
52 | 52 | "ARM64": "arm64", |
53 | 53 | }.get(platform.machine(), "x86") |
54 | 54 | program_files = os.getenv("ProgramFiles(x86)") or os.getenv("ProgramFiles") |
| 55 | + |
55 | 56 | cmd = [ |
56 | 57 | os.path.join(program_files, r"Microsoft Visual Studio\Installer\vswhere.exe"), |
57 | 58 | "-prerelease", |
58 | 59 | "-latest", |
59 | 60 | "-products", |
60 | 61 | "*", |
61 | | - "-format", |
62 | | - "json", |
| 62 | + "-requires", |
| 63 | + "Microsoft.VisualStudio.Component.VC.Tools.x86.x64", |
| 64 | + "-property", |
| 65 | + "installationPath", |
| 66 | + # "-format", |
| 67 | + # "json", |
63 | 68 | "-utf8", |
64 | | - "-find", |
65 | | - rf"**\bin\Host{host_platform}\{build_platform}\cl.exe", |
| 69 | + # "-find", |
| 70 | + # rf"VC\Tools\MSVC\*\bin\Host{host_platform}\{build_platform}\cl.exe", |
| 71 | + # rf"**\bin\Host{host_platform}\{build_platform}\cl.exe", |
66 | 72 | ] |
67 | 73 | try: |
68 | | - return json.loads(subprocess.check_output(cmd, encoding="utf-8"))[-1] |
69 | | - except (OSError, subprocess.CalledProcessError, IndexError) as ex: |
| 74 | + install_dir = subprocess.check_output(cmd, encoding="utf-8") |
| 75 | + except subprocess.CalledProcessError as ex: |
70 | 76 | raise RuntimeError("No suitable compiler available") from ex |
71 | 77 |
|
72 | 78 |
|
| 79 | + print("in install dir:", list(pathlib.Path(install_dir).iterdir())) |
| 80 | + try: |
| 81 | + print("in install dir:", list((pathlib.Path(install_dir) / "VC\Auxiliary\Build").iterdir())) |
| 82 | + except Exception as exc: |
| 83 | + print("in install dir:", repr(exc)) |
| 84 | + default_version = (pathlib.Path(install_dir) / "VC\Auxiliary\Build\Microsoft.VCToolsVersion.default.txt").read_text() |
| 85 | + print("=========> default version:", default_version) |
| 86 | + |
| 87 | + return rf"{install_dir}\VC\Tools\MSVC\{default_version}\bin\Host{host_platform}\{build_platform}\cl.exe" |
| 88 | + |
73 | 89 | def _preprocess_msvc(code, extra_cpp_args, debug): |
74 | 90 | fd, source_file = tempfile.mkstemp(suffix=".c") |
75 | 91 | os.close(fd) |
|
0 commit comments