macos: fewer calls to sw_vers (#29997)

In a typical call to spack, the OperatingSystem gets instantiated
multiple times. For macOS, each one requires a call to `sw_vers`, which
is done through the Executable helper class. Memoizing
reduces the call count from "spac spec" from three to one.
This commit is contained in:
Seth R. Johnson
2022-04-11 03:31:24 -04:00
committed by GitHub
parent 65763d18fb
commit 1ea05cd456

View File

@@ -7,12 +7,15 @@
import platform as py_platform
import re
import llnl.util.lang
from spack.util.executable import Executable
from spack.version import Version
from ._operating_system import OperatingSystem
@llnl.util.lang.memoized
def macos_version():
"""Get the current macOS version as a version object.
@@ -59,6 +62,7 @@ def macos_version():
return Version(py_platform.mac_ver()[0])
@llnl.util.lang.memoized
def macos_cltools_version():
"""Find the last installed version of the CommandLineTools.
@@ -82,6 +86,7 @@ def macos_cltools_version():
return None
@llnl.util.lang.memoized
def macos_sdk_path():
"""Return path to the active macOS SDK.
"""