spack.build_systems package

Submodules

spack.build_systems.aspell_dict module

class spack.build_systems.aspell_dict.AspellDictPackage(spec)[source]

Bases: spack.build_systems.autotools.AutotoolsPackage

Specialized class for building aspell dictionairies.

configure(spec, prefix)[source]

Runs configure with the arguments specified in configure_args() and an appropriately set prefix.

patch()[source]
view_destination(view)[source]

The target root directory: each file is added relative to this directory.

view_source()[source]

The source root directory that will be added to the view: files are added such that their path relative to the view destination matches their path relative to the view source.

spack.build_systems.autotools module

class spack.build_systems.autotools.AutotoolsPackage(spec)[source]

Bases: spack.package.PackageBase

Specialized class for packages built using GNU Autotools.

This class provides four phases that can be overridden:

They all have sensible defaults and for many packages the only thing necessary will be to override the helper method configure_args(). For a finer tuning you may also override:

Method

Purpose

build_targets

Specify make targets for the build phase

install_targets

Specify make targets for the install phase

check()

Run build time tests if required

property archive_files

Files to archive for packages based on autotools

autoreconf(spec, prefix)[source]

Not needed usually, configure should be already there

autoreconf_extra_args = []

Options to be passed to autoreconf when using the default implementation

property autoreconf_search_path_args

Arguments to autoreconf to modify the search paths

build(spec, prefix)[source]

Makes the build targets specified by :py:attr:~.AutotoolsPackage.build_targets

property build_directory

Override to provide another place to build the package

build_system_class = 'AutotoolsPackage'

This attribute is used in UI queries that need to know the build system base class

build_targets = []

Targets for make during the build() phase

build_time_test_callbacks = ['check']

Callback names for build-time test

check()[source]

Searches the Makefile for targets test and check and runs them if found.

configure(spec, prefix)[source]

Runs configure with the arguments specified in configure_args() and an appropriately set prefix.

property configure_abs_path
configure_args()[source]

Produces a list containing all the arguments that must be passed to configure, except --prefix which will be pre-pended to the list.

Returns

list of arguments for configure

property configure_directory

Returns the directory where ‘configure’ resides.

Returns

directory where to find configure

delete_configure_to_force_update()[source]
enable_or_disable(name, activation_value=None, variant=None)[source]

Same as with_or_without() but substitute with with enable and without with disable.

Parameters
  • name (str) – name of a valid multi-valued variant

  • activation_value (typing.Callable) –

    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

flags_to_build_system_args(flags)[source]

Produces a list of all command line arguments to pass specified compiler flags to configure.

force_autoreconf = False

Set to true to force the autoreconf step even if configure is present

install(spec, prefix)[source]

Makes the install targets specified by :py:attr:~.AutotoolsPackage.install_targets

install_libtool_archives = False

If False deletes all the .la files in the prefix folder after the installation. If True instead it installs them.

install_targets = ['install']

Targets for make during the install() phase

install_time_test_callbacks = ['installcheck']

Callback names for install-time test

installcheck()[source]

Searches the Makefile for an installcheck target and runs it if found.

property patch_config_files

Whether or not to update old config.guess and config.sub files distributed with the tarball. This currently only applies to ppc64le:, aarch64:, and riscv64 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, the gnuconfig package can be marked external with a prefix pointing to the directory containing the system config.guess and config.sub files.

patch_libtool = True

Whether or not to update libtool (currently only for Arm/Clang/Fujitsu compilers)

phases = ['autoreconf', 'configure', 'build', 'install']

Phases of a GNU Autotools package

remove_libtool_archives()[source]

Remove all .la files in prefix sub-folders if the package sets install_libtool_archives to be False.

set_configure_or_die()[source]

Checks the presence of a configure file after the autoreconf phase. If it is found sets a module attribute appropriately, otherwise raises an error.

Raises

RuntimeError – if a configure script is not found in configure_directory()

