From 07c091119fc56bc455133060bfbceda36debfb95 Mon Sep 17 00:00:00 2001 From: Joseph Brill <48932340+jcbrill@users.noreply.github.com> Date: Fri, 7 Aug 2020 06:09:09 -0400 Subject: Rework vc.py caching of installed vcs and remove cached_get_installed_vcs function. Replace external references to cached_get_installed_vcs with get_installed_vcs. Update CHANGES.txt. --- CHANGES.txt | 4 ++++ SCons/Tool/MSCommon/vc.py | 20 +++++++++----------- test/MSVC/MSVC_UWP_APP.py | 2 +- 3 files changed, 14 insertions(+), 12 deletions(-) diff --git a/CHANGES.txt b/CHANGES.txt index 7250a9b..cfc3a02 100755 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -8,6 +8,10 @@ NOTE: The 4.0.0 Release of SCons dropped Python 2.7 Support RELEASE VERSION/DATE TO BE FILLED IN LATER + From Joseph Brill: + - MSVC and test updates: Rework the msvc installed versions cache so that it is not + exposed externally and update external references accordingly. + From William Deegan: - Fix yacc tool, not respecting YACC set at time of tool initialization. diff --git a/SCons/Tool/MSCommon/vc.py b/SCons/Tool/MSCommon/vc.py index c6417e9..886288a 100644 --- a/SCons/Tool/MSCommon/vc.py +++ b/SCons/Tool/MSCommon/vc.py @@ -657,16 +657,12 @@ def _check_cl_exists_in_vc_dir(env, vc_dir, msvc_version): return False -def cached_get_installed_vcs(env=None): +def get_installed_vcs(env=None): global __INSTALLED_VCS_RUN - if __INSTALLED_VCS_RUN is None: - ret = get_installed_vcs(env) - __INSTALLED_VCS_RUN = ret - - return __INSTALLED_VCS_RUN + if __INSTALLED_VCS_RUN is not None: + return __INSTALLED_VCS_RUN -def get_installed_vcs(env=None): installed_versions = [] for ver in _VCVER: @@ -687,7 +683,9 @@ def get_installed_vcs(env=None): raise except VisualCException as e: debug('did not find VC %s: caught exception %s' % (ver, str(e))) - return installed_versions + + __INSTALLED_VCS_RUN = installed_versions + return __INSTALLED_VCS_RUN def reset_installed_vcs(): """Make it try again to find VC. This is just for the tests.""" @@ -758,7 +756,7 @@ def get_default_version(env): return msvs_version if not msvc_version: - installed_vcs = cached_get_installed_vcs(env) + installed_vcs = get_installed_vcs(env) debug('installed_vcs:%s' % installed_vcs) if not installed_vcs: #msg = 'No installed VCs' @@ -853,7 +851,7 @@ def msvc_find_valid_batch_script(env, version): warn_msg = "VC version %s not installed. " + \ "C/C++ compilers are most likely not set correctly.\n" + \ " Installed versions are: %s" - warn_msg = warn_msg % (version, cached_get_installed_vcs(env)) + warn_msg = warn_msg % (version, get_installed_vcs(env)) SCons.Warnings.warn(SCons.Warnings.VisualCMissingWarning, warn_msg) continue @@ -948,7 +946,7 @@ def msvc_setup_env(env): SCons.Warnings.warn(SCons.Warnings.VisualCMissingWarning, warn_msg) def msvc_exists(env=None, version=None): - vcs = cached_get_installed_vcs(env) + vcs = get_installed_vcs(env) if version is None: return len(vcs) > 0 return version in vcs diff --git a/test/MSVC/MSVC_UWP_APP.py b/test/MSVC/MSVC_UWP_APP.py index 0f33dda..4bb2f5c 100644 --- a/test/MSVC/MSVC_UWP_APP.py +++ b/test/MSVC/MSVC_UWP_APP.py @@ -82,7 +82,7 @@ test = TestSCons.TestSCons() test.skip_if_not_msvc() -installed_msvc_versions = msvc.cached_get_installed_vcs() +installed_msvc_versions = msvc.get_installed_vcs() # MSVC guaranteed to be at least one version on the system or else # skip_if_not_msvc() function would have skipped the test -- cgit v0.12