spack.build_systems package
Submodules
spack.build_systems.aspell_dict module
- class spack.build_systems.aspell_dict.AspellBuilder(pkg: PackageBase)[source]
Bases:
AutotoolsBuilder
The Aspell builder is close enough to an autotools builder to allow specializing the builder class, so to use variables that are specific to the Aspell extensions.
- configure(pkg, spec, prefix)[source]
Run “configure”, with the arguments specified by the builder and an appropriately set prefix.
- run_after_callbacks = [(('autoreconf', None), <function AutotoolsBuilder._do_patch_config_files>), (('configure', None), <function AutotoolsBuilder._do_patch_libtool>), (('autoreconf', None), <function AutotoolsBuilder.set_configure_or_die>), (('build', None), <function execute_build_time_tests>), (('install', None), <function execute_install_time_tests>), (('install', None), <function AutotoolsBuilder.remove_libtool_archives>), (('install', 'platform=darwin'), <function apply_macos_rpath_fixups>), (('install', None), <function sanity_check_prefix>)]
- run_before_callbacks = [(('configure', None), <function AutotoolsBuilder._patch_usr_bin_file>), (('configure', None), <function AutotoolsBuilder._set_autotools_environment_variables>), (('configure', None), <function AutotoolsBuilder._do_patch_libtool_configure>), (('autoreconf', None), <function AutotoolsBuilder.delete_configure_to_force_update>)]
- class spack.build_systems.aspell_dict.AspellDictPackage(spec)[source]
Bases:
AutotoolsPackage
Specialized class for building aspell dictionairies.
- AutotoolsBuilder
Override the default autotools builder
alias of
AspellBuilder
- disable_redistribute: Dict[Spec, DisableRedistribute]
Store whether a given Spec source/binary should not be redistributed.
- run_after_callbacks = []
- run_before_callbacks = []
- spec: spack.spec.Spec
spack.build_systems.autotools module
- class spack.build_systems.autotools.AutotoolsBuilder(pkg: PackageBase)[source]
Bases:
BuilderWithDefaults
The autotools builder encodes the default way of installing software built with autotools. It has four phases that can be overridden, if need be:
They all have sensible defaults and for many packages the only thing necessary is to override the helper method
configure_args()
.For a finer tuning you may also override:
Method
Purpose
Specify
make
targets for the build phaseSpecify
make
targets for the install phaseRun build time tests if required
- autoreconf(pkg: PackageBase, spec: Spec, prefix: Prefix) None [source]
Not needed usually, configure should be already there
- autoreconf_extra_args: List[str] = []
Options to be passed to autoreconf when using the default implementation
- property autoreconf_search_path_args: List[str]
Search path includes for autoreconf. Add an -I flag for all aclocal dirs of build deps, skips the default path of automake, move external include flags to the back, since they might pull in unrelated m4 files shadowing spack dependencies.
- build(pkg: PackageBase, spec: Spec, prefix: Prefix) None [source]
Run “make” on the build targets specified by the builder.
- configure(pkg: PackageBase, spec: Spec, prefix: Prefix) None [source]
Run “configure”, with the arguments specified by the builder and an appropriately set prefix.
- configure_args() List[str] [source]
Return the list of all the arguments that must be passed to configure, except
--prefix
which will be pre-pended to the list.
- enable_or_disable(name: str, activation_value: Callable | str | None = None, variant: str | None = None) List[str] [source]
Same as
with_or_without()
but substitutewith
withenable
andwithout
withdisable
.- Parameters:
name – name of a valid multi-valued variant
activation_value –
if present accepts a single value and returns the parameter to be used leading to an entry of the type
--enable-{name}={parameter}
The special value “prefix” can also be assigned and will return
spec[name].prefix
as activation parameter.
- Returns:
list of arguments to configure
- force_autoreconf = False
Set to true to force the autoreconf step even if configure is present
- install(pkg: PackageBase, spec: Spec, prefix: Prefix) None [source]
Run “make” on the install targets specified by the builder.
- install_libtool_archives = False
If False deletes all the .la files in the prefix folder after the installation. If True instead it installs them.
- legacy_attributes: Tuple[str, ...] = ('archive_files', 'patch_libtool', 'build_targets', 'install_targets', 'build_time_test_callbacks', 'install_time_test_callbacks', 'force_autoreconf', 'autoreconf_extra_args', 'install_libtool_archives', 'patch_config_files', 'configure_directory', 'configure_abs_path', 'build_directory', 'autoreconf_search_path_args')
Names associated with package attributes in the old build-system format
- legacy_methods: Tuple[str, ...] = ('configure_args', 'check', 'installcheck')
Names associated with package methods in the old build-system format
- property patch_config_files: bool
Whether to update old
config.guess
andconfig.sub
files distributed with the tarball.This currently only applies to
ppc64le:
,aarch64:
, andriscv64
target architectures.The substitutes are taken from the
gnuconfig
package, which is automatically added as a build dependency for these architectures. In case system versions of these config files are required, thegnuconfig
package can be marked external, with a prefix pointing to the directory containing the systemconfig.guess
andconfig.sub
files.
- patch_libtool = True
Whether to update
libtool
(e.g. for Arm/Clang/Fujitsu/NVHPC compilers)
- phases: Tuple[str, ...] = ('autoreconf', 'configure', 'build', 'install')
Phases of a GNU Autotools package
- remove_libtool_archives() None [source]
Remove all .la files in prefix sub-folders if the package sets
install_libtool_archives
to be False.
- run_after_callbacks = [(('autoreconf', None), <function AutotoolsBuilder._do_patch_config_files>), (('configure', None), <function AutotoolsBuilder._do_patch_libtool>), (('autoreconf', None), <function AutotoolsBuilder.set_configure_or_die>), (('build', None), <function execute_build_time_tests>), (('install', None), <function execute_install_time_tests>), (('install', None), <function AutotoolsBuilder.remove_libtool_archives>), (('install', 'platform=darwin'), <function apply_macos_rpath_fixups>), (('install', None), <function sanity_check_prefix>)]
- run_before_callbacks = [(('configure', None), <function AutotoolsBuilder._patch_usr_bin_file>), (('configure', None), <function AutotoolsBuilder._set_autotools_environment_variables>), (('configure', None), <function AutotoolsBuilder._do_patch_libtool_configure>), (('autoreconf', None), <function AutotoolsBuilder.delete_configure_to_force_update>)]
- set_configure_or_die() None [source]
Ensure the presence of a “configure” script, or raise. If the “configure” is found, a module level attribute is set.
- Raises:
RuntimeError – if the “configure” script is not found
- setup_build_environment(env)[source]
Sets up the build environment for a package.
This method will be called before the current package prefix exists in Spack’s store.
- Parameters:
env – environment modifications to be applied when the package is built. Package authors can call methods on it to alter the build environment.
- with_or_without(name: str, activation_value: Callable | str | None = None, variant: str | None = None) List[str] [source]
Inspects a variant and returns the arguments that activate or deactivate the selected feature(s) for the configure options.
This function works on all type of variants. For bool-valued variants it will return by default
--with-{name}
or--without-{name}
. For other kinds of variants it will cycle over the allowed values and return either--with-{value}
or--without-{value}
.If activation_value is given, then for each possible value of the variant, the option
--with-{value}=activation_value(value)
or--without-{value}
will be added depending on whether or notvariant=value
is in the spec.- Parameters:
name – name of a valid multi-valued variant
activation_value –
callable that accepts a single value and returns the parameter to be used leading to an entry of the type
--with-{name}={parameter}
.The special value “prefix” can also be assigned and will return
spec[name].prefix
as activation parameter.
- Returns:
list of arguments to configure
- class spack.build_systems.autotools.AutotoolsPackage(spec)[source]
Bases:
PackageBase
Specialized class for packages built using GNU Autotools.
- build_system_class = 'AutotoolsPackage'
This attribute is used in UI queries that need to know the build system base class
- disable_redistribute: Dict[Spec, DisableRedistribute]
Store whether a given Spec source/binary should not be redistributed.
- flags_to_build_system_args(flags)[source]
Produces a list of all command line arguments to pass specified compiler flags to configure.
- legacy_buildsystem = 'autotools'
Legacy buildsystem attribute used to deserialize and install old specs
- run_after_callbacks = []
- run_before_callbacks = []
- spec: spack.spec.Spec
spack.build_systems.bundle module
- class spack.build_systems.bundle.BundleBuilder(pkg: PackageBase)[source]
Bases:
Builder
- run_after_callbacks = []
- run_before_callbacks = []
- class spack.build_systems.bundle.BundlePackage(spec)[source]
Bases:
PackageBase
General purpose bundle, or no-code, package class.
- build_system_class = 'BundlePackage'
This attribute is used in UI queries that require to know which build-system class we are using
- disable_redistribute: Dict[Spec, DisableRedistribute]
Store whether a given Spec source/binary should not be redistributed.
- has_code = False
Bundle packages do not have associated source or binary code.
- legacy_buildsystem = 'bundle'
Legacy buildsystem attribute used to deserialize and install old specs
- run_after_callbacks = []
- run_before_callbacks = []
- spec: spack.spec.Spec
spack.build_systems.cached_cmake module
- class spack.build_systems.cached_cmake.CachedCMakeBuilder(pkg: PackageBase)[source]
Bases:
CMakeBuilder
- property cache_name
- property cache_path
- define_cmake_cache_from_variant(cmake_var, variant=None, comment='')[source]
Return a Cached CMake field from the given variant’s value. See define_from_variant in lib/spack/spack/build_systems/cmake.py package
- legacy_attributes: Tuple[str, ...] = ('build_targets', 'install_targets', 'build_time_test_callbacks', 'archive_files', 'root_cmakelists_dir', 'std_cmake_args', 'build_dirname', 'build_directory', 'cache_name', 'cache_path')
Names associated with package attributes in the old build-system format
- legacy_methods: Tuple[str, ...] = ('cmake_args', 'check', 'initconfig_compiler_entries', 'initconfig_mpi_entries', 'initconfig_hardware_entries', 'std_initconfig_entries', 'initconfig_package_entries')
Names associated with package methods in the old build-system format
- phases: Tuple[str, ...] = ('initconfig', 'cmake', 'build', 'install')
Phases of a Cached CMake package Note: the initconfig phase is used for developer builds as a final phase to stop on
- run_after_callbacks = [(('install', None), <function CachedCMakeBuilder.install_cmake_cache>), (('build', None), <function execute_build_time_tests>), (('install', None), <function sanity_check_prefix>)]
- run_before_callbacks = []
- property std_cmake_args
Standard cmake arguments provided as a property for convenience of package writers
- class spack.build_systems.cached_cmake.CachedCMakePackage(spec)[source]
Bases:
CMakePackage
Specialized class for packages built using CMake initial cache.
This feature of CMake allows packages to increase reproducibility, especially between Spack- and manual builds. It also allows packages to sidestep certain parsing bugs in extremely long
cmake
commands, and to avoid system limits on the length of the command line.- CMakeBuilder
alias of
CachedCMakeBuilder
- disable_redistribute: Dict[Spec, DisableRedistribute]
Store whether a given Spec source/binary should not be redistributed.
- run_after_callbacks = []
- run_before_callbacks = []
- spec: spack.spec.Spec
- spack.build_systems.cached_cmake.cmake_cache_filepath(name, value, comment='')[source]
Generate a string for a cmake cache variable of type FILEPATH
- spack.build_systems.cached_cmake.cmake_cache_option(name, boolean_value, comment='', force=False)[source]
Generate a string for a cmake configuration option
- spack.build_systems.cached_cmake.cmake_cache_path(name, value, comment='', force=False)[source]
Generate a string for a cmake cache variable
spack.build_systems.cargo module
- class spack.build_systems.cargo.CargoBuilder(pkg: PackageBase)[source]
Bases:
BuilderWithDefaults
The Cargo builder encodes the most common way of building software with a rust Cargo.toml file. It has two phases that can be overridden, if need be:
For a finer tuning you may override:
Method
Purpose
Specify arguments to
cargo install
Specify arguments to
cargo test
- property build_args
Arguments for
cargo build
.
- property build_directory
Return the directory containing the main Cargo.toml.
- property check_args
Argument for
cargo test
during check phase
- legacy_attributes: Tuple[str, ...] = ('build_args', 'check_args', 'build_directory', 'install_time_test_callbacks')
Names associated with package attributes in the old build-system format
- legacy_methods: Tuple[str, ...] = ('check', 'installcheck')
Names associated with package methods in the old build-system format
- phases: Tuple[str, ...] = ('build', 'install')
Sequence of phases. Must be defined in derived classes
- run_after_callbacks = [(('install', None), <function execute_install_time_tests>), (('install', None), <function sanity_check_prefix>)]
- run_before_callbacks = []
- setup_build_environment(env)[source]
Sets up the build environment for a package.
This method will be called before the current package prefix exists in Spack’s store.
- Parameters:
env – environment modifications to be applied when the package is built. Package authors can call methods on it to alter the build environment.
- class spack.build_systems.cargo.CargoPackage(spec)[source]
Bases:
PackageBase
Specialized class for packages built using cargo.
- build_system_class = 'CargoPackage'
This attribute is used in UI queries that need to know the build system base class
- disable_redistribute: Dict[Spec, DisableRedistribute]
Store whether a given Spec source/binary should not be redistributed.
- run_after_callbacks = []
- run_before_callbacks = []
- spec: spack.spec.Spec
spack.build_systems.cmake module
- class spack.build_systems.cmake.CMakeBuilder(pkg: PackageBase)[source]
Bases:
BuilderWithDefaults
The cmake builder encodes the default way of building software with CMake. IT has three phases that can be overridden:
They all have sensible defaults and for many packages the only thing necessary will be to override
cmake_args()
.For a finer tuning you may also override:
Method
Purpose
Location of the root CMakeLists.txt
Directory where to build the package
- check() None [source]
Search the CMake-generated files for the targets
test
andcheck
, and runs them if found.
- cmake(pkg: PackageBase, spec: Spec, prefix: Prefix) None [source]
Runs
cmake
in the build directory
- cmake_args() List[str] [source]
List of all the arguments that must be passed to cmake, except:
CMAKE_INSTALL_PREFIX
CMAKE_BUILD_TYPE
which will be set automatically.
- static define_cuda_architectures(pkg: PackageBase) str [source]
- static define_hip_architectures(pkg: PackageBase) str [source]
- install_targets = ['install']
Targets to be used during the install phase
- legacy_attributes: Tuple[str, ...] = ('build_targets', 'install_targets', 'build_time_test_callbacks', 'archive_files', 'root_cmakelists_dir', 'std_cmake_args', 'build_dirname', 'build_directory')
Names associated with package attributes in the old build-system format
- legacy_methods: Tuple[str, ...] = ('cmake_args', 'check')
Names associated with package methods in the old build-system format
- property root_cmakelists_dir: str
The relative path to the directory containing CMakeLists.txt
This path is relative to the root of the extracted tarball, not to the
build_directory
. Defaults to the current directory.
- run_after_callbacks = [(('build', None), <function execute_build_time_tests>), (('install', None), <function sanity_check_prefix>)]
- run_before_callbacks = []
- class spack.build_systems.cmake.CMakePackage(spec)[source]
Bases:
PackageBase
Specialized class for packages built using CMake
For more information on the CMake build system, see: https://cmake.org/cmake/help/latest/
- build_system_class = 'CMakePackage'
This attribute is used in UI queries that need to know the build system base class
- disable_redistribute: Dict[Spec, DisableRedistribute]
Store whether a given Spec source/binary should not be redistributed.
- find_python_hints = True
When this package depends on Python and
find_python_hints
is set to True, pass the defines {Python3,Python,PYTHON}_EXECUTABLE explicitly, so that CMake locates the right Python in its builtin FindPython3, FindPython, and FindPythonInterp modules. Spack does CMake’s job because CMake’s modules by default only search for Python versions known at the time of release.
- flags_to_build_system_args(flags)[source]
Return a list of all command line arguments to pass the specified compiler flags to cmake. Note CMAKE does not have a cppflags option, so cppflags will be added to cflags, cxxflags, and fflags to mimic the behavior in other tools.
- legacy_buildsystem = 'cmake'
Legacy buildsystem attribute used to deserialize and install old specs
- run_after_callbacks = []
- run_before_callbacks = []
- spec: spack.spec.Spec
- spack.build_systems.cmake.define(cmake_var: str, value: Any) str [source]
Return a CMake command line argument that defines a variable.
The resulting argument will convert boolean values to OFF/ON and lists/tuples to CMake semicolon-separated string lists. All other values will be interpreted as strings.
Examples
[define("BUILD_SHARED_LIBS", True), define("CMAKE_CXX_STANDARD", 14), define("swr", ["avx", "avx2"])]
will generate the following configuration options:
["-DBUILD_SHARED_LIBS:BOOL=ON", "-DCMAKE_CXX_STANDARD:STRING=14", "-DSWR:STRING=avx;avx2]
- spack.build_systems.cmake.define_cuda_architectures(pkg: PackageBase) str [source]
Returns the str
-DCMAKE_CUDA_ARCHITECTURES:STRING=(expanded cuda_arch)
.cuda_arch
is variant composed of a list of target CUDA architectures and it is declared in the cuda package.This method is no-op for cmake<3.18 and when
cuda_arch
variant is not set.
- spack.build_systems.cmake.define_from_variant(pkg: PackageBase, cmake_var: str, variant: str | None = None) str [source]
Return a CMake command line argument from the given variant’s value.
The optional
variant
argument defaults to the lower-case transform ofcmake_var
.Examples
Given a package with:
variant("cxxstd", default="11", values=("11", "14"), multi=False, description="") variant("shared", default=True, description="") variant("swr", values=any_combination_of("avx", "avx2"), description="")
calling this function like:
[ self.define_from_variant("BUILD_SHARED_LIBS", "shared"), self.define_from_variant("CMAKE_CXX_STANDARD", "cxxstd"), self.define_from_variant("SWR"), ]
will generate the following configuration options:
[ "-DBUILD_SHARED_LIBS:BOOL=ON", "-DCMAKE_CXX_STANDARD:STRING=14", "-DSWR:STRING=avx;avx2", ]
for
<spec-name> cxxstd=14 +shared swr=avx,avx2
- Note: if the provided variant is conditional, and the condition is not met, this function
returns an empty string. CMake discards empty strings provided on the command line.
- spack.build_systems.cmake.define_hip_architectures(pkg: PackageBase) str [source]
Returns the str
-DCMAKE_HIP_ARCHITECTURES:STRING=(expanded amdgpu_target)
.amdgpu_target
is variant composed of a list of the target HIP architectures and it is declared in the rocm package.This method is no-op for cmake<3.18 and when
amdgpu_target
variant is not set.
- spack.build_systems.cmake.generator(*names: str, default: str | None = None) None [source]
The build system generator to use.
See
cmake --help
for a list of valid generators. Currently, “Unix Makefiles” and “Ninja” are the only generators that Spack supports. Defaults to “Unix Makefiles”.See https://cmake.org/cmake/help/latest/manual/cmake-generators.7.html for more information.
- Parameters:
names – allowed generators for this package
default – default generator
- spack.build_systems.cmake.get_cmake_prefix_path(pkg: PackageBase) List[str] [source]
Obtain the CMAKE_PREFIX_PATH entries for a package, based on the cmake_prefix_path package attribute of direct build/test and transitive link dependencies.
spack.build_systems.compiler module
- class spack.build_systems.compiler.CompilerPackage(spec: Spec)[source]
Bases:
PackageBase
A Package mixin for all common logic for packages that implement compilers
- classmethod compiler_bindir(prefix: str | Path) str | Path [source]
Overridable method for the location of the compiler bindir within the preifx
- compiler_languages: Sequence[str] = ['c', 'cxx', 'fortran']
Static definition of languages supported by this class
- compiler_names
Non-data descriptor to evaluate a class-level property. The function that performs the evaluation is injected at creation time and take an instance (could be None) and an owner (i.e. the class that originated the instance)
- compiler_suffixes: List[str] = ['-.*']
Optional suffix regexes for searching for this type of compiler. Suffixes are used by some frameworks, e.g. macports uses an ‘-mp-X.Y’ version suffix for gcc.
- compiler_version_argument: str | Tuple[str] = '-dumpversion'
Compiler argument(s) that produces version information If multiple arguments, the earlier arguments must produce errors when invalid
- classmethod determine_compiler_paths(exes: Sequence[str | Path]) Dict[str, str | Path] [source]
Compute the paths to compiler executables associated with this package
This is a helper method for
determine_variants
to compute theextra_attributes
to include with each spec object.
- executables
Non-data descriptor to evaluate a class-level property. The function that performs the evaluation is injected at creation time and take an instance (could be None) and an owner (i.e. the class that originated the instance)
- run_after_callbacks = []
- run_before_callbacks = []
spack.build_systems.cuda module
- class spack.build_systems.cuda.CudaPackage(spec)[source]
Bases:
PackageBase
Auxiliary class which contains CUDA variant, dependencies and conflicts and is meant to unify and facilitate its usage.
Maintainers: ax3l, Rombur, davidbeckingsale
- static compute_capabilities(arch_list: Iterable[str]) List[str] [source]
Adds a decimal place to each CUDA arch.
>>> compute_capabilities(['90', '90a']) ['9.0', '9.0a']
- Parameters:
arch_list – A list of integer strings, optionally followed by a suffix.
- Returns:
A list of float strings, optionally followed by a suffix
- cuda_arch_values = ('10', '11', '12', '13', '20', '21', '30', '32', '35', '37', '50', '52', '53', '60', '61', '62', '70', '72', '75', '80', '86', '87', '89', '90', '90a')
- disable_redistribute: Dict[Spec, DisableRedistribute]
Store whether a given Spec source/binary should not be redistributed.
- run_after_callbacks = []
- run_before_callbacks = []
- spec: spack.spec.Spec
spack.build_systems.generic module
- class spack.build_systems.generic.GenericBuilder(pkg: PackageBase)[source]
Bases:
BuilderWithDefaults
A builder for a generic build system, that require packagers to implement an “install” phase.
- legacy_attributes: Tuple[str, ...] = ('archive_files', 'install_time_test_callbacks')
Names associated with package attributes in the old build-system format
- legacy_methods: Tuple[str, ...] = ()
Names associated with package methods in the old build-system format
- run_after_callbacks = [(('install', 'platform=darwin'), <function apply_macos_rpath_fixups>), (('install', None), <function execute_install_time_tests>), (('install', None), <function sanity_check_prefix>)]
- run_before_callbacks = []
- class spack.build_systems.generic.Package(spec)[source]
Bases:
PackageBase
General purpose class with a single
install
phase that needs to be coded by packagers.- build_system_class = 'Package'
This attribute is used in UI queries that require to know which build-system class we are using
- disable_redistribute: Dict[Spec, DisableRedistribute]
Store whether a given Spec source/binary should not be redistributed.
- legacy_buildsystem = 'generic'
Legacy buildsystem attribute used to deserialize and install old specs
- run_after_callbacks = []
- run_before_callbacks = []
- spec: spack.spec.Spec
spack.build_systems.gnu module
- class spack.build_systems.gnu.GNUMirrorPackage(spec)[source]
Bases:
PackageBase
Mixin that takes care of setting url and mirrors for GNU packages.
- base_mirrors = ['https://ftpmirror.gnu.org/', 'https://ftp.gnu.org/gnu/', 'http://ftpmirror.gnu.org/']
List of GNU mirrors used by Spack
- run_after_callbacks = []
- run_before_callbacks = []
- property urls
spack.build_systems.go module
- class spack.build_systems.go.GoBuilder(pkg: PackageBase)[source]
Bases:
BuilderWithDefaults
The Go builder encodes the most common way of building software with a golang go.mod file. It has two phases that can be overridden, if need be:
For a finer tuning you may override:
Method
Purpose
Specify arguments to
go build
Specify arguments to
go test
- property build_args
Arguments for
go build
.
- property build_directory
Return the directory containing the main go.mod.
- property check_args
Argument for
go test
during check phase
- legacy_attributes: Tuple[str, ...] = ('build_args', 'check_args', 'build_directory', 'install_time_test_callbacks')
Names associated with package attributes in the old build-system format
- legacy_methods: Tuple[str, ...] = ('check', 'installcheck')
Names associated with package methods in the old build-system format
- phases: Tuple[str, ...] = ('build', 'install')
Sequence of phases. Must be defined in derived classes
- run_after_callbacks = [(('install', None), <function execute_install_time_tests>), (('install', None), <function sanity_check_prefix>)]
- run_before_callbacks = []
- setup_build_environment(env)[source]
Sets up the build environment for a package.
This method will be called before the current package prefix exists in Spack’s store.
- Parameters:
env – environment modifications to be applied when the package is built. Package authors can call methods on it to alter the build environment.
- class spack.build_systems.go.GoPackage(spec)[source]
Bases:
PackageBase
Specialized class for packages built using the Go toolchain.
- build_system_class = 'GoPackage'
This attribute is used in UI queries that need to know the build system base class
- disable_redistribute: Dict[Spec, DisableRedistribute]
Store whether a given Spec source/binary should not be redistributed.
- legacy_buildsystem = 'go'
Legacy buildsystem attribute used to deserialize and install old specs
- run_after_callbacks = []
- run_before_callbacks = []
- spec: spack.spec.Spec
spack.build_systems.intel module
- class spack.build_systems.intel.IntelPackage(spec)[source]
Bases:
Package
Specialized class for licensed Intel software.
This class provides two phases that can be overridden:
They both have sensible defaults and for many packages the only thing necessary will be to override setup_run_environment to set the appropriate environment variables.
- auto_dispatch_options = ('COMMON-AVX512', 'MIC-AVX512', 'CORE-AVX512', 'CORE-AVX2', 'CORE-AVX-I', 'AVX', 'SSE4.2', 'SSE4.1', 'SSSE3', 'SSE3', 'SSE2')
- property base_lib_dir
Provide the library directory located in the base of Intel installation.
- property blas_libs
- build_system_class = 'IntelPackage'
This attribute is used in UI queries that need to know the build system base class
- component_lib_dir(component, **kwargs)[source]
Provide directory suitable for find_libraries() and SPACK_COMPILER_EXTRA_RPATHS.
- configure()[source]
Generates the silent.cfg file to pass to installer.sh.
See https://software.intel.com/en-us/articles/configuration-file-format
- disable_redistribute: Dict[Spec, DisableRedistribute]
Store whether a given Spec source/binary should not be redistributed.
- property file_to_source
Full path of file to source for initializing an Intel package. A client package could override as follows: ` @property` ` def file_to_source(self):` ` return self.normalize_path(“apsvars.sh”, “vtune_amplifier”)`
- property global_license_file
Returns the path where a Spack-global license file should be stored.
All Intel software shares the same license, so we store it in a common ‘intel’ directory.
- property headers
- install(spec, prefix)[source]
Runs Intel’s install.sh installation script. Afterwards, save the installer config and logs to <prefix>/.spack
- property intel64_int_suffix
Provide the suffix for Intel library names to match a client application’s desired int size, conveyed by the active spec variant. The possible suffixes and their meanings are:
ilp64
all of int, long, and pointer are 64 bit, `` lp64`` only long and pointer are 64 bit; int will be 32bit.
- property lapack_libs
- property libs
- license_comment = '#'
Comment symbol used in the license.lic file
- property license_files
Built-in mutable sequence.
If no argument is given, the constructor creates a new empty list. The argument must be an iterable if specified.
- property license_required
bool(x) -> bool
Returns True when the argument x is true, False otherwise. The builtins True and False are the only two instances of the class bool. The class bool is a subclass of the class int, and cannot be subclassed.
- license_url = 'https://software.intel.com/en-us/articles/intel-license-manager-faq'
URL providing information on how to acquire a license key
- license_vars: List[str] = ['INTEL_LICENSE_FILE']
Environment variables that Intel searches for a license file
- modify_LLVMgold_rpath()[source]
Add libimf.so and other required libraries to the RUNPATH of LLVMgold.so.
These are needed explicitly at dependent link time when ld -plugin LLVMgold.so is called by the compiler.
- property mpi_compiler_wrappers
Return paths to compiler wrappers as a dict of env-like names
- mpi_setup_dependent_build_environment(env, dependent_spec, compilers_of_client={})[source]
Unified back-end for setup_dependent_build_environment() of Intel packages that provide ‘mpi’.
- Parameters:
env – same as in setup_dependent_build_environment().
dependent_spec – same as in setup_dependent_build_environment().
compilers_of_client (dict) – Conveys spack_cc, spack_cxx, etc., from the scope of dependent packages; constructed in caller.
- normalize_path(component_path, component_suite_dir=None, relative=False)[source]
Returns the absolute or relative path to a component or file under a component suite directory.
Intel’s product names, scope, and directory layout changed over the years. This function provides a unified interface to their directory names.
- Parameters:
component_path (str) – a component name like ‘mkl’, or ‘mpi’, or a deeper relative path.
component_suite_dir (str) –
_Unversioned_ name of the expected parent directory of component_path. When absent or None, an appropriate default will be used. A present but empty string “” requests that component_path refer to self.prefix directly.
Typical values: compilers_and_libraries, composer_xe, parallel_studio_xe.
Also supported: advisor, inspector, vtune. The actual directory name for these suites varies by release year. The name will be corrected as needed for use in the return value.
relative (bool) – When True, return path relative to self.prefix, otherwise, return an absolute path (the default).
- normalize_suite_dir(suite_dir_name, version_globs=['*.*.*'])[source]
Returns the version-specific and absolute path to the directory of an Intel product or a suite of product components.
- Parameters:
suite_dir_name (str) –
Name of the product directory, without numeric version.
Examples:
composer_xe, parallel_studio_xe, compilers_and_libraries
The following will work as well, even though they are not directly targets for Spack installation:
advisor_xe, inspector_xe, vtune_amplifier_xe, performance_snapshots (new name for vtune as of 2018)
These are single-component products without subordinate components and are normally made available to users by a toplevel psxevars.sh or equivalent file to source (and thus by the modulefiles that Spack produces).
version_globs (list) – Suffix glob patterns (most specific first) expected to qualify suite_dir_name to its fully version-specific install directory (as opposed to a compatibility directory or symlink).
- property openmp_libs
Supply LibraryList for linking OpenMP
- property pset_components
- run_after_callbacks = [(('install', None), <function IntelPackage.validate_install>), (('install', None), <function IntelPackage.configure_rpath>), (('install', None), <function IntelPackage.configure_auto_dispatch>), (('install', None), <function IntelPackage.filter_compiler_wrappers>), (('install', None), <function IntelPackage.uninstall_ism>), (('install', None), <function IntelPackage.modify_LLVMgold_rpath>)]
- run_before_callbacks = [(('install', None), <function IntelPackage.configure>)]
- property scalapack_libs
- setup_dependent_package(module, dep_spec)[source]
Set up module-scope global variables for dependent packages.
This function is called when setting up the build and run environments of a DAG.
Examples:
Extensions often need to invoke the
python
interpreter from the Python installation being extended. This routine can put apython
Executable as a global in the module scope for the extension package to simplify extension installs.MPI compilers could set some variables in the dependent’s scope that point to
mpicc
,mpicxx
, etc., allowing them to be called by common name regardless of which MPI is used.
- Parameters:
module – The Python
module
object of the dependent package. Packages can use this to set module-scope variables for the dependent to use.dependent_spec – The spec of the dependent package about to be built. This allows the extendee (self) to query the dependent’s state. Note that this package’s spec is available as
self.spec
.
- setup_run_environment(env)[source]
Adds environment variables to the generated module file.
These environment variables come from running:
$ source parallel_studio_xe_2017/bin/psxevars.sh intel64 [and likewise for MKL, MPI, and other components]
- spec: spack.spec.Spec
- property tbb_headers
- property tbb_libs
Supply LibraryList for linking TBB
- property version_yearlike
Return the version in a unified style, suitable for Version class conditionals.
- version_years = {'intel-ipp@9.0:9': 2016, 'intel-mkl@11.3.0:11.3': 2016, 'intel-mpi@5.1:5': 2016}
spack.build_systems.lua module
- class spack.build_systems.lua.LuaBuilder(pkg: PackageBase)[source]
Bases:
Builder
- legacy_attributes: Tuple[str, ...] = ()
Names associated with package attributes in the old build-system format
- legacy_methods: Tuple[str, ...] = ('luarocks_args',)
Names associated with package methods in the old build-system format
- phases: Tuple[str, ...] = ('unpack', 'generate_luarocks_config', 'preprocess', 'install')
Sequence of phases. Must be defined in derived classes
- preprocess(pkg, spec, prefix)[source]
Override this to preprocess source before building with luarocks
- run_after_callbacks = []
- run_before_callbacks = []
- setup_build_environment(env)[source]
Sets up the build environment for a package.
This method will be called before the current package prefix exists in Spack’s store.
- Parameters:
env – environment modifications to be applied when the package is built. Package authors can call methods on it to alter the build environment.
- class spack.build_systems.lua.LuaPackage(spec)[source]
Bases:
PackageBase
Specialized class for lua packages
- build_system_class = 'LuaPackage'
This attribute is used in UI queries that need to know the build system base class
- disable_redistribute: Dict[Spec, DisableRedistribute]
Store whether a given Spec source/binary should not be redistributed.
- legacy_buildsystem = 'lua'
Legacy buildsystem attribute used to deserialize and install old specs
- list_depth = 1
Link depth to which list_url should be searched for new versions
- property lua
- property luarocks
- run_after_callbacks = []
- run_before_callbacks = []
- spec: spack.spec.Spec
spack.build_systems.makefile module
- class spack.build_systems.makefile.MakefileBuilder(pkg: PackageBase)[source]
Bases:
BuilderWithDefaults
The Makefile builder encodes the most common way of building software with Makefiles. It has three phases that can be overridden, if need be:
It is usually necessary to override the
edit()
phase (which is by default a no-op), while the other two have sensible defaults.For a finer tuning you may override:
Method
Purpose
Specify
make
targets for the build phaseSpecify
make
targets for the install phaseDirectory where the Makefile is located
- build(pkg: PackageBase, spec: Spec, prefix: Prefix) None [source]
Run “make” on the build targets specified by the builder.
- edit(pkg: PackageBase, spec: Spec, prefix: Prefix) None [source]
Edit the Makefile before calling make. The default is a no-op.
- install(pkg: PackageBase, spec: Spec, prefix: Prefix) None [source]
Run “make” on the install targets specified by the builder.
- installcheck() None [source]
Searches the Makefile for an
installcheck
target and runs it if found.
- legacy_attributes: Tuple[str, ...] = ('build_targets', 'install_targets', 'build_time_test_callbacks', 'install_time_test_callbacks', 'build_directory')
Names associated with package attributes in the old build-system format
- legacy_methods: Tuple[str, ...] = ('check', 'installcheck')
Names associated with package methods in the old build-system format
- phases: Tuple[str, ...] = ('edit', 'build', 'install')
Sequence of phases. Must be defined in derived classes
- run_after_callbacks = [(('build', None), <function execute_build_time_tests>), (('install', None), <function execute_install_time_tests>), (('install', 'platform=darwin'), <function apply_macos_rpath_fixups>), (('install', None), <function sanity_check_prefix>)]
- run_before_callbacks = []
- class spack.build_systems.makefile.MakefilePackage(spec)[source]
Bases:
PackageBase
Specialized class for packages built using Makefiles.
- build_system_class = 'MakefilePackage'
This attribute is used in UI queries that need to know the build system base class
- disable_redistribute: Dict[Spec, DisableRedistribute]
Store whether a given Spec source/binary should not be redistributed.
- legacy_buildsystem = 'makefile'
Legacy buildsystem attribute used to deserialize and install old specs
- run_after_callbacks = []
- run_before_callbacks = []
- spec: spack.spec.Spec
spack.build_systems.maven module
- class spack.build_systems.maven.MavenBuilder(pkg: PackageBase)[source]
Bases:
BuilderWithDefaults
The Maven builder encodes the default way to build software with Maven. It has two phases that can be overridden, if need be:
- property build_directory
The directory containing the
pom.xml
file.
- legacy_attributes: Tuple[str, ...] = ('build_directory',)
Names associated with package attributes in the old build-system format
- legacy_methods: Tuple[str, ...] = ('build_args',)
Names associated with package methods in the old build-system format
- phases: Tuple[str, ...] = ('build', 'install')
Sequence of phases. Must be defined in derived classes
- run_after_callbacks = [(('install', None), <function sanity_check_prefix>)]
- run_before_callbacks = []
- class spack.build_systems.maven.MavenPackage(spec)[source]
Bases:
PackageBase
Specialized class for packages that are built using the Maven build system. See https://maven.apache.org/index.html for more information.
- build_system_class = 'MavenPackage'
- disable_redistribute: Dict[Spec, DisableRedistribute]
Store whether a given Spec source/binary should not be redistributed.
- legacy_buildsystem = 'maven'
Legacy buildsystem attribute used to deserialize and install old specs
- run_after_callbacks = []
- run_before_callbacks = []
- spec: spack.spec.Spec
spack.build_systems.meson module
- class spack.build_systems.meson.MesonBuilder(pkg: PackageBase)[source]
Bases:
BuilderWithDefaults
The Meson builder encodes the default way to build software with Meson. The builder has three phases that can be overridden, if need be:
They all have sensible defaults and for many packages the only thing necessary will be to override
meson_args()
.For a finer tuning you may also override:
Method
Purpose
Location of the root MesonLists.txt
Directory where to build the package
- property archive_files
Files to archive for packages based on Meson
- property build_directory
Directory to use when building the package.
- property build_dirname
Returns the directory name to use when building the package.
- install_targets = ['install']
- legacy_attributes: Tuple[str, ...] = ('build_targets', 'install_targets', 'build_time_test_callbacks', 'root_mesonlists_dir', 'std_meson_args', 'build_directory')
Names associated with package attributes in the old build-system format
- legacy_methods: Tuple[str, ...] = ('meson_args', 'check')
Names associated with package methods in the old build-system format
- meson_args() List[str] [source]
List of arguments that must be passed to meson, except:
--prefix
--libdir
--buildtype
--strip
--default_library
which will be set automatically.
- phases: Tuple[str, ...] = ('meson', 'build', 'install')
Sequence of phases. Must be defined in derived classes
- property root_mesonlists_dir: str
Relative path to the directory containing meson.build
This path is relative to the root of the extracted tarball, not to the
build_directory
. Defaults to the current directory.
- run_after_callbacks = [(('build', None), <function execute_build_time_tests>), (('install', None), <function sanity_check_prefix>)]
- run_before_callbacks = []
- class spack.build_systems.meson.MesonPackage(spec)[source]
Bases:
PackageBase
Specialized class for packages built using Meson. For more information on the Meson build system, see https://mesonbuild.com/
- build_system_class = 'MesonPackage'
This attribute is used in UI queries that need to know the build system base class
- disable_redistribute: Dict[Spec, DisableRedistribute]
Store whether a given Spec source/binary should not be redistributed.
- flags_to_build_system_args(flags)[source]
Produces a list of all command line arguments to pass the specified compiler flags to meson.
- legacy_buildsystem = 'meson'
Legacy buildsystem attribute used to deserialize and install old specs
- run_after_callbacks = []
- run_before_callbacks = []
- spec: spack.spec.Spec
spack.build_systems.msbuild module
- class spack.build_systems.msbuild.MSBuildBuilder(pkg: PackageBase)[source]
Bases:
BuilderWithDefaults
The MSBuild builder encodes the most common way of building software with Mircosoft’s MSBuild tool. It has two phases that can be overridden, if need be:
It is usually necessary to override the
install()
phase as many packages with MSBuild systems neglect to provide an install target. The default install phase will attempt to invoke an install target from MSBuild. If none exists, this will result in a build failureFor a finer tuning you may override:
Method
Purpose
Specify
msbuild
targets for the build phaseSpecify
msbuild
targets for the install phaseDirectory where the project sln/vcxproj is located
- property build_directory
Return the directory containing the MSBuild solution or vcxproj.
- install(pkg, spec, prefix)[source]
Run “msbuild” on the install targets specified by the builder. This is INSTALL by default
- msbuild_args()[source]
Define build arguments to MSbuild. This is an empty list by default. Individual packages should override to specify MSBuild args to command line PlatformToolset is already defined an can be controlled via the toolchain_version property
- msbuild_install_args()[source]
Define install arguments to MSBuild outside of the INSTALL target. This is the same as msbuild_args by default.
- phases: Tuple[str, ...] = ('build', 'install')
Sequence of phases. Must be defined in derived classes
- run_after_callbacks = [(('install', None), <function sanity_check_prefix>)]
- run_before_callbacks = []
- property std_msbuild_args
Return common msbuild cl arguments, for now just toolchain
- property toolchain_version
Return currently targeted version of MSVC toolchain Override this method to select a specific version of the toolchain or change selection heuristics. Default is whatever version of msvc has been selected by concretization
- class spack.build_systems.msbuild.MSBuildPackage(spec)[source]
Bases:
PackageBase
Specialized class for packages built using Visual Studio project files or solutions.
- build_system_class = 'MSBuildPackage'
This attribute is used in UI queries that need to know the build system base class
- disable_redistribute: Dict[Spec, DisableRedistribute]
Store whether a given Spec source/binary should not be redistributed.
- run_after_callbacks = []
- run_before_callbacks = []
- spec: spack.spec.Spec
spack.build_systems.nmake module
- class spack.build_systems.nmake.NMakeBuilder(pkg: PackageBase)[source]
Bases:
BuilderWithDefaults
The NMake builder encodes the most common way of building software with Mircosoft’s NMake tool. It has two phases that can be overridden, if need be:
It is usually necessary to override the
install()
phase as many packages with NMake systems neglect to provide an install target. The default install phase will attempt to invoke an install target from NMake. If none exists, this will result in a build failureFor a finer tuning you may override:
Method
Purpose
Specify
nmake
targets for the build phaseSpecify
nmake
targets for the install phaseDirectory where the project makefile is located
- property build_directory
Return the directory containing the makefile.
- property ignore_quotes
Control whether or not Spack warns about quoted arguments passed to build utilities. If this is True, spack will not warn about quotes. This is useful in cases with a space in the path or when build scripts require quoted arugments.
- install(pkg, spec, prefix)[source]
Run “nmake” on the install targets specified by the builder. This is INSTALL by default
- property makefile_name
Name of the current makefile. This is currently an empty value. If a project defines this value, it will be used with the /f argument to provide nmake an explicit makefile. This is usefule in scenarios where there are multiple nmake files in the same directory.
- property makefile_root
The relative path to the directory containing nmake makefile
This path is relative to the root of the extracted tarball, not to the
build_directory
. Defaults to the current directory.
- nmake_args()[source]
Define build arguments to NMake. This is an empty list by default. Individual packages should override to specify NMake args to command line
- nmake_install_args()[source]
Define arguments appropriate only for install phase to NMake. This is an empty list by default. Individual packages should override to specify NMake args to command line
- override_env(var_name, new_value)[source]
Helper method to format arguments for overridding env variables on the nmake command line. Returns properly formatted argument
- phases: Tuple[str, ...] = ('build', 'install')
Sequence of phases. Must be defined in derived classes
- run_after_callbacks = [(('install', None), <function sanity_check_prefix>)]
- run_before_callbacks = []
- property std_nmake_args
Returns list of standards arguments provided to NMake Currently is only /NOLOGO
- class spack.build_systems.nmake.NMakePackage(spec)[source]
Bases:
PackageBase
Specialized class for packages built using a Makefiles.
- build_system_class = 'NMakePackage'
This attribute is used in UI queries that need to know the build system base class
- disable_redistribute: Dict[Spec, DisableRedistribute]
Store whether a given Spec source/binary should not be redistributed.
- run_after_callbacks = []
- run_before_callbacks = []
- spec: spack.spec.Spec
spack.build_systems.octave module
- class spack.build_systems.octave.OctaveBuilder(pkg: PackageBase)[source]
Bases:
BuilderWithDefaults
The octave builder provides the following phases that can be overridden:
- legacy_attributes: Tuple[str, ...] = ()
Names associated with package attributes in the old build-system format
- legacy_methods: Tuple[str, ...] = ()
Names associated with package methods in the old build-system format
- run_after_callbacks = [(('install', None), <function sanity_check_prefix>)]
- run_before_callbacks = []
- setup_build_environment(env)[source]
Sets up the build environment for a package.
This method will be called before the current package prefix exists in Spack’s store.
- Parameters:
env – environment modifications to be applied when the package is built. Package authors can call methods on it to alter the build environment.
- class spack.build_systems.octave.OctavePackage(spec)[source]
Bases:
PackageBase
Specialized class for Octave packages. See https://www.gnu.org/software/octave/doc/v4.2.0/Installing-and-Removing-Packages.html for more information.
- build_system_class = 'OctavePackage'
- disable_redistribute: Dict[Spec, DisableRedistribute]
Store whether a given Spec source/binary should not be redistributed.
- legacy_buildsystem = 'octave'
Legacy buildsystem attribute used to deserialize and install old specs
- run_after_callbacks = []
- run_before_callbacks = []
- spec: spack.spec.Spec
spack.build_systems.oneapi module
Common utilities for managing intel oneapi packages.
- spack.build_systems.oneapi.INTEL_MATH_LIBRARIES = ('intel-mkl', 'intel-oneapi-mkl', 'intel-parallel-studio')
Tuple of Intel math libraries, exported to packages
- class spack.build_systems.oneapi.IntelOneApiLibraryPackage(spec)[source]
Bases:
IntelOneApiPackage
Base class for Intel oneAPI library packages.
Contains some convenient default implementations for libraries. Implement the method directly in the package if something different is needed.
- disable_redistribute: Dict[Spec, DisableRedistribute]
Store whether a given Spec source/binary should not be redistributed.
- property headers
- property libs
- run_after_callbacks = []
- run_before_callbacks = []
- spec: spack.spec.Spec
- class spack.build_systems.oneapi.IntelOneApiLibraryPackageWithSdk(spec)[source]
Bases:
IntelOneApiLibraryPackage
Base class for Intel oneAPI library packages with SDK components.
Contains some convenient default implementations for libraries that expose functionality in sdk subdirectories. Implement the method directly in the package if something different is needed.
- disable_redistribute: Dict[Spec, DisableRedistribute]
Store whether a given Spec source/binary should not be redistributed.
- property headers
- property libs
- run_after_callbacks = []
- run_before_callbacks = []
- spec: spack.spec.Spec
- class spack.build_systems.oneapi.IntelOneApiPackage(spec)[source]
Bases:
Package
Base class for Intel oneAPI packages.
- c = 'platform=windows'
- property component_dir
Subdirectory for this component in the install prefix.
- property component_prefix
Path to component <prefix>/<component>/<version>.
- disable_redistribute: Dict[Spec, DisableRedistribute]
Store whether a given Spec source/binary should not be redistributed.
- property env_script_args
Additional arguments to pass to vars.sh script.
- homepage: str | None = 'https://software.intel.com/oneapi'
Package homepage where users can find more information about the package
- run_after_callbacks = []
- run_before_callbacks = []
- setup_run_environment(env)[source]
Adds environment variables to the generated module file.
These environment variables come from running:
$ source {prefix}/{component}/{version}/env/vars.sh
- spec: spack.spec.Spec
- unresolved_libraries: List[str] = ['*']
List of fnmatch patterns of library file names (specifically DT_NEEDED entries) that are not expected to be locatable in RPATHs. Generally this is a problem, and Spack install with config:shared_linking:strict will cause install failures if such libraries are found. However, in certain cases it can be hard if not impossible to avoid accidental linking against system libraries; until that is resolved, this attribute can be used to suppress errors.
- property v2_layout
Returns true if this version implements the v2 directory layout.
- property v2_layout_versions
Version that implements the v2 directory layout.
- class spack.build_systems.oneapi.IntelOneApiStaticLibraryList(static_libs, dynamic_libs)[source]
Bases:
object
Provides ld_flags when static linking is needed
Oneapi puts static and dynamic libraries in the same directory, so -l will default to finding the dynamic library. Use absolute paths, as recommended by oneapi documentation.
Allow both static and dynamic libraries to be supplied by the package.
- property directories
- property ld_flags
- property link_flags
- property search_flags
spack.build_systems.perl module
- class spack.build_systems.perl.PerlBuilder(pkg: PackageBase)[source]
Bases:
BuilderWithDefaults
The perl builder provides four phases that can be overridden, if required:
- The default methods use, in order of preference:
Makefile.PL,
Build.PL.
Some packages may need to override
configure_args()
, which produces a list of arguments forconfigure()
.Arguments should not include the installation base directory.
- property build_executable
Returns the executable method to build the perl package
- property build_method
Searches the package for either a Makefile.PL or Build.PL.
- Raises:
RuntimeError – if neither Makefile.PL nor Build.PL exist
- configure(pkg, spec, prefix)[source]
Run Makefile.PL or Build.PL with arguments consisting of an appropriate installation base directory followed by the list returned by
configure_args()
.
- configure_args()[source]
List of arguments passed to
configure()
.Arguments should not include the installation base directory, which is prepended automatically.
- legacy_attributes: Tuple[str, ...] = ()
Names associated with package attributes in the old build-system format
- legacy_methods: Tuple[str, ...] = ('configure_args', 'check', 'test_use')
Names associated with package methods in the old build-system format
- run_after_callbacks = [(('configure', None), <function PerlBuilder.fix_shebang>), (('build', None), <function execute_build_time_tests>), (('install', None), <function sanity_check_prefix>)]
- run_before_callbacks = []
- class spack.build_systems.perl.PerlPackage(spec)[source]
Bases:
PackageBase
Specialized class for packages that are built using Perl.
- build_system_class = 'PerlPackage'
This attribute is used in UI queries that need to know the build system base class
- disable_redistribute: Dict[Spec, DisableRedistribute]
Store whether a given Spec source/binary should not be redistributed.
- legacy_buildsystem = 'perl'
Legacy buildsystem attribute used to deserialize and install old specs
- run_after_callbacks = []
- run_before_callbacks = []
- property skip_modules: Iterable[str]
Names of modules that should be skipped when running tests.
These are a subset of use_modules.
- Returns:
List of strings of module names.
- spec: spack.spec.Spec
spack.build_systems.python module
- class spack.build_systems.python.PythonExtension(spec)[source]
Bases:
PackageBase
- add_files_to_view(view, merge_map, skip_if_exists=True)[source]
Given a map of package files to destination paths in the view, add the files to the view. By default this adds all files. Alternative implementations may skip some files, for example if other packages linked into the view already include the file.
- Parameters:
view (spack.filesystem_view.FilesystemView) – the view that’s updated
merge_map (dict) – maps absolute source paths to absolute dest paths for all files in from this package.
skip_if_exists (bool) – when True, don’t link files in view when they already exist. When False, always link files, without checking if they already exist.
- disable_redistribute: Dict[Spec, DisableRedistribute]
Store whether a given Spec source/binary should not be redistributed.
- get_external_python_for_prefix()[source]
For an external package that extends python, find the most likely spec for the python it depends on.
First search: an “installed” external that shares a prefix with this package Second search: a configured external that shares a prefix with this package Third search: search this prefix for a python package
- Returns:
The external Spec for python most likely to be compatible with self.spec
- Return type:
- property import_modules: Iterable[str]
Names of modules that the Python package provides.
These are used to test whether or not the installation succeeded. These names generally come from running:
>> import setuptools >> setuptools.find_packages()
in the source tarball directory. If the module names are incorrectly detected, this property can be overridden by the package.
- Returns:
List of strings of module names.
- remove_files_from_view(view, merge_map)[source]
Given a map of package files to files currently linked in the view, remove the files from the view. The default implementation removes all files. Alternative implementations may not remove all files. For example if two packages include the same file, it should only be removed when both packages are removed.
- run_after_callbacks = []
- run_before_callbacks = []
- property skip_modules: Iterable[str]
Names of modules that should be skipped when running tests.
These are a subset of import_modules. If a module has submodules, they are skipped as well (meaning a.b is skipped if a is contained).
- Returns:
List of strings of module names.
- spec: spack.spec.Spec
- update_external_dependencies(extendee_spec=None)[source]
Ensure all external python packages have a python dependency
If another package in the DAG depends on python, we use that python for the dependency of the external. If not, we assume that the external PythonPackage is installed into the same directory as the python it depends on.
- class spack.build_systems.python.PythonPackage(spec)[source]
Bases:
PythonExtension
Specialized class for packages that are built using pip.
- build_system_class = 'PythonPackage'
- property headers: HeaderList
Discover header files in platlib.
- homepage: str | None = None
Package homepage where users can find more information about the package
- install_time_test_callbacks = ['test_imports']
Callback names for install-time test
- legacy_buildsystem = 'python_pip'
Legacy buildsystem attribute used to deserialize and install old specs
- property libs: LibraryList
Discover libraries in platlib.
- run_after_callbacks = []
- run_before_callbacks = []
- url = None
- class spack.build_systems.python.PythonPipBuilder(pkg: PackageBase)[source]
Bases:
BuilderWithDefaults
- property build_directory: str
The root directory of the Python package.
This is usually the directory containing one of the following files:
pyproject.toml
setup.cfg
setup.py
- build_system: str | None = 'python_pip'
Build system name. Must also be defined in derived classes.
- config_settings(spec: Spec, prefix: Prefix) Mapping[str, object] [source]
Configuration settings to be passed to the PEP 517 build backend.
Requires pip 22.1 or newer for keys that appear only a single time, or pip 23.1 or newer if the same key appears multiple times.
- Parameters:
spec – Build spec.
prefix – Installation prefix.
- Returns:
Possibly nested dictionary of KEY, VALUE settings.
- global_options(spec: Spec, prefix: Prefix) Iterable[str] [source]
Extra global options to be supplied to the setup.py call before the install or bdist_wheel command.
Deprecated in pip 23.1.
- Parameters:
spec – Build spec.
prefix – Installation prefix.
- Returns:
List of options.
- install(pkg: PythonPackage, spec: Spec, prefix: Prefix) None [source]
Install everything from build directory.
- install_options(spec: Spec, prefix: Prefix) Iterable[str] [source]
Extra arguments to be supplied to the setup.py install command.
Requires pip 23.0 or older.
- Parameters:
spec – Build spec.
prefix – Installation prefix.
- Returns:
List of options.
- legacy_attributes: Tuple[str, ...] = ('archive_files', 'build_directory', 'install_time_test_callbacks')
Names associated with package attributes in the old build-system format
- legacy_long_methods = ('install_options', 'global_options', 'config_settings')
Same as legacy_methods, but the signature is different
- legacy_methods: Tuple[str, ...] = ('test_imports',)
Names associated with package methods in the old build-system format
- run_after_callbacks = [(('install', None), <function execute_install_time_tests>), (('install', None), <function sanity_check_prefix>)]
- run_before_callbacks = []
spack.build_systems.qmake module
- class spack.build_systems.qmake.QMakeBuilder(pkg: PackageBase)[source]
Bases:
BuilderWithDefaults
The qmake builder provides three phases that can be overridden:
They all have sensible defaults and for many packages the only thing necessary will be to override
qmake_args()
.- property build_directory
The directory containing the
*.pro
file.
- legacy_attributes: Tuple[str, ...] = ('build_directory', 'build_time_test_callbacks')
Names associated with package attributes in the old build-system format
- legacy_methods: Tuple[str, ...] = ('qmake_args', 'check')
Names associated with package methods in the old build-system format
- phases: Tuple[str, ...] = ('qmake', 'build', 'install')
Sequence of phases. Must be defined in derived classes
- run_after_callbacks = [(('build', None), <function execute_build_time_tests>), (('install', None), <function sanity_check_prefix>)]
- run_before_callbacks = []
- class spack.build_systems.qmake.QMakePackage(spec)[source]
Bases:
PackageBase
Specialized class for packages built using qmake.
For more information on the qmake build system, see: http://doc.qt.io/qt-5/qmake-manual.html
- build_system_class = 'QMakePackage'
This attribute is used in UI queries that need to know the build system base class
- disable_redistribute: Dict[Spec, DisableRedistribute]
Store whether a given Spec source/binary should not be redistributed.
- legacy_buildsystem = 'qmake'
Legacy buildsystem attribute used to deserialize and install old specs
- run_after_callbacks = []
- run_before_callbacks = []
- spec: spack.spec.Spec
spack.build_systems.r module
- class spack.build_systems.r.RBuilder(pkg: PackageBase)[source]
Bases:
GenericBuilder
The R builder provides a single phase that can be overridden:
It has sensible defaults, and for many packages the only thing necessary will be to add dependencies.
- legacy_methods: Tuple[str, ...] = ('configure_args', 'configure_vars')
Names associated with package methods in the old build-system format
- run_after_callbacks = [(('install', 'platform=darwin'), <function apply_macos_rpath_fixups>), (('install', None), <function execute_install_time_tests>), (('install', None), <function sanity_check_prefix>)]
- run_before_callbacks = []
- class spack.build_systems.r.RPackage(spec)[source]
Bases:
Package
Specialized class for packages that are built using R.
For more information on the R build system, see: https://stat.ethz.ch/R-manual/R-devel/library/utils/html/INSTALL.html
- build_system_class = 'RPackage'
This attribute is used in UI queries that need to know the build system base class
- git = None
- homepage: str | None = None
Package homepage where users can find more information about the package
- run_after_callbacks = []
- run_before_callbacks = []
- url = None
spack.build_systems.racket module
- class spack.build_systems.racket.RacketBuilder(pkg: PackageBase)[source]
Bases:
Builder
The Racket builder provides an
install
phase that can be overridden.- property build_directory
- legacy_attributes: Tuple[str, ...] = ('build_directory', 'build_time_test_callbacks', 'subdirectory')
Names associated with package attributes in the old build-system format
- legacy_methods: Tuple[str, ...] = ()
Names associated with package methods in the old build-system format
- run_after_callbacks = []
- run_before_callbacks = []
- property subdirectory
- class spack.build_systems.racket.RacketPackage(spec)[source]
Bases:
PackageBase
Specialized class for packages that are built using Racket’s raco pkg install and raco setup commands.
- build_system_class = 'RacketPackage'
- homepage: str | None = None
Package homepage where users can find more information about the package
- legacy_buildsystem = 'racket'
Legacy buildsystem attribute used to deserialize and install old specs
- parallel = True
By default we build in parallel. Subclasses can override this.
-
run_after_callbacks =