spack.platforms package
- class spack.platforms.Darwin[source]
Bases:
Platform
- binary_formats = ['macho']
binary formats used on this platform; used by relocation logic
- classmethod detect()[source]
Return True if the the host platform is detected to be the current Platform class, False otherwise.
Derived classes are responsible for implementing this method.
- setup_platform_environment(pkg, env)[source]
Specify deployment target based on target OS version.
The
MACOSX_DEPLOYMENT_TARGET
environment variable provides a default-mmacosx-version-min
argument for GCC and Clang compilers, as well as the default value ofCMAKE_OSX_DEPLOYMENT_TARGET
for CMake-based build systems. The default value for the deployment target is usually the major version (11, 10.16, …) for CMake and Clang, but some versions of GCC specify a minor component as well (11.3), leading to numerous link warnings about inconsistent or incompatible target versions. Setting the environment variable ensures consistent versions for an install toolchain target, even when the host macOS version changes.TODO: it may be necessary to add SYSTEM_VERSION_COMPAT for older versions of the macosx developer tools; see https://github.com/spack/spack/pull/26290 for discussion.
- class spack.platforms.FreeBSD[source]
Bases:
Platform
- class spack.platforms.Linux[source]
Bases:
Platform
- class spack.platforms.Platform(name)[source]
Bases:
object
Platform is an abstract class extended by subclasses.
To add a new type of platform (such as cray_xe), create a subclass and set all the class attributes such as priority, front_target, back_target, front_os, back_os.
Platform also contain a priority class attribute. A lower number signifies higher priority. These numbers are arbitrarily set and can be changed though often there isn’t much need unless a new platform is added and the user wants that to be detected first.
Targets are created inside the platform subclasses. Most architecture (like linux, and darwin) will have only one target family (x86_64) but in the case of Cray machines, there is both a frontend and backend processor. The user can specify which targets are present on front-end and back-end architecture.
Depending on the platform, operating systems are either autodetected or are set. The user can set the frontend and backend operating setting by the class attributes front_os and back_os. The operating system will be responsible for compiler detection.
- add_operating_system(name, os_class)[source]
Add the operating_system class object into the platform.operating_sys dictionary.
- add_target(name: str, target: Microarchitecture) None [source]
Used by the platform specific subclass to list available targets. Raises an error if the platform specifies a name that is reserved by spack as an alias.
- binary_formats = ['elf']
binary formats used on this platform; used by relocation logic
- classmethod detect()[source]
Return True if the the host platform is detected to be the current Platform class, False otherwise.
Derived classes are responsible for implementing this method.
- reserved_oss = ['default_os', 'frontend', 'fe', 'backend', 'be']
- reserved_targets = ['default_target', 'frontend', 'fe', 'backend', 'be']
- class spack.platforms.Test(name=None)[source]
Bases:
Platform
- class spack.platforms.Windows[source]
Bases:
Platform
- spack.platforms.by_name(name)[source]
Return a platform object that corresponds to the given name or None if there is no match.
- Parameters:
name (str) – name of the platform
- spack.platforms.host()
The current platform used by Spack. May be swapped by the use_platform context manager.
- spack.platforms.reset()[source]
The result of the host search is memoized. In case it needs to be recomputed we must clear the cache, which is what this function does.
Submodules
spack.platforms.cray module
spack.platforms.darwin module
- class spack.platforms.darwin.Darwin[source]
Bases:
Platform
- binary_formats = ['macho']
binary formats used on this platform; used by relocation logic
- classmethod detect()[source]
Return True if the the host platform is detected to be the current Platform class, False otherwise.
Derived classes are responsible for implementing this method.
- setup_platform_environment(pkg, env)[source]
Specify deployment target based on target OS version.
The
MACOSX_DEPLOYMENT_TARGET
environment variable provides a default-mmacosx-version-min
argument for GCC and Clang compilers, as well as the default value ofCMAKE_OSX_DEPLOYMENT_TARGET
for CMake-based build systems. The default value for the deployment target is usually the major version (11, 10.16, …) for CMake and Clang, but some versions of GCC specify a minor component as well (11.3), leading to numerous link warnings about inconsistent or incompatible target versions. Setting the environment variable ensures consistent versions for an install toolchain target, even when the host macOS version changes.TODO: it may be necessary to add SYSTEM_VERSION_COMPAT for older versions of the macosx developer tools; see https://github.com/spack/spack/pull/26290 for discussion.