From 1d3c4e192c61e8decb9e350dc76d64763dbb1e6e Mon Sep 17 00:00:00 2001 From: Thaddeus Crews Date: Sun, 29 Sep 2024 10:44:05 -0500 Subject: [PATCH] SCons: Include pre-release in MSVC detection --- methods.py | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/methods.py b/methods.py index df7ca5a59fc..04541c72ad2 100644 --- a/methods.py +++ b/methods.py @@ -807,7 +807,20 @@ def get_compiler_version(env): if env.msvc and not using_clang(env): try: - args = [env["VSWHERE"], "-latest", "-products", "*", "-requires", "Microsoft.Component.MSBuild", "-utf8"] + # FIXME: `-latest` works for most cases, but there are edge-cases where this would + # benefit from a more nuanced search. + # https://github.com/godotengine/godot/pull/91069#issuecomment-2358956731 + # https://github.com/godotengine/godot/pull/91069#issuecomment-2380836341 + args = [ + env["VSWHERE"], + "-latest", + "-prerelease", + "-products", + "*", + "-requires", + "Microsoft.Component.MSBuild", + "-utf8", + ] version = subprocess.check_output(args, encoding="utf-8").strip() for line in version.splitlines(): split = line.split(":", 1) @@ -816,6 +829,8 @@ def get_compiler_version(env): ret["major"] = int(sem_ver[0]) ret["minor"] = int(sem_ver[1]) ret["patch"] = int(sem_ver[2]) + # Could potentially add section for determining preview version, but + # that can wait until metadata is actually used for something. if split[0] == "catalog_buildVersion": ret["metadata1"] = split[1] except (subprocess.CalledProcessError, OSError):