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:
parent
65763d18fb
commit
1ea05cd456
@ -7,12 +7,15 @@
|
|||||||
import platform as py_platform
|
import platform as py_platform
|
||||||
import re
|
import re
|
||||||
|
|
||||||
|
import llnl.util.lang
|
||||||
|
|
||||||
from spack.util.executable import Executable
|
from spack.util.executable import Executable
|
||||||
from spack.version import Version
|
from spack.version import Version
|
||||||
|
|
||||||
from ._operating_system import OperatingSystem
|
from ._operating_system import OperatingSystem
|
||||||
|
|
||||||
|
|
||||||
|
@llnl.util.lang.memoized
|
||||||
def macos_version():
|
def macos_version():
|
||||||
"""Get the current macOS version as a version object.
|
"""Get the current macOS version as a version object.
|
||||||
|
|
||||||
@ -59,6 +62,7 @@ def macos_version():
|
|||||||
return Version(py_platform.mac_ver()[0])
|
return Version(py_platform.mac_ver()[0])
|
||||||
|
|
||||||
|
|
||||||
|
@llnl.util.lang.memoized
|
||||||
def macos_cltools_version():
|
def macos_cltools_version():
|
||||||
"""Find the last installed version of the CommandLineTools.
|
"""Find the last installed version of the CommandLineTools.
|
||||||
|
|
||||||
@ -82,6 +86,7 @@ def macos_cltools_version():
|
|||||||
return None
|
return None
|
||||||
|
|
||||||
|
|
||||||
|
@llnl.util.lang.memoized
|
||||||
def macos_sdk_path():
|
def macos_sdk_path():
|
||||||
"""Return path to the active macOS SDK.
|
"""Return path to the active macOS SDK.
|
||||||
"""
|
"""
|
||||||
|
Loading…
Reference in New Issue
Block a user