with_or_without(name, activation_value=None, variant=None)[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 not variant=value is in the spec.

Parameters
  • name (str) – name of a valid multi-valued variant

  • activation_value (typing.Callable) –

    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

spack.build_systems.cached_cmake module

class spack.build_systems.cached_cmake.CachedCMakePackage(spec)[source]

Bases: spack.build_systems.cmake.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.

property cache_name
property cache_path
flag_handler(name, flags)[source]

flag_handler that injects all flags through the compiler wrapper.

initconfig(spec, prefix)[source]
initconfig_compiler_entries()[source]
initconfig_hardware_entries()[source]
initconfig_mpi_entries()[source]
install_cmake_cache()[source]
phases = ['initconfig', 'cmake', 'build', 'install']

Phases of a CMake package

property std_cmake_args

Standard cmake arguments provided as a property for convenience of package writers

Returns

standard cmake arguments

std_initconfig_entries()[source]
spack.build_systems.cached_cmake.cmake_cache_option(name, boolean_value, comment='')[source]

Generate a string for a cmake configuration option

spack.build_systems.cached_cmake.cmake_cache_path(name, value, comment='')[source]

Generate a string for a cmake cache variable

spack.build_systems.cached_cmake.cmake_cache_string(name, value, comment='')[source]

Generate a string for a cmake cache variable

spack.build_systems.cmake module

class spack.build_systems.cmake.CMakePackage(spec)[source]

Bases: spack.package.PackageBase

Specialized class for packages built using CMake

For more information on the CMake build system, see: https://cmake.org/cmake/help/latest/

This class provides 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

root_cmakelists_dir()

Location of the root CMakeLists.txt

build_directory()

Directory where to build the package

The generator used by CMake can be specified by providing the generator attribute. Per https://cmake.org/cmake/help/git-master/manual/cmake-generators.7.html, the format is: [<secondary-generator> - ]<primary_generator>. The full list of primary and secondary generators supported by CMake may be found in the documentation for the version of CMake used; however, at this time Spack supports only the primary generators “Unix Makefiles” and “Ninja.” Spack’s CMake support is agnostic with respect to primary generators. Spack will generate a runtime error if the generator string does not follow the prescribed format, or if the primary generator is not supported.

property archive_files

Files to archive for packages based on CMake

build(spec, prefix)[source]

Make the build targets

property build_directory

Returns the directory to use when building the package

Returns

directory where to build the package

property build_dirname

Returns the directory name to use when building the package

Returns

name of the subdirectory for building the package

build_system_class = 'CMakePackage'

This attribute is used in UI queries that need to know the build system base class

build_targets = []
build_time_test_callbacks = ['check']

A list or set of build time test functions to be called when tests are executed or ‘None’ if there are no such test functions.

check()[source]

Searches the CMake-generated Makefile for the target test and runs it if found.

cmake(spec, prefix)[source]

Runs cmake in the build directory

cmake_args()[source]

Produces a list containing all the arguments that must be passed to cmake, except:

  • CMAKE_INSTALL_PREFIX

  • CMAKE_BUILD_TYPE

which will be set automatically.

Returns

list of arguments for cmake

static define(cmake_var, value)[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]
define_from_variant(cmake_var, variant=None)[source]

Return a CMake command line argument from the given variant’s value.

The optional variant argument defaults to the lower-case transform of cmake_var.

This utility function is similar to with_or_without().

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

flags_to_build_system_args(flags)[source]

Produces 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.

generator = 'Unix Makefiles'

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.

install(spec, prefix)[source]

Make the install targets

install_targets = ['install']
phases = ['cmake', 'build', 'install']

Phases of a CMake package

property root_cmakelists_dir

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.

Returns

directory containing CMakeLists.txt

property std_cmake_args

Standard cmake arguments provided as a property for convenience of package writers

Returns

standard cmake arguments

spack.build_systems.cuda module

class spack.build_systems.cuda.CudaPackage(spec)[source]

Bases: spack.package.PackageBase

Auxiliary class which contains CUDA variant, dependencies and conflicts and is meant to unify and facilitate its usage.

Maintainers: ax3l, Rombur, davidbeckingsale

cuda_arch_values = ('10', '11', '12', '13', '20', '21', '30', '32', '35', '37', '50', '52', '53', '60', '61', '62', '70', '72', '75', '80', '86')
static cuda_flags(arch_list)[source]
value = '86'

spack.build_systems.gnu module

class spack.build_systems.gnu.GNUMirrorPackage(spec)[source]

Bases: spack.package.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

gnu_mirror_path = None

Path of the package in a GNU mirror

property urls

spack.build_systems.intel module

class spack.build_systems.intel.IntelPackage(spec)[source]

Bases: spack.package.PackageBase

Specialized class for licensed Intel software.

This class provides two phases that can be overridden:

  1. configure()

  2. install()

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 blas_libs
build_system_class = 'IntelPackage'

This attribute is used in UI queries that need to know the build system base class

component_bin_dir(component, **kwargs)[source]
component_include_dir(component, **kwargs)[source]
component_lib_dir(component, **kwargs)[source]

Provide directory suitable for find_libraries() and SPACK_COMPILER_EXTRA_RPATHS.

configure(spec, prefix)[source]

Generates the silent.cfg file to pass to installer.sh.

See https://software.intel.com/en-us/articles/configuration-file-format

configure_auto_dispatch()[source]
configure_rpath()[source]
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”)`

filter_compiler_wrappers()[source]
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 = ['INTEL_LICENSE_FILE']

Environment variables that Intel searches for a license file

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

phases = ['configure', 'install']

Phases of an Intel package

property pset_components
property scalapack_libs
setup_dependent_build_environment(env, dependent_spec)[source]

Sets up the build environment of packages that depend on this one.

This is similar to setup_build_environment, but it is used to modify the build environments of packages that depend on this one.

This gives packages like Python and others that follow the extension model a way to implement common environment or compile-time settings for dependencies.

This method will be called before the dependent package prefix exists in Spack’s store.

Examples

1. Installing python modules generally requires PYTHONPATH to point to the lib/pythonX.Y/site-packages directory in the module’s install prefix. This method could be used to set that variable.

Parameters
  • env (spack.util.environment.EnvironmentModifications) – environment modifications to be applied when the dependent package is built. Package authors can call methods on it to alter the build environment.

  • dependent_spec (spack.spec.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_dependent_package(module, dep_spec)[source]

Set up Python module-scope variables for dependent packages.

Called before the install() method of dependents.

Default implementation does nothing, but this can be overridden by an extendable package to set up the module of its extensions. This is useful if there are some common steps to installing all extensions for a certain package.

Examples:

  1. Extensions often need to invoke the python interpreter from the Python installation being extended. This routine can put a python() Executable object in the module scope for the extension package to simplify extension installs.

  2. 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.

  3. BLAS/LAPACK implementations can set some variables indicating the path to their libraries, since these paths differ by BLAS/LAPACK implementation.

Parameters
  • module (spack.package.PackageBase.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 (spack.spec.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]
property tbb_headers
property tbb_libs

Supply LibraryList for linking TBB

uninstall_ism()[source]
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.intel.debug_print(msg, *args)[source]

Prints a message (usu. a variable) and the callers’ names for a couple of stack frames.

spack.build_systems.intel.raise_lib_error(*args)[source]

Bails out with an error message. Shows args after the first as one per line, tab-indented, useful for long paths to line up and stand out.

spack.build_systems.makefile module

class spack.build_systems.makefile.MakefilePackage(spec)[source]

Bases: spack.package.PackageBase

Specialized class for packages that are built using editable Makefiles

This class provides three phases that can be overridden:

It is usually necessary to override the edit() phase, while build() and install() have sensible defaults. For a finer tuning you may override:

Method

Purpose

build_targets

Specify make targets for the build phase

install_targets

Specify make targets for the install phase

build_directory()

Directory where the Makefile is located

build(spec, prefix)[source]

Calls make, passing build_targets as targets.

property build_directory

Returns the directory containing the main Makefile

Returns

build directory

build_system_class = 'MakefilePackage'

This attribute is used in UI queries that need to know the build system base class

build_targets = []

Targets for make during the build() phase

build_time_test_callbacks = ['check']

Callback names for build-time test

check()[source]

Searches the Makefile for targets test and check and runs them if found.

edit(spec, prefix)[source]

Edits the Makefile before calling make. This phase cannot be defaulted.

install(spec, prefix)[source]

Calls make, passing install_targets as targets.

install_targets = ['install']

Targets for make during the install() phase

install_time_test_callbacks = ['installcheck']

Callback names for install-time test

installcheck()[source]

Searches the Makefile for an installcheck target and runs it if found.

phases = ['edit', 'build', 'install']

Phases of a package that is built with an hand-written Makefile

spack.build_systems.maven module

class spack.build_systems.maven.MavenPackage(spec)[source]

Bases: spack.package.PackageBase

Specialized class for packages that are built using the Maven build system. See https://maven.apache.org/index.html for more information.

This class provides the following phases that can be overridden:

  • build

  • install

build(spec, prefix)[source]

Compile code and package into a JAR file.

build_args()[source]

List of args to pass to build phase.

property build_directory

The directory containing the pom.xml file.

build_system_class = 'MavenPackage'
install(spec, prefix)[source]

Copy to installation prefix.

phases = ['build', 'install']

spack.build_systems.meson module

class spack.build_systems.meson.MesonPackage(spec)[source]

Bases: spack.package.PackageBase

Specialized class for packages built using Meson

For more information on the Meson build system, see: https://mesonbuild.com/

This class provides three phases that can be overridden:

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

root_mesonlists_dir()

Location of the root MesonLists.txt

build_directory()

Directory where to build the package

property archive_files

Files to archive for packages based on Meson

build(spec, prefix)[source]

Make the build targets

property build_directory

Returns the directory to use when building the package

Returns

directory where to build the package

build_system_class = 'MesonPackage'

This attribute is used in UI queries that need to know the build system base class

build_targets = []
build_time_test_callbacks = ['check']

A list or set of build time test functions to be called when tests are executed or ‘None’ if there are no such test functions.

check()[source]

Searches the Meson-generated file for the target test and runs it if found.

flags_to_build_system_args(flags)[source]

Produces a list of all command line arguments to pass the specified compiler flags to meson.

install(spec, prefix)[source]

Make the install targets

install_targets = ['install']
meson(spec, prefix)[source]

Runs meson in the build directory

meson_args()[source]

Produces a list containing all the arguments that must be passed to meson, except:

  • --prefix

  • --libdir

  • --buildtype

  • --strip

  • --default_library

which will be set automatically.

Returns

list of arguments for meson

phases = ['meson', 'build', 'install']

Phases of a Meson package

property root_mesonlists_dir

The 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.

Returns

directory containing meson.build

property std_meson_args

Standard meson arguments provided as a property for convenience of package writers

Returns

standard meson arguments

spack.build_systems.octave module

class spack.build_systems.octave.OctavePackage(spec)[source]

Bases: spack.package.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.

This class provides the following phases that can be overridden:

  1. install()

build_system_class = 'OctavePackage'
install(spec, prefix)[source]

Install the package from the archive file

phases = ['install']
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 (spack.util.environment.EnvironmentModifications) – environment modifications to be applied when the package is built. Package authors can call methods on it to alter the build environment.

spack.build_systems.oneapi module

Common utilities for managing intel oneapi packages.

class spack.build_systems.oneapi.IntelOneApiLibraryPackage(spec)[source]

Bases: spack.build_systems.oneapi.IntelOneApiPackage

Base class for Intel oneAPI library packages.

property headers
property libs
class spack.build_systems.oneapi.IntelOneApiPackage(spec)[source]

Bases: spack.package.Package

Base class for Intel oneAPI packages.

property component_dir

Subdirectory for this component in the install prefix.

property component_path

Path to component <prefix>/<component>/<version>.

homepage = 'https://software.intel.com/oneapi'

Package homepage where users can find more information about the package

install(spec, prefix, installer_path=None)[source]

Shared install method for all oneapi packages.

phases = ['install']

The one and only phase

redistribute_source = False
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

spack.build_systems.perl module

class spack.build_systems.perl.PerlPackage(spec)[source]

Bases: spack.package.PackageBase

Specialized class for packages that are built using Perl.

This class provides four phases that can be overridden if required:

The default methods use, in order of preference:
  1. Makefile.PL,

  2. Build.PL.

Some packages may need to override configure_args(), which produces a list of arguments for configure(). Arguments should not include the installation base directory.

build(spec, prefix)[source]

Builds a Perl package.

build_system_class = 'PerlPackage'

This attribute is used in UI queries that need to know the build system base class

build_time_test_callbacks = ['check']

Callback names for build-time test

check()[source]

Runs built-in tests of a Perl package.

configure(spec, prefix)[source]

Runs Makefile.PL or Build.PL with arguments consisting of an appropriate installation base directory followed by the list returned by configure_args().

Raises

RuntimeError – if neither Makefile.PL or Build.PL exist

configure_args()[source]

Produces a list containing the arguments that must be passed to configure(). Arguments should not include the installation base directory, which is prepended automatically.

Returns

list of arguments for Makefile.PL or Build.PL

fix_shebang()[source]
install(spec, prefix)[source]

Installs a Perl package.

phases = ['configure', 'build', 'install']

Phases of a Perl package

spack.build_systems.python module

class spack.build_systems.python.PythonPackage(spec)[source]

Bases: spack.package.PackageBase

Specialized class for packages that are built using Python setup.py files

This class provides the following phases that can be overridden:

  • build

  • build_py

  • build_ext

  • build_clib

  • build_scripts

  • install

  • install_lib

  • install_headers

  • install_scripts

  • install_data

These are all standard setup.py commands and can be found by running:

$ python setup.py --help-commands

By default, only the ‘build’ and ‘install’ phases are run, but if you need to run more phases, simply modify your phases list like so:

phases = ['build_ext', 'install', 'bdist']

Each phase provides a function <phase> that runs:

$ python -s setup.py --no-user-cfg <phase>

Each phase also has a <phase_args> function that can pass arguments to this call. All of these functions are empty except for the install_args function, which passes --prefix=/path/to/installation/directory.

If you need to run a phase which is not a standard setup.py command, you’ll need to define a function for it like so:

def configure(self, spec, prefix):
    self.setup_py('configure')
add_files_to_view(view, merge_map)[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.

build(spec, prefix)[source]

Build everything needed to install.

build_args(spec, prefix)[source]

Arguments to pass to build.

build_clib(spec, prefix)[source]

Build C/C++ libraries used by Python extensions.

build_clib_args(spec, prefix)[source]

Arguments to pass to build_clib.

property build_directory

The directory containing the setup.py file.

build_ext(spec, prefix)[source]

Build C/C++ extensions (compile/link to build directory).

build_ext_args(spec, prefix)[source]

Arguments to pass to build_ext.

build_py(spec, prefix)[source]

“Build” pure Python modules (copy to build directory).

build_py_args(spec, prefix)[source]

Arguments to pass to build_py.

build_scripts(spec, prefix)[source]

“Build” scripts (copy and fixup #! line).

build_scripts_args(spec, prefix)[source]

Arguments to pass to build_scripts.

build_system_class = 'PythonPackage'
property homepage
property import_modules

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

Return type

list

install(spec, prefix)[source]

Install everything from build directory.

install_args(spec, prefix)[source]

Arguments to pass to install.

install_data(spec, prefix)[source]

Install data files.

install_data_args(spec, prefix)[source]

Arguments to pass to install_data.

install_headers(spec, prefix)[source]

Install C/C++ header files.

install_headers_args(spec, prefix)[source]

Arguments to pass to install_headers.

install_lib(spec, prefix)[source]

Install all Python modules (extensions and pure Python).

install_lib_args(spec, prefix)[source]

Arguments to pass to install_lib.

install_scripts(spec, prefix)[source]

Install scripts (Python or otherwise).

install_scripts_args(spec, prefix)[source]

Arguments to pass to install_scripts.

install_time_test_callbacks = ['test']

Callback names for install-time test

property list_url
maintainers = ['adamjstewart']

List of strings which contains GitHub usernames of package maintainers. Do not include @ here in order not to unnecessarily ping the users.

phases = ['build', 'install']
py_namespace = None
pypi = None

Package name, version, and extension on PyPI

python(*args, **kwargs)[source]
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.

setup_file()[source]

Returns the name of the setup file to use.

setup_py(*args, **kwargs)[source]
test()[source]

Attempts to import modules of the installed package.

property url
view_file_conflicts(view, merge_map)[source]

Report all file conflicts, excepting special cases for python. Specifically, this does not report errors for duplicate __init__.py files for packages in the same namespace.

spack.build_systems.qmake module

class spack.build_systems.qmake.QMakePackage(spec)[source]

Bases: spack.package.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

This class provides three phases that can be overridden:

  1. qmake()

  2. build()

  3. install()

They all have sensible defaults and for many packages the only thing necessary will be to override qmake_args().

build(spec, prefix)[source]

Make the build targets

property build_directory

The directory containing the *.pro file.

build_system_class = 'QMakePackage'

This attribute is used in UI queries that need to know the build system base class

build_time_test_callbacks = ['check']

Callback names for build-time test

check()[source]

Searches the Makefile for a check: target and runs it if found.

install(spec, prefix)[source]

Make the install targets

phases = ['qmake', 'build', 'install']

Phases of a qmake package

qmake(spec, prefix)[source]

Run qmake to configure the project and generate a Makefile.

qmake_args()[source]

Produces a list containing all the arguments that must be passed to qmake

spack.build_systems.r module

class spack.build_systems.r.RPackage(spec)[source]

Bases: spack.package.PackageBase

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

This class 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

bioc = None
build_system_class = 'RPackage'

This attribute is used in UI queries that need to know the build system base class

configure_args()[source]

Arguments to pass to install via --configure-args.

configure_vars()[source]

Arguments to pass to install via --configure-vars.

cran = None
property git
property homepage
install(spec, prefix)[source]

Installs an R package.

property list_url
maintainers = ['glennpj']

List of strings which contains GitHub usernames of package maintainers. Do not include @ here in order not to unnecessarily ping the users.

phases = ['install']
property url

spack.build_systems.rocm module

class spack.build_systems.rocm.ROCmPackage(spec)[source]

Bases: spack.package.PackageBase

Auxiliary class which contains ROCm variant, dependencies and conflicts and is meant to unify and facilitate its usage. Closely mimics CudaPackage.

Maintainers: dtaller

amdgpu_targets = ('gfx701', 'gfx801', 'gfx802', 'gfx803', 'gfx900', 'gfx906', 'gfx908', 'gfx1010', 'gfx1011', 'gfx1012')
static hip_flags(amdgpu_target)[source]
value = 'gfx1012'

spack.build_systems.ruby module

class spack.build_systems.ruby.RubyPackage(spec)[source]

Bases: spack.package.PackageBase

Specialized class for building Ruby gems.

This class provides two phases that can be overridden if required:

  1. build()

  2. install()

build(spec, prefix)[source]

Build a Ruby gem.

build_system_class = 'RubyPackage'

This attribute is used in UI queries that need to know the build system base class

install(spec, prefix)[source]

Install a Ruby gem.

The ruby package sets GEM_HOME to tell gem where to install to.

maintainers = ['Kerilk']

List of strings which contains GitHub usernames of package maintainers. Do not include @ here in order not to unnecessarily ping the users.

phases = ['build', 'install']

Phases of a Ruby package

spack.build_systems.scons module

class spack.build_systems.scons.SConsPackage(spec)[source]

Bases: spack.package.PackageBase

Specialized class for packages built using SCons.

See http://scons.org/documentation.html for more information.

This class provides the following phases that can be overridden:

  1. build()

  2. install()

Packages that use SCons as a build system are less uniform than packages that use other build systems. Developers can add custom subcommands or variables that control the build. You will likely need to override build_args() to pass the appropriate variables.

build(spec, prefix)[source]

Build the package.

build_args(spec, prefix)[source]

Arguments to pass to build.

build_system_class = 'SConsPackage'

To be used in UI queries that require to know which build-system class we are using

build_test()[source]

Run unit tests after build.

By default, does nothing. Override this if you want to add package-specific tests.

build_time_test_callbacks = ['build_test']

Callback names for build-time test

install(spec, prefix)[source]

Install the package.

install_args(spec, prefix)[source]

Arguments to pass to install.

phases = ['build', 'install']

Phases of a SCons package

spack.build_systems.sip module

class spack.build_systems.sip.SIPPackage(spec)[source]

Bases: spack.package.PackageBase

Specialized class for packages that are built using the SIP build system. See https://www.riverbankcomputing.com/software/sip/intro for more information.

This class provides the following phases that can be overridden:

  • configure

  • build

  • install

The configure phase already adds a set of default flags. To see more options, run python configure.py --help.

build(spec, prefix)[source]

Build the package.

build_args()[source]

Arguments to pass to build.

build_system_class = 'SIPPackage'
configure(spec, prefix)[source]

Configure the package.

configure_args()[source]

Arguments to pass to configure.

configure_file()[source]

Returns the name of the configure file to use.

extend_path_setup()[source]
property import_modules

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

Return type

list

install(spec, prefix)[source]

Install the package.

install_args()[source]

Arguments to pass to install.

install_time_test_callbacks = ['test']

Callback names for install-time test

phases = ['configure', 'build', 'install']
python(*args, **kwargs)[source]

The python Executable.

sip_module = 'sip'

Name of private sip module to install alongside package

test()[source]

Attempts to import modules of the installed package.

spack.build_systems.sourceforge module

class spack.build_systems.sourceforge.SourceforgePackage(spec)[source]

Bases: spack.package.PackageBase

Mixin that takes care of setting url and mirrors for Sourceforge packages.

base_mirrors = ['https://prdownloads.sourceforge.net/', 'https://freefr.dl.sourceforge.net/', 'https://netcologne.dl.sourceforge.net/', 'https://pilotfiber.dl.sourceforge.net/', 'https://downloads.sourceforge.net/', 'http://kent.dl.sourceforge.net/sourceforge/']

List of Sourceforge mirrors used by Spack

sourceforge_mirror_path = None

Path of the package in a Sourceforge mirror

property urls

spack.build_systems.sourceware module

class spack.build_systems.sourceware.SourcewarePackage(spec)[source]

Bases: spack.package.PackageBase

Mixin that takes care of setting url and mirrors for Sourceware.org packages.

base_mirrors = ['https://sourceware.org/pub/', 'https://mirrors.kernel.org/sourceware/', 'https://ftp.gwdg.de/pub/linux/sources.redhat.com/']

List of Sourceware mirrors used by Spack

sourceware_mirror_path = None

Path of the package in a Sourceware mirror

property urls

spack.build_systems.waf module

class spack.build_systems.waf.WafPackage(spec)[source]

Bases: spack.package.PackageBase

Specialized class for packages that are built using the Waf build system. See https://waf.io/book/ for more information.

This class provides the following phases that can be overridden:

  • configure

  • build

  • install

These are all standard Waf commands and can be found by running:

$ python waf --help

Each phase provides a function <phase> that runs:

$ python waf -j<jobs> <phase>

where <jobs> is the number of parallel jobs to build with. Each phase also has a <phase_args> function that can pass arguments to this call. All of these functions are empty except for the configure_args function, which passes --prefix=/path/to/installation/prefix.

build(spec, prefix)[source]

Executes the build.

build_args()[source]

Arguments to pass to build.

property build_directory

The directory containing the waf file.

build_system_class = 'WafPackage'
build_test()[source]

Run unit tests after build.

By default, does nothing. Override this if you want to add package-specific tests.

build_time_test_callbacks = ['build_test']

A list or set of build time test functions to be called when tests are executed or ‘None’ if there are no such test functions.

configure(spec, prefix)[source]

Configures the project.

configure_args()[source]

Arguments to pass to configure.

install(spec, prefix)[source]

Installs the targets on the system.

install_args()[source]

Arguments to pass to install.

install_test()[source]

Run unit tests after install.

By default, does nothing. Override this if you want to add package-specific tests.

install_time_test_callbacks = ['install_test']

A list or set of install time test functions to be called when tests are executed or ‘None’ if there are no such test functions.

phases = ['configure', 'build', 'install']
python(*args, **kwargs)[source]

The python Executable.

waf(*args, **kwargs)[source]

Runs the waf Executable.

spack.build_systems.xorg module

class spack.build_systems.xorg.XorgPackage(spec)[source]

Bases: spack.package.PackageBase

Mixin that takes care of setting url and mirrors for x.org packages.

base_mirrors = ['https://www.x.org/archive/individual/', 'https://mirrors.ircam.fr/pub/x.org/individual/', 'https://mirror.transip.net/xorg/individual/', 'ftp://ftp.freedesktop.org/pub/xorg/individual/', 'http://xorg.mirrors.pair.com/individual/']
property urls
xorg_mirror_path = None

Path of the package in a x.org mirror

Module contents