Merge tag 'before-compiler-dependencies' into woptim/rsc-2025-03-0-retro
This commit is contained in:
commit
eb264b1261
7
.github/workflows/ci.yaml
vendored
7
.github/workflows/ci.yaml
vendored
@ -9,6 +9,7 @@ on:
|
||||
branches:
|
||||
- develop
|
||||
- releases/**
|
||||
merge_group:
|
||||
|
||||
concurrency:
|
||||
group: ci-${{github.ref}}-${{github.event.pull_request.number || github.run_number}}
|
||||
@ -25,13 +26,17 @@ jobs:
|
||||
packages: ${{ steps.filter.outputs.packages }}
|
||||
steps:
|
||||
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
|
||||
if: ${{ github.event_name == 'push' }}
|
||||
if: ${{ github.event_name == 'push' || github.event_name == 'merge_group' }}
|
||||
with:
|
||||
fetch-depth: 0
|
||||
# For pull requests it's not necessary to checkout the code
|
||||
- uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36
|
||||
id: filter
|
||||
with:
|
||||
# For merge group events, compare against the target branch (main)
|
||||
base: ${{ github.event_name == 'merge_group' && github.event.merge_group.base_ref || '' }}
|
||||
# For merge group events, use the merge group head ref
|
||||
ref: ${{ github.event_name == 'merge_group' && github.event.merge_group.head_sha || github.ref }}
|
||||
# See https://github.com/dorny/paths-filter/issues/56 for the syntax used below
|
||||
# Don't run if we only modified packages in the
|
||||
# built-in repository or documentation
|
||||
|
@ -457,6 +457,13 @@ developed package in the environment are concretized to match the
|
||||
version (and other constraints) passed as the spec argument to the
|
||||
``spack develop`` command.
|
||||
|
||||
When working deep in the graph it is often desirable to have multiple specs marked
|
||||
as ``develop`` so you don't have to restage and/or do full rebuilds each time you
|
||||
call ``spack install``. The ``--recursive`` flag can be used in these scenarios
|
||||
to ensure that all the dependents of the initial spec you provide are also marked
|
||||
as develop specs. The ``--recursive`` flag requires a pre-concretized environment
|
||||
so the graph can be traversed from the supplied spec all the way to the root specs.
|
||||
|
||||
For packages with ``git`` attributes, git branches, tags, and commits can
|
||||
also be used as valid concrete versions (see :ref:`version-specifier`).
|
||||
This means that for a package ``foo``, ``spack develop foo@git.main`` will clone
|
||||
|
@ -3,11 +3,13 @@
|
||||
# SPDX-License-Identifier: (Apache-2.0 OR MIT)
|
||||
import os
|
||||
import shutil
|
||||
from typing import Optional
|
||||
|
||||
import llnl.util.tty as tty
|
||||
|
||||
import spack.cmd
|
||||
import spack.config
|
||||
import spack.environment
|
||||
import spack.fetch_strategy
|
||||
import spack.repo
|
||||
import spack.spec
|
||||
@ -31,37 +33,33 @@ def setup_parser(subparser):
|
||||
"--no-clone",
|
||||
action="store_false",
|
||||
dest="clone",
|
||||
default=None,
|
||||
help="do not clone, the package already exists at the source path",
|
||||
)
|
||||
clone_group.add_argument(
|
||||
"--clone",
|
||||
action="store_true",
|
||||
dest="clone",
|
||||
default=None,
|
||||
help="clone the package even if the path already exists",
|
||||
default=True,
|
||||
help=(
|
||||
"(default) clone the package unless the path already exists, "
|
||||
"use --force to overwrite"
|
||||
),
|
||||
)
|
||||
|
||||
subparser.add_argument(
|
||||
"-f", "--force", help="remove any files or directories that block cloning source code"
|
||||
)
|
||||
|
||||
subparser.add_argument(
|
||||
"-r",
|
||||
"--recursive",
|
||||
action="store_true",
|
||||
help="traverse nodes of the graph to mark everything up to the root as a develop spec",
|
||||
)
|
||||
|
||||
arguments.add_common_arguments(subparser, ["spec"])
|
||||
|
||||
|
||||
def _update_config(spec, path):
|
||||
find_fn = lambda section: spec.name in section
|
||||
|
||||
entry = {"spec": str(spec)}
|
||||
if path != spec.name:
|
||||
entry["path"] = path
|
||||
|
||||
def change_fn(section):
|
||||
section[spec.name] = entry
|
||||
|
||||
spack.config.change_or_add("develop", find_fn, change_fn)
|
||||
|
||||
|
||||
def _retrieve_develop_source(spec: spack.spec.Spec, abspath: str) -> None:
|
||||
# "steal" the source code via staging API. We ask for a stage
|
||||
# to be created, then copy it afterwards somewhere else. It would be
|
||||
@ -83,44 +81,43 @@ def _retrieve_develop_source(spec: spack.spec.Spec, abspath: str) -> None:
|
||||
package.stage.steal_source(abspath)
|
||||
|
||||
|
||||
def develop(parser, args):
|
||||
# Note: we could put develop specs in any scope, but I assume
|
||||
# users would only ever want to do this for either (a) an active
|
||||
# env or (b) a specified config file (e.g. that is included by
|
||||
# an environment)
|
||||
# TODO: when https://github.com/spack/spack/pull/35307 is merged,
|
||||
# an active env is not required if a scope is specified
|
||||
env = spack.cmd.require_active_env(cmd_name="develop")
|
||||
if not args.spec:
|
||||
if args.clone is False:
|
||||
raise SpackError("No spec provided to spack develop command")
|
||||
def assure_concrete_spec(env: spack.environment.Environment, spec: spack.spec.Spec):
|
||||
version = spec.versions.concrete_range_as_version
|
||||
if not version:
|
||||
# first check environment for a matching concrete spec
|
||||
matching_specs = env.all_matching_specs(spec)
|
||||
if matching_specs:
|
||||
version = matching_specs[0].version
|
||||
test_spec = spack.spec.Spec(f"{spec}@{version}")
|
||||
for m_spec in matching_specs:
|
||||
if not m_spec.satisfies(test_spec):
|
||||
raise SpackError(
|
||||
f"{spec.name}: has multiple concrete instances in the graph that can't be"
|
||||
" satisified by a single develop spec. To use `spack develop` ensure one"
|
||||
" of the following:"
|
||||
f"\n a) {spec.name} nodes can satisfy the same develop spec (minimally "
|
||||
"this means they all share the same version)"
|
||||
f"\n b) Provide a concrete develop spec ({spec.name}@[version]) to clearly"
|
||||
" indicate what should be developed"
|
||||
)
|
||||
else:
|
||||
# look up the maximum version so infintiy versions are preferred for develop
|
||||
version = max(spec.package_class.versions.keys())
|
||||
tty.msg(f"Defaulting to highest version: {spec.name}@{version}")
|
||||
spec.versions = spack.version.VersionList([version])
|
||||
|
||||
# download all dev specs
|
||||
for name, entry in env.dev_specs.items():
|
||||
path = entry.get("path", name)
|
||||
abspath = spack.util.path.canonicalize_path(path, default_wd=env.path)
|
||||
|
||||
if os.path.exists(abspath):
|
||||
msg = "Skipping developer download of %s" % entry["spec"]
|
||||
msg += " because its path already exists."
|
||||
tty.msg(msg)
|
||||
continue
|
||||
def setup_src_code(spec: spack.spec.Spec, src_path: str, clone: bool = True, force: bool = False):
|
||||
"""
|
||||
Handle checking, cloning or overwriting source code
|
||||
"""
|
||||
assert spec.versions
|
||||
|
||||
# Both old syntax `spack develop pkg@x` and new syntax `spack develop pkg@=x`
|
||||
# are currently supported.
|
||||
spec = spack.spec.parse_with_version_concrete(entry["spec"])
|
||||
_retrieve_develop_source(spec, abspath)
|
||||
if clone:
|
||||
_clone(spec, src_path, force)
|
||||
|
||||
if not env.dev_specs:
|
||||
tty.warn("No develop specs to download")
|
||||
|
||||
return
|
||||
|
||||
specs = spack.cmd.parse_specs(args.spec)
|
||||
if len(specs) > 1:
|
||||
raise SpackError("spack develop requires at most one named spec")
|
||||
|
||||
spec = specs[0]
|
||||
if not clone and not os.path.exists(src_path):
|
||||
raise SpackError(f"Provided path {src_path} does not exist")
|
||||
|
||||
version = spec.versions.concrete_range_as_version
|
||||
if not version:
|
||||
@ -129,40 +126,114 @@ def develop(parser, args):
|
||||
tty.msg(f"Defaulting to highest version: {spec.name}@{version}")
|
||||
spec.versions = spack.version.VersionList([version])
|
||||
|
||||
# If user does not specify --path, we choose to create a directory in the
|
||||
# active environment's directory, named after the spec
|
||||
path = args.path or spec.name
|
||||
if not os.path.isabs(path):
|
||||
abspath = spack.util.path.canonicalize_path(path, default_wd=env.path)
|
||||
else:
|
||||
abspath = path
|
||||
|
||||
# clone default: only if the path doesn't exist
|
||||
clone = args.clone
|
||||
if clone is None:
|
||||
clone = not os.path.exists(abspath)
|
||||
def _update_config(spec, path):
|
||||
find_fn = lambda section: spec.name in section
|
||||
|
||||
if not clone and not os.path.exists(abspath):
|
||||
raise SpackError("Provided path %s does not exist" % abspath)
|
||||
entry = {"spec": str(spec)}
|
||||
if path and path != spec.name:
|
||||
entry["path"] = path
|
||||
|
||||
if clone:
|
||||
if os.path.exists(abspath):
|
||||
if args.force:
|
||||
shutil.rmtree(abspath)
|
||||
else:
|
||||
msg = "Path %s already exists and cannot be cloned to." % abspath
|
||||
msg += " Use `spack develop -f` to overwrite."
|
||||
raise SpackError(msg)
|
||||
def change_fn(section):
|
||||
section[spec.name] = entry
|
||||
|
||||
_retrieve_develop_source(spec, abspath)
|
||||
spack.config.change_or_add("develop", find_fn, change_fn)
|
||||
|
||||
|
||||
def update_env(
|
||||
env: spack.environment.Environment,
|
||||
spec: spack.spec.Spec,
|
||||
specified_path: Optional[str] = None,
|
||||
build_dir: Optional[str] = None,
|
||||
):
|
||||
"""
|
||||
Update the spack.yaml file with additions or changes from a develop call
|
||||
"""
|
||||
tty.debug(f"Updating develop config for {env.name} transactionally")
|
||||
|
||||
if not specified_path:
|
||||
dev_entry = env.dev_specs.get(spec.name)
|
||||
if dev_entry:
|
||||
specified_path = dev_entry.get("path", None)
|
||||
|
||||
tty.debug("Updating develop config for {0} transactionally".format(env.name))
|
||||
with env.write_transaction():
|
||||
if args.build_directory is not None:
|
||||
if build_dir is not None:
|
||||
spack.config.add(
|
||||
"packages:{}:package_attributes:build_directory:{}".format(
|
||||
spec.name, args.build_directory
|
||||
),
|
||||
f"packages:{spec.name}:package_attributes:build_directory:{build_dir}",
|
||||
env.scope_name,
|
||||
)
|
||||
_update_config(spec, path)
|
||||
# add develop spec and update path
|
||||
_update_config(spec, specified_path)
|
||||
|
||||
|
||||
def _clone(spec: spack.spec.Spec, abspath: str, force: bool = False):
|
||||
if os.path.exists(abspath):
|
||||
if force:
|
||||
shutil.rmtree(abspath)
|
||||
else:
|
||||
msg = f"Skipping developer download of {spec.name}"
|
||||
msg += f" because its path {abspath} already exists."
|
||||
tty.msg(msg)
|
||||
return
|
||||
|
||||
# cloning can take a while and it's nice to get a message for the longer clones
|
||||
tty.msg(f"Cloning source code for {spec}")
|
||||
_retrieve_develop_source(spec, abspath)
|
||||
|
||||
|
||||
def _abs_code_path(
|
||||
env: spack.environment.Environment, spec: spack.spec.Spec, path: Optional[str] = None
|
||||
):
|
||||
src_path = path if path else spec.name
|
||||
return spack.util.path.canonicalize_path(src_path, default_wd=env.path)
|
||||
|
||||
|
||||
def _dev_spec_generator(args, env):
|
||||
"""
|
||||
Generator function to loop over all the develop specs based on how the command is called
|
||||
If no specs are supplied then loop over the develop specs listed in the environment.
|
||||
"""
|
||||
if not args.spec:
|
||||
if args.clone is False:
|
||||
raise SpackError("No spec provided to spack develop command")
|
||||
|
||||
for name, entry in env.dev_specs.items():
|
||||
path = entry.get("path", name)
|
||||
abspath = spack.util.path.canonicalize_path(path, default_wd=env.path)
|
||||
# Both old syntax `spack develop pkg@x` and new syntax `spack develop pkg@=x`
|
||||
# are currently supported.
|
||||
spec = spack.spec.parse_with_version_concrete(entry["spec"])
|
||||
yield spec, abspath
|
||||
else:
|
||||
specs = spack.cmd.parse_specs(args.spec)
|
||||
if (args.path or args.build_directory) and len(specs) > 1:
|
||||
raise SpackError(
|
||||
"spack develop requires at most one named spec when using the --path or"
|
||||
" --build-directory arguments"
|
||||
)
|
||||
|
||||
for spec in specs:
|
||||
if args.recursive:
|
||||
concrete_specs = env.all_matching_specs(spec)
|
||||
if not concrete_specs:
|
||||
tty.warn(
|
||||
f"{spec.name} has no matching concrete specs in the environment and "
|
||||
"will be skipped. `spack develop --recursive` requires a concretized"
|
||||
" environment"
|
||||
)
|
||||
else:
|
||||
for s in concrete_specs:
|
||||
for node_spec in s.traverse(direction="parents", root=True):
|
||||
tty.debug(f"Recursive develop for {node_spec.name}")
|
||||
yield node_spec, _abs_code_path(env, node_spec, args.path)
|
||||
else:
|
||||
yield spec, _abs_code_path(env, spec, args.path)
|
||||
|
||||
|
||||
def develop(parser, args):
|
||||
env = spack.cmd.require_active_env(cmd_name="develop")
|
||||
|
||||
for spec, abspath in _dev_spec_generator(args, env):
|
||||
assure_concrete_spec(env, spec)
|
||||
setup_src_code(spec, abspath, clone=args.clone, force=args.force)
|
||||
update_env(env, spec, args.path, args.build_directory)
|
||||
|
@ -17,6 +17,7 @@
|
||||
pytest = None # type: ignore
|
||||
|
||||
import llnl.util.filesystem
|
||||
import llnl.util.tty as tty
|
||||
import llnl.util.tty.color as color
|
||||
from llnl.util.tty.colify import colify
|
||||
|
||||
@ -236,6 +237,12 @@ def unit_test(parser, args, unknown_args):
|
||||
pytest_root = spack.extensions.load_extension(args.extension)
|
||||
|
||||
if args.numprocesses is not None and args.numprocesses > 1:
|
||||
try:
|
||||
import xdist # noqa: F401
|
||||
except ImportError:
|
||||
tty.error("parallel unit-test requires pytest-xdist module")
|
||||
return 1
|
||||
|
||||
pytest_args.extend(
|
||||
[
|
||||
"--dist",
|
||||
|
@ -1128,11 +1128,6 @@ def user_specs(self):
|
||||
|
||||
@property
|
||||
def dev_specs(self):
|
||||
if not self._dev_specs:
|
||||
self._dev_specs = self._read_dev_specs()
|
||||
return self._dev_specs
|
||||
|
||||
def _read_dev_specs(self):
|
||||
dev_specs = {}
|
||||
dev_config = spack.config.get("develop", {})
|
||||
for name, entry in dev_config.items():
|
||||
|
@ -16,6 +16,7 @@
|
||||
import spack.stage
|
||||
import spack.util.git
|
||||
import spack.util.path
|
||||
from spack.error import SpackError
|
||||
from spack.main import SpackCommand
|
||||
|
||||
add = SpackCommand("add")
|
||||
@ -159,6 +160,7 @@ def check_path(stage, dest):
|
||||
# Create path to allow develop to modify env
|
||||
fs.mkdirp(abspath)
|
||||
develop("--no-clone", "-p", path, "mpich@1.0")
|
||||
self.check_develop(e, spack.spec.Spec("mpich@=1.0"), path)
|
||||
|
||||
# Remove path to ensure develop with no args runs staging code
|
||||
os.rmdir(abspath)
|
||||
@ -218,6 +220,40 @@ def test_develop_full_git_repo(
|
||||
assert len(commits) > 1
|
||||
|
||||
|
||||
def test_recursive(mutable_mock_env_path, install_mockery, mock_fetch):
|
||||
env("create", "test")
|
||||
|
||||
with ev.read("test") as e:
|
||||
add("indirect-mpich@1.0")
|
||||
e.concretize()
|
||||
specs = e.all_specs()
|
||||
|
||||
assert len(specs) > 1
|
||||
develop("--recursive", "mpich")
|
||||
|
||||
expected_dev_specs = ["mpich", "direct-mpich", "indirect-mpich"]
|
||||
for spec in expected_dev_specs:
|
||||
assert spec in e.dev_specs
|
||||
|
||||
|
||||
def test_develop_fails_with_multiple_concrete_versions(
|
||||
mutable_mock_env_path, install_mockery, mock_fetch
|
||||
):
|
||||
env("create", "test")
|
||||
|
||||
with ev.read("test") as e:
|
||||
add("indirect-mpich@1.0")
|
||||
add("indirect-mpich@0.9")
|
||||
e.unify = False
|
||||
e.concretize()
|
||||
|
||||
with pytest.raises(SpackError) as develop_error:
|
||||
develop("indirect-mpich", fail_on_error=True)
|
||||
|
||||
error_str = "has multiple concrete instances in the graph"
|
||||
assert error_str in str(develop_error.value)
|
||||
|
||||
|
||||
def test_concretize_dev_path_with_at_symbol_in_env(mutable_mock_env_path, tmpdir, mock_packages):
|
||||
spec_like = "develop-test@develop"
|
||||
|
||||
|
@ -128,17 +128,21 @@ def test_dump_environment(prepare_environment_for_tests, shell_as, shell, tmpdir
|
||||
|
||||
|
||||
def test_reverse_environment_modifications(working_env):
|
||||
prepend_val = os.sep + os.path.join("new", "path", "prepended")
|
||||
append_val = os.sep + os.path.join("new", "path", "appended")
|
||||
|
||||
start_env = {
|
||||
"PREPEND_PATH": os.sep + os.path.join("path", "to", "prepend", "to"),
|
||||
"APPEND_PATH": os.sep + os.path.join("path", "to", "append", "to"),
|
||||
"PREPEND_PATH": prepend_val + os.pathsep + os.path.join("path", "to", "prepend", "to"),
|
||||
"APPEND_PATH": os.path.sep
|
||||
+ os.path.join("path", "to", "append", "to" + os.pathsep + append_val),
|
||||
"UNSET": "var_to_unset",
|
||||
"APPEND_FLAGS": "flags to append to",
|
||||
}
|
||||
|
||||
to_reverse = envutil.EnvironmentModifications()
|
||||
|
||||
to_reverse.prepend_path("PREPEND_PATH", "/new/path/prepended")
|
||||
to_reverse.append_path("APPEND_PATH", "/new/path/appended")
|
||||
to_reverse.prepend_path("PREPEND_PATH", prepend_val)
|
||||
to_reverse.append_path("APPEND_PATH", append_val)
|
||||
to_reverse.set_path("SET_PATH", ["/one/set/path", "/two/set/path"])
|
||||
to_reverse.set("SET", "a var")
|
||||
to_reverse.unset("UNSET")
|
||||
|
@ -363,6 +363,30 @@ def execute(self, env: MutableMapping[str, str]):
|
||||
env[self.name] = self.separator.join(directories)
|
||||
|
||||
|
||||
class RemoveFirstPath(NameValueModifier):
|
||||
def execute(self, env: MutableMapping[str, str]):
|
||||
tty.debug(f"RemoveFirstPath: {self.name}-{str(self.value)}", level=3)
|
||||
environment_value = env.get(self.name, "")
|
||||
directories = environment_value.split(self.separator)
|
||||
directories = [path_to_os_path(os.path.normpath(x)).pop() for x in directories]
|
||||
val = path_to_os_path(os.path.normpath(self.value)).pop()
|
||||
if val in directories:
|
||||
directories.remove(val)
|
||||
env[self.name] = self.separator.join(directories)
|
||||
|
||||
|
||||
class RemoveLastPath(NameValueModifier):
|
||||
def execute(self, env: MutableMapping[str, str]):
|
||||
tty.debug(f"RemoveLastPath: {self.name}-{str(self.value)}", level=3)
|
||||
environment_value = env.get(self.name, "")
|
||||
directories = environment_value.split(self.separator)[::-1]
|
||||
directories = [path_to_os_path(os.path.normpath(x)).pop() for x in directories]
|
||||
val = path_to_os_path(os.path.normpath(self.value)).pop()
|
||||
if val in directories:
|
||||
directories.remove(val)
|
||||
env[self.name] = self.separator.join(directories[::-1])
|
||||
|
||||
|
||||
class RemovePath(NameValueModifier):
|
||||
def execute(self, env: MutableMapping[str, str]):
|
||||
tty.debug(f"RemovePath: {self.name}-{str(self.value)}", level=3)
|
||||
@ -533,6 +557,30 @@ def prepend_path(self, name: str, path: str, separator: str = os.pathsep):
|
||||
item = PrependPath(name, path, separator=separator, trace=self._trace())
|
||||
self.env_modifications.append(item)
|
||||
|
||||
@system_env_normalize
|
||||
def remove_first_path(self, name: str, path: str, separator: str = os.pathsep):
|
||||
"""Stores a request to remove first instance of path from a list of paths.
|
||||
|
||||
Args:
|
||||
name: name of the environment variable
|
||||
path: path to be removed
|
||||
separator: separator for the paths (default: os.pathsep)
|
||||
"""
|
||||
item = RemoveFirstPath(name, path, separator=separator, trace=self._trace())
|
||||
self.env_modifications.append(item)
|
||||
|
||||
@system_env_normalize
|
||||
def remove_last_path(self, name: str, path: str, separator: str = os.pathsep):
|
||||
"""Stores a request to remove last instance of path from a list of paths.
|
||||
|
||||
Args:
|
||||
name: name of the environment variable
|
||||
path: path to be removed
|
||||
separator: separator for the paths (default: os.pathsep)
|
||||
"""
|
||||
item = RemoveLastPath(name, path, separator=separator, trace=self._trace())
|
||||
self.env_modifications.append(item)
|
||||
|
||||
@system_env_normalize
|
||||
def remove_path(self, name: str, path: str, separator: str = os.pathsep):
|
||||
"""Stores a request to remove a path from a list of paths.
|
||||
@ -613,9 +661,9 @@ def reversed(self) -> "EnvironmentModifications":
|
||||
tty.debug("Reversing `Set` environment operation may lose the original value")
|
||||
rev.unset(envmod.name)
|
||||
elif isinstance(envmod, AppendPath):
|
||||
rev.remove_path(envmod.name, envmod.value)
|
||||
rev.remove_last_path(envmod.name, envmod.value)
|
||||
elif isinstance(envmod, PrependPath):
|
||||
rev.remove_path(envmod.name, envmod.value)
|
||||
rev.remove_first_path(envmod.name, envmod.value)
|
||||
elif isinstance(envmod, SetPath):
|
||||
tty.debug("Reversing `SetPath` environment operation may lose the original value")
|
||||
rev.unset(envmod.name)
|
||||
|
@ -33,14 +33,15 @@ endif
|
||||
|
||||
# filter this script out of list of open files
|
||||
if ( $?_sp_lsof ) then
|
||||
set _sp_source_file = `$_sp_lsof | sed -e 's/^[^/]*//' | grep "/setup-env.csh"`
|
||||
set _sp_source_file = `$_sp_lsof | \sed -e 's/^[^/]*//' | \grep "/setup-env.csh"`
|
||||
endif
|
||||
|
||||
# This script is in $SPACK_ROOT/share/spack; get the root with dirname
|
||||
# This script is in $SPACK_ROOT/share/spack.
|
||||
# Get the root with :h, which is like dirname but it's a csh builtin
|
||||
if ($?_sp_source_file) then
|
||||
set _sp_share_spack = `dirname "$_sp_source_file"`
|
||||
set _sp_share = `dirname "$_sp_share_spack"`
|
||||
setenv SPACK_ROOT `dirname "$_sp_share"`
|
||||
set _sp_share_spack = "$_sp_source_file:h"
|
||||
set _sp_share = "$_sp_share_spack:h"
|
||||
setenv SPACK_ROOT "$_sp_share:h"
|
||||
endif
|
||||
|
||||
if (! $?SPACK_ROOT) then
|
||||
@ -73,8 +74,8 @@ _spack_pathadd PATH "$SPACK_ROOT/bin"
|
||||
eval `spack --print-shell-vars csh`
|
||||
|
||||
# Set up module search paths in the user environment
|
||||
set tcl_roots = `echo $_sp_tcl_roots:q | sed 's/:/ /g'`
|
||||
set compatible_sys_types = `echo $_sp_compatible_sys_types:q | sed 's/:/ /g'`
|
||||
set tcl_roots = `echo $_sp_tcl_roots:q | \sed 's/:/ /g'`
|
||||
set compatible_sys_types = `echo $_sp_compatible_sys_types:q | \sed 's/:/ /g'`
|
||||
foreach tcl_root ($tcl_roots:q)
|
||||
foreach systype ($compatible_sys_types:q)
|
||||
_spack_pathadd MODULEPATH "$tcl_root/$systype"
|
||||
|
@ -994,7 +994,7 @@ _spack_dev_build() {
|
||||
_spack_develop() {
|
||||
if $list_options
|
||||
then
|
||||
SPACK_COMPREPLY="-h --help -p --path -b --build-directory --no-clone --clone -f --force"
|
||||
SPACK_COMPREPLY="-h --help -p --path -b --build-directory --no-clone --clone -f --force -r --recursive"
|
||||
else
|
||||
_all_packages
|
||||
fi
|
||||
|
@ -1430,7 +1430,7 @@ complete -c spack -n '__fish_spack_using_command dev-build' -l deprecated -f -a
|
||||
complete -c spack -n '__fish_spack_using_command dev-build' -l deprecated -d 'allow concretizer to select deprecated versions'
|
||||
|
||||
# spack develop
|
||||
set -g __fish_spack_optspecs_spack_develop h/help p/path= b/build-directory= no-clone clone f/force=
|
||||
set -g __fish_spack_optspecs_spack_develop h/help p/path= b/build-directory= no-clone clone f/force= r/recursive
|
||||
complete -c spack -n '__fish_spack_using_command_pos_remainder 0 develop' -f -k -a '(__fish_spack_specs_or_id)'
|
||||
complete -c spack -n '__fish_spack_using_command develop' -s h -l help -f -a help
|
||||
complete -c spack -n '__fish_spack_using_command develop' -s h -l help -d 'show this help message and exit'
|
||||
@ -1441,9 +1441,11 @@ complete -c spack -n '__fish_spack_using_command develop' -s b -l build-director
|
||||
complete -c spack -n '__fish_spack_using_command develop' -l no-clone -f -a clone
|
||||
complete -c spack -n '__fish_spack_using_command develop' -l no-clone -d 'do not clone, the package already exists at the source path'
|
||||
complete -c spack -n '__fish_spack_using_command develop' -l clone -f -a clone
|
||||
complete -c spack -n '__fish_spack_using_command develop' -l clone -d 'clone the package even if the path already exists'
|
||||
complete -c spack -n '__fish_spack_using_command develop' -l clone -d '(default) clone the package unless the path already exists, use --force to overwrite'
|
||||
complete -c spack -n '__fish_spack_using_command develop' -s f -l force -r -f -a force
|
||||
complete -c spack -n '__fish_spack_using_command develop' -s f -l force -r -d 'remove any files or directories that block cloning source code'
|
||||
complete -c spack -n '__fish_spack_using_command develop' -s r -l recursive -f -a recursive
|
||||
complete -c spack -n '__fish_spack_using_command develop' -s r -l recursive -d 'traverse nodes of the graph to mark everything up to the root as a develop spec'
|
||||
|
||||
# spack diff
|
||||
set -g __fish_spack_optspecs_spack_diff h/help json first a/attribute= ignore=
|
||||
|
@ -14,6 +14,7 @@ class IndirectMpich(Package):
|
||||
url = "http://www.example.com/indirect_mpich-1.0.tar.gz"
|
||||
|
||||
version("1.0", md5="0123456789abcdef0123456789abcdef")
|
||||
version("0.9", md5="1123456789abcdef0123456789abcdef")
|
||||
|
||||
depends_on("mpi")
|
||||
depends_on("direct-mpich")
|
||||
|
@ -1,46 +1,87 @@
|
||||
diff --git a/util/chplenv/chpl_home_utils.py b/util/chplenv/chpl_home_utils.py
|
||||
index 5d85153835..b08fc2fc93 100644
|
||||
--- a/util/chplenv/chpl_home_utils.py
|
||||
+++ b/util/chplenv/chpl_home_utils.py
|
||||
@@ -54,6 +54,45 @@ install_path_regex = re.compile(
|
||||
os.path.sep,
|
||||
os.path.sep))
|
||||
|
||||
+@memoize
|
||||
+def get_chpl_configured_install_lib_prefix():
|
||||
+ # gets the path to the lib directory for a prefix install, or None if not
|
||||
+ # a prefix install
|
||||
+ chpl_home = str(os.getenv("CHPL_HOME"))
|
||||
+ if os.path.exists(os.path.join(chpl_home, "configured-prefix")):
|
||||
+ with open(os.path.join(chpl_home, "CMakeLists.txt"), "r") as f:
|
||||
+ # read CMakeLists.txt to get the CHPL_MAJOR_VERSION and
|
||||
+ # CHPL_MINOR_VERSION and then construct the path from that
|
||||
+ chpl_major_version = None
|
||||
+ chpl_minor_version = None
|
||||
+ for line in f:
|
||||
+ if "set(CHPL_MAJOR_VERSION" in line:
|
||||
+ chpl_major_version = line.split()[1].strip(")")
|
||||
+ if "set(CHPL_MINOR_VERSION" in line:
|
||||
+ chpl_minor_version = line.split()[1].strip(")")
|
||||
+ if (
|
||||
+ chpl_major_version is not None
|
||||
+ and chpl_minor_version is not None
|
||||
+ ):
|
||||
+ break
|
||||
+ assert chpl_major_version is not None and chpl_minor_version is not None
|
||||
+ chpl_version_string = "{}.{}".format(
|
||||
+ chpl_major_version,
|
||||
+ chpl_minor_version,
|
||||
+ )
|
||||
+ chpl_prefix = None
|
||||
+ with open(os.path.join(chpl_home, "configured-prefix"), "r") as f:
|
||||
+ chpl_prefix = f.read().strip()
|
||||
+ assert chpl_prefix != "" and chpl_prefix is not None
|
||||
+ return os.path.join(
|
||||
+ chpl_prefix,
|
||||
+ "lib",
|
||||
+ "chapel",
|
||||
+ chpl_version_string,
|
||||
+ "compiler",
|
||||
+ )
|
||||
+ return None
|
||||
+
|
||||
@memoize
|
||||
def get_chpl_version_from_install():
|
||||
if get_prefix_install_prefix():
|
||||
@@ -189,6 +228,8 @@ def _main():
|
||||
)
|
||||
parser.add_option('--using-module', action='store_const',
|
||||
dest='func', const=using_chapel_module)
|
||||
+ parser.add_option('--configured-install-lib-prefix', action='store_const',
|
||||
+ dest='func', const=get_chpl_configured_install_lib_prefix)
|
||||
(options, args) = parser.parse_args()
|
||||
|
||||
if options.func:
|
||||
|
||||
diff --git a/tools/chapel-py/setup.py b/tools/chapel-py/setup.py
|
||||
index bee452790c..58ec46d7e6 100644
|
||||
index 0f3dd9fea0..9be2a48cff 100644
|
||||
--- a/tools/chapel-py/setup.py
|
||||
+++ b/tools/chapel-py/setup.py
|
||||
@@ -46,7 +46,37 @@ host_cc = str(chpl_variables.get("CHPL_HOST_CC"))
|
||||
host_cxx = str(chpl_variables.get("CHPL_HOST_CXX"))
|
||||
@@ -47,6 +47,18 @@ host_cxx = str(chpl_variables.get("CHPL_HOST_CXX"))
|
||||
|
||||
host_bin_subdir = str(chpl_variables.get("CHPL_HOST_BIN_SUBDIR"))
|
||||
+
|
||||
+# construct the chpl_lib_path from chpl_home, or use the configured-prefix if it exists
|
||||
+
|
||||
chpl_lib_path = os.path.join(chpl_home, "lib", "compiler", host_bin_subdir)
|
||||
+chpl_install_lib_path = None
|
||||
+if os.path.exists(os.path.join(chpl_home, "configured-prefix")):
|
||||
+ with open(os.path.join(chpl_home, "CMakeLists.txt"), "r") as f:
|
||||
+ # read CMakeLists.txt to get the CHPL_MAJOR_VERSION and CHPL_MINOR_VERSION
|
||||
+ # and then construct the path from that
|
||||
+ chpl_major_version = None
|
||||
+ chpl_minor_version = None
|
||||
+ for line in f:
|
||||
+ if "set(CHPL_MAJOR_VERSION" in line:
|
||||
+ chpl_major_version = line.split()[1].strip(')')
|
||||
+ if "set(CHPL_MINOR_VERSION" in line:
|
||||
+ chpl_minor_version = line.split()[1].strip(')')
|
||||
+ if chpl_major_version is not None and chpl_minor_version is not None:
|
||||
+ break
|
||||
+ assert(chpl_major_version is not None and chpl_minor_version is not None)
|
||||
+ chpl_version_string = "{}.{}".format(chpl_major_version, chpl_minor_version)
|
||||
+ chpl_prefix = None
|
||||
+ with open(os.path.join(chpl_home, "configured-prefix"), "r") as f:
|
||||
+ chpl_prefix = f.read().strip()
|
||||
+ assert(chpl_prefix is not None)
|
||||
+ chpl_install_lib_path = os.path.join(
|
||||
+ chpl_prefix,
|
||||
+ "lib",
|
||||
+ "chapel",
|
||||
+ chpl_version_string,
|
||||
+ "compiler"
|
||||
+ )
|
||||
+# For installations using --prefix, the build and final lib paths are going to
|
||||
+# differ. figure out the install location now and write it to the rpath
|
||||
+chpl_home_utils = os.path.join(
|
||||
+ chpl_home, "util", "chplenv", "chpl_home_utils.py"
|
||||
+)
|
||||
+chpl_install_lib_path = (
|
||||
+ subprocess.check_output(
|
||||
+ ["python", chpl_home_utils, "--configured-install-lib-prefix"],
|
||||
+ )
|
||||
+ .decode(sys.stdout.encoding)
|
||||
+ .strip()
|
||||
+)
|
||||
|
||||
CXXFLAGS = []
|
||||
if have_llvm and have_llvm != "none":
|
||||
@@ -64,10 +94,14 @@ CXXFLAGS += ["-std=c++17", "-I{}/frontend/include".format(chpl_home)]
|
||||
@@ -64,11 +76,16 @@ CXXFLAGS += ["-std=c++17", "-I{}/frontend/include".format(chpl_home)]
|
||||
LDFLAGS = []
|
||||
LDFLAGS += [
|
||||
"-L{}".format(chpl_lib_path),
|
||||
@ -49,11 +90,13 @@ index bee452790c..58ec46d7e6 100644
|
||||
- "-Wl,-rpath",
|
||||
- chpl_lib_path,
|
||||
]
|
||||
+if chpl_install_lib_path is not None:
|
||||
|
||||
+if chpl_install_lib_path != "None":
|
||||
+ LDFLAGS += [
|
||||
+ "-L{}".format(chpl_install_lib_path),
|
||||
+ "-Wl,-rpath,{}".format(chpl_install_lib_path),
|
||||
+ ]
|
||||
|
||||
if str(chpl_variables.get("CHPL_SANITIZE")) == "address":
|
||||
if str(chpl_variables.get("CHPL_HOST_PLATFORM")) == "darwin":
|
||||
+
|
||||
os.environ["CC"] = host_cc
|
||||
os.environ["CXX"] = host_cxx
|
||||
setup(
|
||||
|
@ -1,49 +1,31 @@
|
||||
diff --git a/tools/chapel-py/setup.py b/tools/chapel-py/setup.py
|
||||
index 30c2708724..3921143def 100644
|
||||
index 30c2708724..0cf576ab25 100644
|
||||
--- a/tools/chapel-py/setup.py
|
||||
+++ b/tools/chapel-py/setup.py
|
||||
@@ -47,6 +47,36 @@ host_cxx = str(chpl_variables.get("CHPL_HOST_CXX"))
|
||||
@@ -47,6 +47,18 @@ host_cxx = str(chpl_variables.get("CHPL_HOST_CXX"))
|
||||
|
||||
host_bin_subdir = str(chpl_variables.get("CHPL_HOST_BIN_SUBDIR"))
|
||||
chpl_lib_path = os.path.join(chpl_home, "lib", "compiler", host_bin_subdir)
|
||||
+# For installations using --prefix, the lib final lib path is going to be different
|
||||
+# figure it out now and write it to the rpath
|
||||
+chpl_install_lib_path = None
|
||||
+if os.path.exists(os.path.join(chpl_home, "configured-prefix")):
|
||||
+ with open(os.path.join(chpl_home, "CMakeLists.txt"), "r") as f:
|
||||
+ # read CMakeLists.txt to get the CHPL_MAJOR_VERSION and CHPL_MINOR_VERSION
|
||||
+ # and then construct the path from that
|
||||
+ chpl_major_version = None
|
||||
+ chpl_minor_version = None
|
||||
+ for line in f:
|
||||
+ if "set(CHPL_MAJOR_VERSION" in line:
|
||||
+ chpl_major_version = line.split()[1].strip(')')
|
||||
+ if "set(CHPL_MINOR_VERSION" in line:
|
||||
+ chpl_minor_version = line.split()[1].strip(')')
|
||||
+ if chpl_major_version is not None and chpl_minor_version is not None:
|
||||
+ break
|
||||
+ assert(chpl_major_version is not None and chpl_minor_version is not None)
|
||||
+ chpl_version_string = "{}.{}".format(chpl_major_version, chpl_minor_version)
|
||||
+ chpl_prefix = None
|
||||
+ with open(os.path.join(chpl_home, "configured-prefix"), "r") as f:
|
||||
+ chpl_prefix = f.read().strip()
|
||||
+ assert(chpl_prefix is not None)
|
||||
+ chpl_install_lib_path = os.path.join(
|
||||
+ chpl_prefix,
|
||||
+ "lib",
|
||||
+ "chapel",
|
||||
+ chpl_version_string,
|
||||
+ "compiler"
|
||||
+ )
|
||||
+
|
||||
+# For installations using --prefix, the build and final lib paths are going to
|
||||
+# differ figure out the install location now and write it to the rpath
|
||||
+chpl_home_utils = os.path.join(
|
||||
+ chpl_home, "util", "chplenv", "chpl_home_utils.py"
|
||||
+)
|
||||
+chpl_install_lib_path = (
|
||||
+ subprocess.check_output(
|
||||
+ ["python", chpl_home_utils, "--configured-install-lib-prefix"],
|
||||
+ )
|
||||
+ .decode(sys.stdout.encoding)
|
||||
+ .strip()
|
||||
+)
|
||||
|
||||
CXXFLAGS = []
|
||||
if have_llvm and have_llvm != "none":
|
||||
@@ -68,6 +98,12 @@ LDFLAGS += [
|
||||
@@ -68,6 +80,12 @@ LDFLAGS += [
|
||||
"-lChplFrontendShared",
|
||||
]
|
||||
|
||||
+if chpl_install_lib_path is not None:
|
||||
+if chpl_install_lib_path != "None":
|
||||
+ LDFLAGS += [
|
||||
+ "-L{}".format(chpl_install_lib_path),
|
||||
+ "-Wl,-rpath,{}".format(chpl_install_lib_path),
|
||||
@ -52,3 +34,63 @@ index 30c2708724..3921143def 100644
|
||||
if str(chpl_variables.get("CHPL_SANITIZE")) == "address":
|
||||
if str(chpl_variables.get("CHPL_HOST_PLATFORM")) == "darwin":
|
||||
sys.exit(
|
||||
diff --git a/util/chplenv/chpl_home_utils.py b/util/chplenv/chpl_home_utils.py
|
||||
index 5f09ffed15..4b93849acd 100644
|
||||
--- a/util/chplenv/chpl_home_utils.py
|
||||
+++ b/util/chplenv/chpl_home_utils.py
|
||||
@@ -54,6 +54,46 @@ install_path_regex = re.compile(
|
||||
os.path.sep,
|
||||
os.path.sep))
|
||||
|
||||
+@memoize
|
||||
+def get_chpl_configured_install_lib_prefix():
|
||||
+ # gets the path to the lib directory for a prefix install, or None if not
|
||||
+ # a prefix install
|
||||
+ chpl_home = str(os.getenv("CHPL_HOME"))
|
||||
+ if os.path.exists(os.path.join(chpl_home, "configured-prefix")):
|
||||
+ with open(os.path.join(chpl_home, "CMakeLists.txt"), "r") as f:
|
||||
+ # read CMakeLists.txt to get the CHPL_MAJOR_VERSION and
|
||||
+ # CHPL_MINOR_VERSION and then construct the path from that
|
||||
+ chpl_major_version = None
|
||||
+ chpl_minor_version = None
|
||||
+ for line in f:
|
||||
+ if "set(CHPL_MAJOR_VERSION" in line:
|
||||
+ chpl_major_version = line.split()[1].strip(")")
|
||||
+ if "set(CHPL_MINOR_VERSION" in line:
|
||||
+ chpl_minor_version = line.split()[1].strip(")")
|
||||
+ if (
|
||||
+ chpl_major_version is not None
|
||||
+ and chpl_minor_version is not None
|
||||
+ ):
|
||||
+ break
|
||||
+ assert chpl_major_version is not None and chpl_minor_version is not None
|
||||
+ chpl_version_string = "{}.{}".format(
|
||||
+ chpl_major_version,
|
||||
+ chpl_minor_version,
|
||||
+ )
|
||||
+ chpl_prefix = None
|
||||
+ with open(os.path.join(chpl_home, "configured-prefix"), "r") as f:
|
||||
+ chpl_prefix = f.read().strip()
|
||||
+ # Problems with the configured-prefix file - maybe empty
|
||||
+ assert chpl_prefix != "" and chpl_prefix is not None
|
||||
+ return os.path.join(
|
||||
+ chpl_prefix,
|
||||
+ "lib",
|
||||
+ "chapel",
|
||||
+ chpl_version_string,
|
||||
+ "compiler",
|
||||
+ )
|
||||
+ return None
|
||||
+
|
||||
@memoize
|
||||
def get_chpl_version_from_install():
|
||||
if get_prefix_install_prefix():
|
||||
@@ -189,6 +229,8 @@ def _main():
|
||||
)
|
||||
parser.add_option('--using-module', action='store_const',
|
||||
dest='func', const=using_chapel_module)
|
||||
+ parser.add_option('--configured-install-lib-prefix', action='store_const',
|
||||
+ dest='func', const=get_chpl_configured_install_lib_prefix)
|
||||
(options, args) = parser.parse_args()
|
||||
|
||||
if options.func:
|
||||
|
@ -58,6 +58,7 @@ class Chapel(AutotoolsPackage, CudaPackage, ROCmPackage):
|
||||
|
||||
version("main", branch="main")
|
||||
|
||||
version("2.4.0", sha256="a51a472488290df12d1657db2e7118ab519743094f33650f910d92b54c56f315")
|
||||
version("2.3.0", sha256="0185970388aef1f1fae2a031edf060d5eac4eb6e6b1089e7e3b15a130edd8a31")
|
||||
version("2.2.0", sha256="bb16952a87127028031fd2b56781bea01ab4de7c3466f7b6a378c4d8895754b6")
|
||||
version("2.1.0", sha256="72593c037505dd76e8b5989358b7580a3fdb213051a406adb26a487d26c68c60")
|
||||
@ -71,9 +72,9 @@ class Chapel(AutotoolsPackage, CudaPackage, ROCmPackage):
|
||||
depends_on("cxx", type="build") # generated
|
||||
|
||||
patch("fix_spack_cc_wrapper_in_cray_prgenv.patch", when="@2.0.0:")
|
||||
patch("fix_chpl_shared_lib_path.patch", when="@2.1:2.2 +python-bindings")
|
||||
patch("fix_chpl_shared_lib_path_2.3.patch", when="@2.2.1: +python-bindings")
|
||||
patch("fix_chpl_line_length.patch")
|
||||
patch("fix_chpl_shared_lib_path.patch", when="@2.1.1:2.2 +python-bindings") # PR 26388
|
||||
patch("fix_chpl_shared_lib_path_2.3.patch", when="@2.2.1:2.3 +python-bindings") # PR 26388
|
||||
patch("fix_chpl_line_length.patch", when="@:2.3.0") # PRs 26357, 26381, 26491
|
||||
patch("fix_checkChplInstall.patch", when="@:2.3.0") # PR 26317
|
||||
patch("fix_llvm_include_path_2.3.patch", when="@=2.3.0 llvm=bundled") # PR 26402
|
||||
|
||||
@ -142,7 +143,7 @@ class Chapel(AutotoolsPackage, CudaPackage, ROCmPackage):
|
||||
"curl": "curl",
|
||||
"hdf5": "hdf5+hl~mpi",
|
||||
"libevent": "libevent",
|
||||
"protobuf": "py-protobuf",
|
||||
"protobuf": "protobuf",
|
||||
"ssl": "openssl",
|
||||
"yaml": "libyaml@0.1",
|
||||
"zmq": "libzmq",
|
||||
@ -608,12 +609,9 @@ def install(self, spec, prefix):
|
||||
# if working from a non-versioned release/branch (such as main)
|
||||
if not self.is_versioned_release():
|
||||
install("CMakeLists.txt", join_path(prefix.share, "chapel"))
|
||||
install_tree("doc", join_path(prefix.share, "chapel", self._output_version_short, "doc"))
|
||||
install_tree(
|
||||
"doc", join_path(self.prefix.share, "chapel", self._output_version_short, "doc")
|
||||
)
|
||||
install_tree(
|
||||
"examples",
|
||||
join_path(self.prefix.share, "chapel", self._output_version_short, "examples"),
|
||||
"examples", join_path(prefix.share, "chapel", self._output_version_short, "examples")
|
||||
)
|
||||
|
||||
def setup_chpl_platform(self, env):
|
||||
@ -839,7 +837,7 @@ def _output_version_long(self) -> str:
|
||||
@llnl.util.lang.memoized
|
||||
def _output_version_short(self) -> str:
|
||||
if not self.is_versioned_release():
|
||||
return self.get_chpl_version_from_cmakelists()[-2]
|
||||
return ".".join(self.get_chpl_version_from_cmakelists().split(".")[:-1])
|
||||
spec_vers_str = str(self.spec.version.up_to(2))
|
||||
return spec_vers_str
|
||||
|
||||
|
@ -46,7 +46,7 @@ class Datatransferkit(CMakePackage):
|
||||
depends_on("trilinos+openmp", when="+openmp")
|
||||
depends_on("trilinos+stratimikos+belos", when="@master")
|
||||
depends_on("trilinos@13:13.4.1", when="@3.1-rc2:3.1-rc3")
|
||||
depends_on("trilinos@14.2:", when="@3.1.0:")
|
||||
depends_on("trilinos@14.2:16.0", when="@3.1.0:")
|
||||
|
||||
def cmake_args(self):
|
||||
spec = self.spec
|
||||
|
@ -0,0 +1,9 @@
|
||||
diff --git a/meson_post_install.py b/meson_post_install.py
|
||||
index cfc03b22..1d007ad6 100755
|
||||
--- a/meson_post_install.py
|
||||
+++ b/meson_post_install.py
|
||||
@@ -103,4 +103,3 @@ def post_install_exe():
|
||||
|
||||
if __name__ == "__main__":
|
||||
post_install_relocation()
|
||||
- post_install_exe()
|
@ -42,6 +42,13 @@ class Dbus(AutotoolsPackage, MesonPackage):
|
||||
version("1.8.6", sha256="eded83ca007b719f32761e60fd8b9ffd0f5796a4caf455b01b5a5ef740ebd23f")
|
||||
version("1.8.4", sha256="3ef63dc8d0111042071ee7f7bafa0650c6ce2d7be957ef0b7ec269495a651ff8")
|
||||
version("1.8.2", sha256="5689f7411165adc953f37974e276a3028db94447c76e8dd92efe910c6d3bae08")
|
||||
# Skip function that tries to do something if you're root that doesn't work in a container.
|
||||
# Only tested on 1.15.10, but probably works for other versions as well.
|
||||
patch(
|
||||
"meson_post_install.patch",
|
||||
sha256="d121f842418af606f414ebfc523b51fdd23a2d231e73d66229a4b0ab3486edc4",
|
||||
when="@1.15.10",
|
||||
)
|
||||
|
||||
variant("xml_docs", default=False, description="Build XML documentation")
|
||||
variant("system-socket", default="default", description="Location for the DBus system socket")
|
||||
|
@ -19,6 +19,10 @@ class Detray(CMakePackage):
|
||||
|
||||
license("MPL-2.0", checked_by="stephenswat")
|
||||
|
||||
version("0.93.0", sha256="7d56771d213649de836905efbb21b5be59cc966b00417b0b1fa85bfe12ac92da")
|
||||
version("0.92.0", sha256="512669c1ea51936b0fe871fb5a33450b54161e811e48cc51445dc83fe3338c42")
|
||||
version("0.91.0", sha256="6aa822f8bdc7339286d2255079a00ecc3204c0e194c5cf9d0fc5b9262c3cfb39")
|
||||
version("0.90.0", sha256="f965429c33622a48c5a7b007086e22125ddd384860c4de3e010d72e05b5cca70")
|
||||
version("0.89.0", sha256="b893b7f5434c1c9951433876ef43d1db1b08d36749f062e261b4e6d48e77d5db")
|
||||
version("0.88.1", sha256="89134c86c6857cb3a821181e3bb0565ebb726dd8b1245678db1681483d792cf9")
|
||||
version("0.88.0", sha256="bda15501c9c96af961e24ce243982f62051c535b9fe458fb28336a19b54eb47d")
|
||||
|
@ -343,7 +343,7 @@ class Hip(CMakePackage):
|
||||
patch("0014-remove-compiler-rt-linkage-for-host.6.0.patch", when="@6.0")
|
||||
patch("0014-remove-compiler-rt-linkage-for-host.6.1.patch", when="@6.1")
|
||||
patch("0015-reverting-operator-mixup-fix-for-slate.patch", when="@5.6:6.0")
|
||||
patch("0018-reverting-hipMemoryType-with-memoryType.patch", when="@6.0:")
|
||||
patch("0018-reverting-hipMemoryType-with-memoryType.patch", when="@6.0:6.2")
|
||||
|
||||
# See https://github.com/ROCm/HIP/pull/3206
|
||||
patch(
|
||||
@ -499,9 +499,10 @@ def set_variables(self, env):
|
||||
# bin/.hipVersion file can still be parsed.
|
||||
# See also https://github.com/ROCm/HIP/issues/2223
|
||||
env.append_path(
|
||||
"HIPCC_COMPILE_FLAGS_APPEND",
|
||||
"--rocm-path={0}".format(paths["rocm-path"]),
|
||||
separator=" ",
|
||||
"HIPCC_COMPILE_FLAGS_APPEND", f"--rocm-path={paths['rocm-path']}", separator=" "
|
||||
)
|
||||
env.append_path(
|
||||
"HIPCC_LINK_FLAGS_APPEND", f"--rocm-path={paths['rocm-path']}", separator=" "
|
||||
)
|
||||
elif self.spec.satisfies("+cuda"):
|
||||
env.set("CUDA_PATH", self.spec["cuda"].prefix)
|
||||
@ -518,6 +519,9 @@ def set_variables(self, env):
|
||||
f"--gcc-toolchain={self.compiler.prefix}",
|
||||
separator=" ",
|
||||
)
|
||||
env.append_path(
|
||||
"HIPCC_LINK_FLAGS_APPEND", f"--gcc-toolchain={self.compiler.prefix}", separator=" "
|
||||
)
|
||||
# This is picked up by CMake when using HIP as a CMake language.
|
||||
env.append_path("HIPFLAGS", f"--gcc-toolchain={self.compiler.prefix}", separator=" ")
|
||||
|
||||
@ -563,6 +567,13 @@ def patch(self):
|
||||
"clr/hipamd/hip-config-amd.cmake",
|
||||
string=True,
|
||||
)
|
||||
if self.spec.satisfies("@6.3: +rocm"):
|
||||
filter_file(
|
||||
'"${ROCM_PATH}/llvm"',
|
||||
self.spec["llvm-amdgpu"].prefix,
|
||||
"clr/hipamd/hip-config-amd.cmake.in",
|
||||
string=True,
|
||||
)
|
||||
perl = self.spec["perl"].command
|
||||
|
||||
if self.spec.satisfies("@:5.5"):
|
||||
|
@ -19,6 +19,7 @@ class Hugo(GoPackage):
|
||||
|
||||
license("Apache-2.0")
|
||||
|
||||
version("0.145.0", sha256="f6cfcfa4575ff25a08e68b638367df60b28e28a7917471c5deec6396eae26ae2")
|
||||
version("0.140.2", sha256="45594ddf39d62d227cfd54c19fb9a09ab851cf537caee6138de0ddd4f1f6f117")
|
||||
version("0.135.0", sha256="a75c4c684d2125255f214d11b9834a5ec6eb64353f4de2c06952d2b3b7430f0e")
|
||||
version("0.127.0", sha256="549c7ebdf2ee6b3107ea10a9fbd9932a91bb3f30f7e8839245f6d8e318aca88c")
|
||||
@ -34,11 +35,12 @@ class Hugo(GoPackage):
|
||||
version("0.107.0", sha256="31d959a3c1633087d338147782d03bdef65323b67ff3efcec7b40241413e270a")
|
||||
version("0.106.0", sha256="9219434beb51466487b9f8518edcbc671027c1998e5a5820d76d517e1dfbd96a")
|
||||
|
||||
depends_on("go@1.11:", type="build", when="@0.48:")
|
||||
depends_on("go@1.18:", type="build", when="@0.106:")
|
||||
depends_on("go@1.20:", type="build", when="@0.123:")
|
||||
depends_on("go@1.21.8:", type="build", when="@0.131:")
|
||||
depends_on("go@1.23:", type="build", when="@0.144:")
|
||||
depends_on("go@1.22.6:", type="build", when="@0.133:")
|
||||
depends_on("go@1.21.8:", type="build", when="@0.131:")
|
||||
depends_on("go@1.20:", type="build", when="@0.123:")
|
||||
depends_on("go@1.18:", type="build", when="@0.106:")
|
||||
depends_on("go@1.11:", type="build", when="@0.48:")
|
||||
|
||||
variant("extended", default=False, description="Enable extended features")
|
||||
|
||||
|
@ -23,6 +23,12 @@ class IntelOneapiAdvisor(IntelOneApiLibraryPackageWithSdk):
|
||||
"https://software.intel.com/content/www/us/en/develop/tools/oneapi/components/advisor.html"
|
||||
)
|
||||
|
||||
version(
|
||||
"2025.1.0",
|
||||
url="https://registrationcenter-download.intel.com/akdlm/IRC_NAS/d9566edf-d6dd-4b85-9dda-efdf0ebb199a/intel-advisor-2025.1.0.507_offline.sh",
|
||||
sha256="7c1222acaef7661e1a444f20627022c0595c21db4678ce26a5922612ddbd868c",
|
||||
expand=False,
|
||||
)
|
||||
version(
|
||||
"2025.0.0",
|
||||
url="https://registrationcenter-download.intel.com/akdlm/IRC_NAS/fe95ae4a-3692-4e31-919d-3e7bdf5832f1/intel-advisor-2025.0.0.798_offline.sh",
|
||||
|
@ -26,6 +26,12 @@ class IntelOneapiCcl(IntelOneApiLibraryPackage):
|
||||
|
||||
depends_on("intel-oneapi-mpi")
|
||||
|
||||
version(
|
||||
"2021.15.0",
|
||||
url="https://registrationcenter-download.intel.com/akdlm/IRC_NAS/8f5d5e38-1626-41c1-9c20-44d966c43ae1/intel-oneccl-2021.15.0.401_offline.sh",
|
||||
sha256="f6eefe959bcddc7b64bdc52d212ea0a0495c7a18c000f8b3707949695211131a",
|
||||
expand=False,
|
||||
)
|
||||
version(
|
||||
"2021.14.0",
|
||||
url="https://registrationcenter-download.intel.com/akdlm/IRC_NAS/88a7a6db-816c-4cd5-993f-821729da5648/intel-oneccl-2021.14.0.506_offline.sh",
|
||||
|
@ -9,6 +9,17 @@
|
||||
from spack.package import *
|
||||
|
||||
versions = [
|
||||
{
|
||||
"version": "2025.1.0",
|
||||
"cpp": {
|
||||
"url": "https://registrationcenter-download.intel.com/akdlm/IRC_NAS/cd63be99-88b0-4981-bea1-2034fe17f5cf/intel-dpcpp-cpp-compiler-2025.1.0.573_offline.sh",
|
||||
"sha256": "53489afcc9534e30ad807e94b158abfccf6a7eb3658f59655122d92fbad8fa72",
|
||||
},
|
||||
"ftn": {
|
||||
"url": "https://registrationcenter-download.intel.com/akdlm/IRC_NAS/577ebc28-d0f6-492b-9a43-b04354ce99da/intel-fortran-compiler-2025.1.0.601_offline.sh",
|
||||
"sha256": "27016329dede8369679f22b4e9f67936837ce7972a1ef4f5c76ee87d7c963c81",
|
||||
},
|
||||
},
|
||||
{
|
||||
"version": "2025.0.4",
|
||||
"cpp": {
|
||||
|
@ -25,6 +25,12 @@ class IntelOneapiDal(IntelOneApiLibraryPackage):
|
||||
"https://software.intel.com/content/www/us/en/develop/tools/oneapi/components/onedal.html"
|
||||
)
|
||||
|
||||
version(
|
||||
"2025.4.0",
|
||||
url="https://registrationcenter-download.intel.com/akdlm/IRC_NAS/e4da59ef-aa3a-4223-b3a0-4728014113e6/intel-onedal-2025.4.0.655_offline.sh",
|
||||
sha256="844248e3d4e30ce9eae94bb7a6cc13ad91a419e5251d753eff07d899628b8173",
|
||||
expand=False,
|
||||
)
|
||||
version(
|
||||
"2025.0.1",
|
||||
url="https://registrationcenter-download.intel.com/akdlm/IRC_NAS/928ba1dd-c2bc-41f6-a35f-8de41ddf055a/intel-onedal-2025.0.1.19_offline.sh",
|
||||
|
@ -25,6 +25,12 @@ class IntelOneapiDnn(IntelOneApiLibraryPackage):
|
||||
"https://software.intel.com/content/www/us/en/develop/tools/oneapi/components/onednn.html"
|
||||
)
|
||||
|
||||
version(
|
||||
"2025.1.0",
|
||||
url="https://registrationcenter-download.intel.com/akdlm/IRC_NAS/9cf476b7-5b8b-4995-ac33-91a446bc0c6e/intel-onednn-2025.1.0.653_offline.sh",
|
||||
sha256="7dc6d730c01fa7a57485ba58144679f4b35605277c1ab3f0b385cf735f438a44",
|
||||
expand=False,
|
||||
)
|
||||
version(
|
||||
"2025.0.1",
|
||||
url="https://registrationcenter-download.intel.com/akdlm/IRC_NAS/6cfa324b-1591-4c0b-b8d2-97c5b3b272a7/intel-onednn-2025.0.1.12_offline.sh",
|
||||
|
@ -18,6 +18,12 @@ class IntelOneapiDpct(IntelOneApiPackage):
|
||||
|
||||
homepage = "https://www.intel.com/content/www/us/en/developer/tools/oneapi/dpc-compatibility-tool.html#gs.2p8km6"
|
||||
|
||||
version(
|
||||
"2025.1.0",
|
||||
url="https://registrationcenter-download.intel.com/akdlm/IRC_NAS/2c7f388d-d457-4d91-8ad9-72771f711ec2/intel-dpcpp-ct-2025.1.0.454_offline.sh",
|
||||
sha256="d3be6f6711499707052f965ffbad3df3d95de1e8fd8a64e1b1fc70e4e4886b66",
|
||||
expand=False,
|
||||
)
|
||||
version(
|
||||
"2025.0.1",
|
||||
url="https://registrationcenter-download.intel.com/akdlm/IRC_NAS/6d1e0867-72b4-4670-8efc-3586894ad15f/intel-dpcpp-ct-2025.0.1.19_offline.sh",
|
||||
|
@ -21,6 +21,12 @@ class IntelOneapiDpl(IntelOneApiLibraryPackage):
|
||||
|
||||
homepage = "https://github.com/oneapi-src/oneDPL"
|
||||
|
||||
version(
|
||||
"2022.8.0",
|
||||
url="https://registrationcenter-download.intel.com/akdlm/IRC_NAS/b8f3da7a-9df5-4c04-b831-c46e9b636c70/intel-onedpl-2022.8.0.340_offline.sh",
|
||||
sha256="0fd73d2fed182106069fe084daa74bb5369ba400a08b5cf61a932028dbaafdcf",
|
||||
expand=False,
|
||||
)
|
||||
version(
|
||||
"2022.7.1",
|
||||
url="https://registrationcenter-download.intel.com/akdlm/IRC_NAS/de3c613f-829c-4bdc-aa2b-6129eece3bd9/intel-onedpl-2022.7.1.15_offline.sh",
|
||||
|
@ -26,6 +26,12 @@ class IntelOneapiIpp(IntelOneApiLibraryPackage):
|
||||
"https://software.intel.com/content/www/us/en/develop/tools/oneapi/components/ipp.html"
|
||||
)
|
||||
|
||||
version(
|
||||
"2022.1.0",
|
||||
url="https://registrationcenter-download.intel.com/akdlm/IRC_NAS/a5a44f80-a3ef-45c3-a7be-d50157434d7c/intel-ipp-2022.1.0.649_offline.sh",
|
||||
sha256="32aa60f225466ee066032c645448504958c8ae681505061119e63e1fcdb4090f",
|
||||
expand=False,
|
||||
)
|
||||
version(
|
||||
"2022.0.0",
|
||||
url="https://registrationcenter-download.intel.com/akdlm/IRC_NAS/acf220fa-326d-4f6e-9b63-f2da47b6f680/intel-ipp-2022.0.0.809_offline.sh",
|
||||
|
@ -27,6 +27,12 @@ class IntelOneapiIppcp(IntelOneApiLibraryPackage):
|
||||
"https://software.intel.com/content/www/us/en/develop/tools/oneapi/components/ipp.html"
|
||||
)
|
||||
|
||||
version(
|
||||
"2025.1.0",
|
||||
url="https://registrationcenter-download.intel.com/akdlm/IRC_NAS/02532432-5930-4ac7-8e16-19739bf83fd2/intel-cryptography-primitives-library-2025.1.0.390_offline.sh",
|
||||
sha256="d16ff8cd46ef08e472816f9deb5a0a0dfaca11f4987a223608b818586412eac8",
|
||||
expand=False,
|
||||
)
|
||||
version(
|
||||
"2025.0.0",
|
||||
url="https://registrationcenter-download.intel.com/akdlm/IRC_NAS/4592da40-6f1c-4d4b-aa5b-0bb97ec66c92/intel-cryptography-primitives-library-2025.0.0.616_offline.sh",
|
||||
|
@ -24,6 +24,12 @@ class IntelOneapiMkl(IntelOneApiLibraryPackage):
|
||||
"https://software.intel.com/content/www/us/en/develop/tools/oneapi/components/onemkl.html"
|
||||
)
|
||||
|
||||
version(
|
||||
"2025.1.0",
|
||||
url="https://registrationcenter-download.intel.com/akdlm/IRC_NAS/dc93af13-2b3f-40c3-a41b-2bc05a707a80/intel-onemkl-2025.1.0.803_offline.sh",
|
||||
sha256="80a4b1338b48b3fbee55a8dc784f92e5e88d618f1b99d80f5f207a00c86a6638",
|
||||
expand=False,
|
||||
)
|
||||
version(
|
||||
"2025.0.1",
|
||||
url="https://registrationcenter-download.intel.com/akdlm/IRC_NAS/246ea40e-5aa7-42a4-81fa-0c029dc8650f/intel-onemkl-2025.0.1.16_offline.sh",
|
||||
|
@ -20,6 +20,12 @@ class IntelOneapiMpi(IntelOneApiLibraryPackage):
|
||||
|
||||
homepage = "https://software.intel.com/content/www/us/en/develop/tools/oneapi/components/mpi-library.html"
|
||||
|
||||
version(
|
||||
"2021.15.0",
|
||||
url="https://registrationcenter-download.intel.com/akdlm/IRC_NAS/6b6e395e-8f38-4da3-913d-90a2bcf41028/intel-mpi-2021.15.0.495_offline.sh",
|
||||
sha256="d4ad297174ce3837444468645e13cfe78f11d9bf2ad9ade2057b2668cccd9385",
|
||||
expand=False,
|
||||
)
|
||||
version(
|
||||
"2021.14.2",
|
||||
url="https://registrationcenter-download.intel.com/akdlm/IRC_NAS/201b2570-bc4f-41ee-a6c8-6f7a71a4b840/intel-mpi-2021.14.2.9_offline.sh",
|
||||
|
@ -21,6 +21,12 @@ class IntelOneapiTbb(IntelOneApiLibraryPackage):
|
||||
"https://software.intel.com/content/www/us/en/develop/tools/oneapi/components/onetbb.html"
|
||||
)
|
||||
|
||||
version(
|
||||
"2022.1.0",
|
||||
url="https://registrationcenter-download.intel.com/akdlm/IRC_NAS/5aeb45ec-41a8-46d7-b7b5-1f5ee4f55d61/intel-onetbb-2022.1.0.427_offline.sh",
|
||||
sha256="549584e5f9b83c655cfcad5ad86af7fc3f701458e5dd9cbca31dc099e4761434",
|
||||
expand=False,
|
||||
)
|
||||
version(
|
||||
"2022.0.0",
|
||||
url="https://registrationcenter-download.intel.com/akdlm/IRC_NAS/9d5f5bd1-6021-41f7-aa3e-36d44c4ac190/intel-onetbb-2022.0.0.403_offline.sh",
|
||||
|
@ -24,6 +24,12 @@ class IntelOneapiVtune(IntelOneApiLibraryPackageWithSdk):
|
||||
|
||||
homepage = "https://software.intel.com/content/www/us/en/develop/tools/oneapi/components/vtune-profiler.html"
|
||||
|
||||
version(
|
||||
"2025.1.0",
|
||||
url="https://registrationcenter-download.intel.com/akdlm/IRC_NAS/05b14253-a457-4472-bcf7-d98676542072/intel-vtune-2025.1.0.686_offline.sh",
|
||||
sha256="26407e12d501e544431535da5e9f3ea2ac56c9c53660b410c3096f2b9aae2a89",
|
||||
expand=False,
|
||||
)
|
||||
version(
|
||||
"2025.0.1",
|
||||
url="https://registrationcenter-download.intel.com/akdlm/IRC_NAS/1277cea4-34b7-4221-bdbc-4f47a9a5592d/intel-vtune-2025.0.1.16_offline.sh",
|
||||
|
@ -20,6 +20,7 @@ class Kentutils(MakefilePackage):
|
||||
|
||||
maintainers("teaguesterling")
|
||||
|
||||
version("478", sha256="dcbe4bbab811e8634f2993512540d8d1ee279da8c49e8048cdd42b17cbe5ba2b")
|
||||
version("465", sha256="eef17b1f3182d1d9dc99b5c73a6b0468d5d3bd80470f25d3f7706cc1372e04b0")
|
||||
version("464", sha256="24e20fe68e2a2894d802c87662f69a62f71b3c15fafb2e4d6c3c425c63638bb2")
|
||||
version("460", sha256="b955e56ee880074521ef1ab1371491f47e66dc6fdd93b05328386dd675a635fa")
|
||||
@ -32,9 +33,6 @@ class Kentutils(MakefilePackage):
|
||||
deprecated=True,
|
||||
)
|
||||
|
||||
depends_on("c", type="build") # generated
|
||||
depends_on("cxx", type="build") # generated
|
||||
|
||||
# The bundled version of kentlib has some custom changes that are used by parts of
|
||||
# kentlib. See https://github.com/spack/spack/pull/44501#issuecomment-2162789410
|
||||
# for some additional details. A built-in version SHOULD work for most things though.
|
||||
@ -45,6 +43,9 @@ class Kentutils(MakefilePackage):
|
||||
sticky=True,
|
||||
)
|
||||
|
||||
depends_on("c", type="build")
|
||||
depends_on("cxx", type="build")
|
||||
|
||||
with default_args(type=("build", "link", "run")):
|
||||
depends_on("libpng")
|
||||
depends_on("openssl")
|
||||
|
@ -22,12 +22,10 @@ class KokkosKernels(CMakePackage, CudaPackage):
|
||||
|
||||
version("develop", branch="develop")
|
||||
version("master", branch="master")
|
||||
|
||||
version("4.5.01", sha256="c111a6561f23a85af9850d1df1e9015f37a586f1da0be4b6fb1e98001d75e074")
|
||||
version("4.5.00", sha256="94726a64e349adf6cd276e9fdc1b2bf7ff81efec833e479a5d3024b83f165a59")
|
||||
version("4.4.01", sha256="4a32bc8330e0113856bdf181df94cc4f9902e3cebb5dc7cea5948f30df03bfa1")
|
||||
version("4.4.00", sha256="66d5c3f728a8c7689159c97006996164ea00fd39702476220e3dbf2a05c49e8f")
|
||||
|
||||
version(
|
||||
"4.3.01",
|
||||
sha256="749553a6ea715ba1e56fa0b13b42866bb9880dba7a94e343eadf40d08c68fab8",
|
||||
@ -129,8 +127,61 @@ class KokkosKernels(CMakePackage, CudaPackage):
|
||||
url="https://github.com/kokkos/kokkos-kernels/archive/3.0.00.tar.gz",
|
||||
)
|
||||
|
||||
depends_on("cxx", type="build") # generated
|
||||
variant("shared", default=True, description="Build shared libraries")
|
||||
variant(
|
||||
"execspace_cuda",
|
||||
default=False,
|
||||
description="Whether to pre instantiate kernels for the execution space Kokkos::Cuda",
|
||||
)
|
||||
variant(
|
||||
"execspace_openmp",
|
||||
default=False,
|
||||
description="Whether to pre instantiate kernels for the execution space "
|
||||
"Kokkos::Experimental::OpenMPTarget",
|
||||
)
|
||||
variant(
|
||||
"execspace_threads",
|
||||
default=False,
|
||||
description="Whether to pre instantiate kernels for the execution space Kokkos::Threads",
|
||||
)
|
||||
variant(
|
||||
"execspace_serial",
|
||||
default=False,
|
||||
description="Whether to pre instantiate kernels for the execution space Kokkos::Serial",
|
||||
)
|
||||
variant(
|
||||
"memspace_cudauvmspace",
|
||||
default=False,
|
||||
description="Whether to pre instantiate kernels for the memory space Kokkos::CudaUVMSpace",
|
||||
)
|
||||
variant(
|
||||
"memspace_cudaspace",
|
||||
default=False,
|
||||
description="Whether to pre instantiate kernels for the memory space Kokkos::CudaSpace",
|
||||
)
|
||||
variant("serial", default=False, description="Enable serial backend")
|
||||
variant("openmp", default=False, description="Enable OpenMP backend")
|
||||
variant("threads", default=False, description="Enable C++ threads backend")
|
||||
variant(
|
||||
"ordinals", default="int", values=["int", "int64_t"], multi=True, description="Ordinals"
|
||||
)
|
||||
variant(
|
||||
"offsets",
|
||||
default="int,size_t",
|
||||
values=["int", "size_t"],
|
||||
multi=True,
|
||||
description="Offsets",
|
||||
)
|
||||
variant("layouts", default="left", values=["left", "right"], description="Layouts")
|
||||
variant(
|
||||
"scalars",
|
||||
default="double",
|
||||
values=["float", "double", "complex_float", "complex_double"],
|
||||
multi=True,
|
||||
description="Scalars",
|
||||
)
|
||||
|
||||
depends_on("cxx", type="build")
|
||||
depends_on("kokkos")
|
||||
depends_on("kokkos@master", when="@master")
|
||||
depends_on("kokkos@develop", when="@develop")
|
||||
@ -158,74 +209,18 @@ class KokkosKernels(CMakePackage, CudaPackage):
|
||||
depends_on("kokkos@3.2.00", when="@3.2.00")
|
||||
depends_on("kokkos@3.1.00", when="@3.1.00")
|
||||
depends_on("kokkos@3.0.00", when="@3.0.00")
|
||||
depends_on("cmake@3.16:", type="build")
|
||||
|
||||
backends = {
|
||||
"serial": (False, "enable Serial backend (default)"),
|
||||
"cuda": (False, "enable Cuda backend"),
|
||||
"openmp": (False, "enable OpenMP backend"),
|
||||
"threads": (False, "enable C++ threads backend"),
|
||||
}
|
||||
|
||||
for backend in backends:
|
||||
deflt_bool, descr = backends[backend]
|
||||
variant(backend.lower(), default=deflt_bool, description=descr)
|
||||
depends_on("kokkos+%s" % backend.lower(), when="+%s" % backend.lower())
|
||||
|
||||
space_etis = {
|
||||
"execspace_cuda": (
|
||||
"auto",
|
||||
"Whether to pre instantiate kernels for the execution space Kokkos::Cuda",
|
||||
"cuda",
|
||||
),
|
||||
"execspace_openmp": (
|
||||
"auto",
|
||||
"Whether to pre instantiate kernels for the execution space "
|
||||
"Kokkos::Experimental::OpenMPTarget",
|
||||
"openmp",
|
||||
),
|
||||
"execspace_threads": (
|
||||
"auto",
|
||||
"Whether to build kernels for the execution space Kokkos::Threads",
|
||||
"threads",
|
||||
),
|
||||
"execspace_serial": (
|
||||
"auto",
|
||||
"Whether to build kernels for the execution space Kokkos::Serial",
|
||||
"serial",
|
||||
),
|
||||
"memspace_cudauvmspace": (
|
||||
"auto",
|
||||
"Whether to pre instantiate kernels for the memory space Kokkos::CudaUVMSpace",
|
||||
"cuda",
|
||||
),
|
||||
"memspace_cudaspace": (
|
||||
"auto",
|
||||
"Whether to pre instantiate kernels for the memory space Kokkos::CudaSpace",
|
||||
"cuda",
|
||||
),
|
||||
}
|
||||
for eti in space_etis:
|
||||
deflt, descr, backend_required = space_etis[eti]
|
||||
variant(eti, default=deflt, description=descr)
|
||||
depends_on("kokkos+%s" % backend_required, when="+%s" % eti)
|
||||
|
||||
# kokkos-kernels requires KOKKOS_LAMBDA to be available since 4.0.00
|
||||
depends_on("kokkos+cuda", when="+execspace_cuda")
|
||||
depends_on("kokkos+openmp", when="+execspace_openmp")
|
||||
depends_on("kokkos+threads", when="+execspace_threads")
|
||||
depends_on("kokkos+serial", when="+execspace_serial")
|
||||
depends_on("kokkos+cuda", when="+memspace_cudauvmspace")
|
||||
depends_on("kokkos+cuda", when="+memspace_cudaspace")
|
||||
depends_on("kokkos+serial", when="+serial")
|
||||
depends_on("kokkos+cuda", when="+cuda")
|
||||
depends_on("kokkos+openmp", when="+openmp")
|
||||
depends_on("kokkos+threads", when="+threads")
|
||||
depends_on("kokkos+cuda_lambda", when="@4.0.00:+cuda")
|
||||
|
||||
numeric_etis = {
|
||||
"ordinals": (
|
||||
"int",
|
||||
"ORDINAL_", # default, cmake name
|
||||
["int", "int64_t"],
|
||||
), # allowed values
|
||||
"offsets": ("int,size_t", "OFFSET_", ["int", "size_t"]),
|
||||
"layouts": ("left", "LAYOUT", ["left", "right"]),
|
||||
"scalars": ("double", "", ["float", "double", "complex_float", "complex_double"]),
|
||||
}
|
||||
for eti in numeric_etis:
|
||||
deflt, cmake_name, vals = numeric_etis[eti]
|
||||
variant(eti, default=deflt, description=eti, values=vals, multi=True)
|
||||
depends_on("cmake@3.16:", type="build")
|
||||
|
||||
tpls = {
|
||||
# variant name #deflt #spack name #root var name #supporting versions #docstring
|
||||
@ -246,9 +241,7 @@ class KokkosKernels(CMakePackage, CudaPackage):
|
||||
for tpl in tpls:
|
||||
deflt_bool, spackname, rootname, condition, descr = tpls[tpl]
|
||||
variant(tpl, default=deflt_bool, when=f"{condition}", description=descr)
|
||||
depends_on(spackname, when="+%s" % tpl)
|
||||
|
||||
variant("shared", default=True, description="Build shared libraries")
|
||||
depends_on(spackname, when=f"+{tpl}")
|
||||
|
||||
patch("pr_2296_430.patch", when="@4.3.00:4.4.00")
|
||||
patch("pr_2296_400.patch", when="@4.0.00:4.2.01")
|
||||
@ -259,64 +252,49 @@ class KokkosKernels(CMakePackage, CudaPackage):
|
||||
|
||||
def cmake_args(self):
|
||||
spec = self.spec
|
||||
options = []
|
||||
options = [
|
||||
self.define_from_variant("KokkosKernels_INST_EXECSPACE_CUDA", "execspace_cuda"),
|
||||
self.define_from_variant("KokkosKernels_INST_EXECSPACE_OPENMP", "execspace_openmp"),
|
||||
self.define_from_variant("KokkosKernels_INST_EXECSPACE_THREADS", "execspace_threads"),
|
||||
self.define_from_variant("KokkosKernels_INST_EXECSPACE_SERIAL", "execspace_serial"),
|
||||
self.define_from_variant("KokkosKernels_INST_EXECSPACE_SERIAL", "execspace_serial"),
|
||||
self.define_from_variant(
|
||||
"KokkosKernels_INST_MEMSPACE_CUDAUVMSPACE", "memspace_cudauvmspace"
|
||||
),
|
||||
self.define_from_variant(
|
||||
"KokkosKernels_INST_MEMSPACE_CUDASPACE", "memspace_cudaspace"
|
||||
),
|
||||
self.define_from_variant("BUILD_SHARED_LIBS", "shared"),
|
||||
]
|
||||
|
||||
isdiy = spec.satisfies("+diy")
|
||||
if isdiy:
|
||||
options.append("-DSpack_WORKAROUND=On")
|
||||
if spec.satisfies("+diy"):
|
||||
options.append(self.define("Spack_WORKAROUND", True))
|
||||
|
||||
options.append("-DKokkos_ROOT=%s" % spec["kokkos"].prefix)
|
||||
options.append(self.define("Kokkos_ROOT", spec["kokkos"].prefix))
|
||||
if spec.satisfies("^kokkos+rocm"):
|
||||
options.append("-DCMAKE_CXX_COMPILER=%s" % spec["hip"].hipcc)
|
||||
options.append(self.define("CMAKE_CXX_COMPILER", spec["hip"].hipcc))
|
||||
else:
|
||||
# Compiler weirdness due to nvcc_wrapper
|
||||
options.append("-DCMAKE_CXX_COMPILER=%s" % self["kokkos"].kokkos_cxx)
|
||||
options.append(self.define("CMAKE_CXX_COMPILER", self["kokkos"].kokkos_cxx))
|
||||
|
||||
if self.run_tests:
|
||||
options.append("-DKokkosKernels_ENABLE_TESTS=ON")
|
||||
options.append(self.define("KokkosKernels_ENABLE_TESTS", True))
|
||||
|
||||
for tpl in self.tpls:
|
||||
on_flag = "+%s" % tpl
|
||||
off_flag = "~%s" % tpl
|
||||
dflt, spackname, rootname, condition, descr = self.tpls[tpl]
|
||||
if on_flag in self.spec:
|
||||
options.append("-DKokkosKernels_ENABLE_TPL_%s=ON" % tpl.upper())
|
||||
if spec.satisfies(f"+{tpl}"):
|
||||
options.append(self.define(f"KokkosKernels_ENABLE_TPL_{tpl.upper()}", True))
|
||||
if rootname:
|
||||
options.append("-D%s_ROOT=%s" % (rootname, spec[spackname].prefix))
|
||||
options.append(self.define(f"{rootname}_ROOT", spec[spackname].prefix))
|
||||
else:
|
||||
pass # this should get picked up automatically, we hope
|
||||
elif off_flag in self.spec:
|
||||
options.append("-DKokkosKernels_ENABLE_TPL_%s=OFF" % tpl.upper())
|
||||
pass
|
||||
|
||||
for eti in self.numeric_etis:
|
||||
deflt, cmake_name, vals = self.numeric_etis[eti]
|
||||
for val in vals:
|
||||
keyval = "%s=%s" % (eti, val)
|
||||
cmake_option = "KokkosKernels_INST_%s%s" % (cmake_name.upper(), val.upper())
|
||||
if keyval in spec:
|
||||
options.append("-D%s=ON" % cmake_option)
|
||||
else:
|
||||
options.append("-D%s=OFF" % cmake_option)
|
||||
|
||||
for eti in self.space_etis:
|
||||
deflt, descr, _ = self.space_etis[eti]
|
||||
if deflt == "auto":
|
||||
value = spec.variants[eti].value
|
||||
# spack does these as strings, not reg booleans
|
||||
if str(value) == "True":
|
||||
options.append("-DKokkosKernels_INST_%s=ON" % eti.upper())
|
||||
elif str(value) == "False":
|
||||
options.append("-DKokkosKernels_INST_%s=OFF" % eti.upper())
|
||||
else:
|
||||
pass # don't pass anything, let CMake decide
|
||||
else: # simple option
|
||||
on_flag = "+%s" % eti
|
||||
off_flag = "~%s" % eti
|
||||
if on_flag in self.spec:
|
||||
options.append("-DKokkosKernels_INST_%s=ON" % eti.upper())
|
||||
elif off_flag in self.spec:
|
||||
options.append("-DKokkosKernels_INST_%s=OFF" % eti.upper())
|
||||
|
||||
options.append(self.define_from_variant("BUILD_SHARED_LIBS", "shared"))
|
||||
for val in spec.variants["ordinals"].value:
|
||||
options.append(self.define(f"KokkosKernels_INST_ORDINAL_{val.upper()}", True))
|
||||
for val in spec.variants["offsets"].value:
|
||||
options.append(self.define(f"KokkosKernels_INST_OFFSET_{val.upper()}", True))
|
||||
for val in spec.variants["scalars"].value:
|
||||
options.append(self.define(f"KokkosKernels_INST_{val.upper()}", True))
|
||||
layout_value = spec.variants["layouts"].value
|
||||
options.append(self.define(f"KokkosKernels_INST_LAYOUT{layout_value.upper()}", True))
|
||||
|
||||
return options
|
||||
|
@ -10,23 +10,30 @@ class Prometheus(MakefilePackage):
|
||||
systems and service monitoring system."""
|
||||
|
||||
homepage = "https://prometheus.io/"
|
||||
url = "https://github.com/prometheus/prometheus/archive/v2.19.2.tar.gz"
|
||||
url = "https://github.com/prometheus/prometheus/archive/refs/tags/v2.55.1.tar.gz"
|
||||
|
||||
license("Apache-2.0")
|
||||
|
||||
version("2.55.1", sha256="f48251f5c89eea6d3b43814499d558bacc4829265419ee69be49c5af98f79573")
|
||||
version("2.19.2", sha256="d4e84cae2fed6761bb8a80fcc69b6e0e9f274d19dffc0f38fb5845f11da1bbc3")
|
||||
version("2.19.1", sha256="b72b9b6bdbae246dcc29ef354d429425eb3c0a6e1596fc8b29b502578a4ce045")
|
||||
version("2.18.2", sha256="a26c106c97d81506e3a20699145c11ea2cce936427a0e96eb2fd0dc7cd1945ba")
|
||||
version("2.17.1", sha256="d0b53411ea0295c608634ca7ef1d43fa0f5559e7ad50705bf4d64d052e33ddaf")
|
||||
version("2.17.0", sha256="b5e508f1c747aaf50dd90a48e5e2a3117fec2e9702d0b1c7f97408b87a073009")
|
||||
version("2.19.2", sha256="f77017846259d01f281ded0d70af834e06ee489d325c9c84de0e68c7d505b42b")
|
||||
version("2.19.1", sha256="c5bdfb3653b82c1d26e5e14feadf644692289fae42a48e2567629aa2c4a02fc4")
|
||||
version("2.18.2", sha256="01b4d55aae0a43c9eecb5a660648e45e74ea20f9d4558ff6533058f2050aabd1")
|
||||
version("2.17.1", sha256="443590c1896cf5096b75d4a30e45381c84a5d17712dc714109ea8cf418b275ac")
|
||||
version("2.17.0", sha256="c94b13677003838d795c082b95878903d43cd21ab148996d39f1900f00370c97")
|
||||
|
||||
depends_on("c", type="build") # generated
|
||||
|
||||
depends_on("go", type="build")
|
||||
depends_on("go@1.17:", type="build", when="@2.37.0:")
|
||||
depends_on("go@1.16:", type="build", when="@2.33.0:")
|
||||
depends_on("go@1.14:", type="build", when="@2.23.0:")
|
||||
depends_on("go@1.13:", type="build", when="@2.17.0:")
|
||||
|
||||
depends_on("node-js@16:", type="build", when="@2.31.0:")
|
||||
depends_on("node-js@11.10.1:", type="build")
|
||||
depends_on("yarn", type="build")
|
||||
depends_on("npm", type="build", when="@2.55.1:")
|
||||
|
||||
depends_on("npm@7:", type="build", when="@2.31.0:")
|
||||
depends_on("npm", type="build", when="@2.30.0:")
|
||||
depends_on("yarn@1", type="build", when="@:2.29.2")
|
||||
|
||||
def build(self, spec, prefix):
|
||||
make("build", parallel=False)
|
||||
|
@ -33,7 +33,7 @@ class PyIpympl(PythonPackage):
|
||||
depends_on("py-jupyter-packaging@0.7")
|
||||
depends_on("py-jupyterlab@3")
|
||||
depends_on("py-setuptools@40.8:")
|
||||
depends_on("yarn")
|
||||
depends_on("yarn@1")
|
||||
|
||||
with default_args(type=("build", "run")):
|
||||
depends_on("py-ipython@:8")
|
||||
|
@ -18,11 +18,27 @@ class PyPymoo(PythonPackage):
|
||||
|
||||
license("Apache-2.0")
|
||||
|
||||
version("0.6.1.3", sha256="ab440986cbaede547125ca9d1545781fdee94b719488de44119a86b8e9af526e")
|
||||
version("0.5.0", sha256="2fbca1716f6b45e430197ce4ce2210070fd3b6b9ec6b17bb25d98486115272c2")
|
||||
version("0.4.2", sha256="6ec382a7d29c8775088eec7f245a30fd384b42c40f230018dea0e3bcd9aabdf1")
|
||||
|
||||
depends_on("cxx", type="build") # generated
|
||||
|
||||
depends_on("python@3.4:", type=("build", "run"))
|
||||
depends_on("py-autograd", type=("build", "run"))
|
||||
depends_on("py-setuptools", type="build")
|
||||
with default_args(type="build"):
|
||||
depends_on("py-setuptools")
|
||||
depends_on("py-cython@0.29:", when="@0.6.1.3:")
|
||||
|
||||
with default_args(type=("build", "run")):
|
||||
depends_on("python@3.4:")
|
||||
depends_on("py-autograd")
|
||||
|
||||
with when("@0.6.1.3:"):
|
||||
depends_on("python@3.9:")
|
||||
depends_on("py-numpy@1.15:")
|
||||
depends_on("py-scipy@1.1:")
|
||||
depends_on("py-matplotlib@3:")
|
||||
depends_on("py-autograd@1.4:")
|
||||
depends_on("py-cma@3.2.2:")
|
||||
depends_on("py-alive-progress")
|
||||
depends_on("py-dill")
|
||||
depends_on("py-deprecated")
|
||||
|
56
var/spack/repos/builtin/packages/rocprofiler-sdk/package.py
Normal file
56
var/spack/repos/builtin/packages/rocprofiler-sdk/package.py
Normal file
@ -0,0 +1,56 @@
|
||||
# Copyright Spack Project Developers. See COPYRIGHT file for details.
|
||||
#
|
||||
# SPDX-License-Identifier: (Apache-2.0 OR MIT)
|
||||
|
||||
|
||||
from spack.package import *
|
||||
|
||||
|
||||
class RocprofilerSdk(CMakePackage):
|
||||
"""ROCProfiler-SDK is AMD’s new and improved tooling infrastructure, providing a
|
||||
hardware-specific low-level performance analysis interface for profiling and
|
||||
tracing GPU compute applications."""
|
||||
|
||||
homepage = "https://github.com/ROCm/rocprofiler-sdk"
|
||||
git = "https://github.com/ROCm/rocprofiler-sdk.git"
|
||||
url = "https://github.com/ROCm/rocprofiler-sdk/archive/refs/tags/rocm-6.3.2.tar.gz"
|
||||
|
||||
tags = ["rocm"]
|
||||
|
||||
maintainers("afzpatel", "srekolam", "renjithravindrankannath")
|
||||
|
||||
license("MIT")
|
||||
|
||||
version(
|
||||
"6.3.2",
|
||||
tag="rocm-6.3.2",
|
||||
commit="f5d3fd3d3460c74cb8935f0021e31f0bff5cb305",
|
||||
submodules=True,
|
||||
)
|
||||
version(
|
||||
"6.3.1",
|
||||
tag="rocm-6.3.1",
|
||||
commit="38ac1c8f7d62cbb702f53c7085be16bf1943369a",
|
||||
submodules=True,
|
||||
)
|
||||
version(
|
||||
"6.3.0",
|
||||
tag="rocm-6.3.0",
|
||||
commit="38ac1c8f7d62cbb702f53c7085be16bf1943369a",
|
||||
submodules=True,
|
||||
)
|
||||
version(
|
||||
"6.2.4",
|
||||
tag="rocm-6.2.4",
|
||||
commit="03fe8df3622a97161699439dfe933ef8e9e7db8a",
|
||||
submodules=True,
|
||||
)
|
||||
depends_on("c", type="build")
|
||||
depends_on("cxx", type="build")
|
||||
|
||||
for ver in ["6.2.4", "6.3.0", "6.3.1", "6.3.2"]:
|
||||
depends_on(f"hip@{ver}", when=f"@{ver}")
|
||||
depends_on(f"rocm-cmake@{ver}", when=f"@{ver}")
|
||||
depends_on(f"aqlprofile@{ver}", when=f"@{ver}")
|
||||
depends_on(f"rccl@{ver}", when=f"@{ver}")
|
||||
depends_on(f"rocprofiler-register@{ver}", when=f"@{ver}")
|
@ -29,7 +29,7 @@ class Rstudio(CMakePackage):
|
||||
depends_on("patchelf@0.9:")
|
||||
depends_on("yaml-cpp@:0.6.3") # find_package fails with newest version
|
||||
depends_on("node-js")
|
||||
depends_on("yarn")
|
||||
depends_on("yarn@1")
|
||||
depends_on("pandoc@2.11.4:")
|
||||
depends_on("icu4c")
|
||||
depends_on("soci~static+boost+postgresql+sqlite")
|
||||
|
@ -84,6 +84,11 @@ def url_for_version(self, version):
|
||||
|
||||
patch("gcc7.patch", when="@1.4:3")
|
||||
patch("gcc10.patch", when="@3.1:6.0")
|
||||
patch(
|
||||
"https://gitlab.com/score-p/scorep/-/commit/093ff84f0e155ac1db99bbaa312e028f89affddb.diff",
|
||||
when="@7:8.4 +gcc-plugin",
|
||||
sha256="d20b3046ba6a89ad9c106bcf372bceb1bd9ab780d4c7dd9e7373f0099b92d933",
|
||||
)
|
||||
|
||||
variant("mpi", default=True, description="Enable MPI support")
|
||||
variant("papi", default=True, description="Enable PAPI")
|
||||
@ -92,6 +97,7 @@ def url_for_version(self, version):
|
||||
variant("unwind", default=False, description="Enable sampling via libunwind and lib wrapping")
|
||||
variant("cuda", default=False, description="Enable CUDA support")
|
||||
variant("hip", default=False, description="Enable ROCm/HIP support", when="@8.0:")
|
||||
variant("gcc-plugin", default=True, description="Enable gcc-plugin", when="%gcc")
|
||||
# Dependencies for SCORE-P are quite tight. See the homepage for more
|
||||
# information. Starting with scorep 4.0 / cube 4.4, Score-P only depends on
|
||||
# two components of cube -- cubew and cubelib.
|
||||
@ -230,6 +236,13 @@ def configure_args(self):
|
||||
if spec.satisfies("^binutils"):
|
||||
config_args.append("--with-libbfd=%s" % spec["binutils"].prefix)
|
||||
|
||||
# when you build with gcc, you usually want to use the gcc-plugin!
|
||||
# see, e.g., GNU Compiler Plug-In in https://scorepci.pages.jsc.fz-juelich.de/scorep-pipelines/docs/scorep-5.0/html/installationfile.html
|
||||
if "+gcc-plugin" in spec:
|
||||
config_args.append("--enable-gcc-plugin")
|
||||
else:
|
||||
config_args.append("--disable-gcc-plugin")
|
||||
|
||||
config_args.extend(
|
||||
[
|
||||
"CFLAGS={0}".format(self.compiler.cc_pic_flag),
|
||||
|
@ -0,0 +1,116 @@
|
||||
commit a4dbc4ae575dc9bf6f6cac42d011a1ac0d496aa8
|
||||
Author: Eric Berquist <727571+berquist@users.noreply.github.com>
|
||||
Date: 2024-07-29 09:25:13 AM (Mon, 29 Jul 2024 09:25:13 -0600)
|
||||
|
||||
ncurses detection fixes (#1110)
|
||||
|
||||
* may have ncursesw6-config but not ncurses6-config
|
||||
|
||||
* go back to hardcoded lib checks
|
||||
|
||||
* fix using --with-ncurses
|
||||
|
||||
* avoid bad default usage of AC_CHECK_LIB
|
||||
|
||||
* add curses variables to sst.conf
|
||||
|
||||
* unset CURSES_CPPFLAGS and CURSES_LIBS if they're actually wrong
|
||||
|
||||
diff --git config/sst_check_curses.m4 config/sst_check_curses.m4
|
||||
index 47699427..1dbe0dcf 100644
|
||||
--- config/sst_check_curses.m4
|
||||
+++ config/sst_check_curses.m4
|
||||
@@ -1,25 +1,34 @@
|
||||
+dnl -*- mode: autoconf; -*-
|
||||
+
|
||||
AC_DEFUN([SST_CHECK_CURSES],
|
||||
[
|
||||
sst_check_curses_happy="yes"
|
||||
|
||||
- AC_ARG_WITH([curses],
|
||||
+ AC_ARG_WITH([ncurses],
|
||||
[AS_HELP_STRING([--with-ncurses@<:@=DIR or EXEC@:>@],
|
||||
[Use ncurses library found in DIR or associated with the ncursesN-config utility specified by EXEC])])
|
||||
|
||||
- AS_IF([test "$with_curses" = "no"], [sst_check_curses_happy="no"])
|
||||
+ AS_IF([test "$with_ncurses" = "no"], [sst_check_curses_happy="no"])
|
||||
|
||||
NCURSES_CONFIG_EXE="no"
|
||||
|
||||
dnl check if user provided a specific ncursesN-config
|
||||
- AS_IF([test ! -d "$with_curses"],
|
||||
- [AS_IF([test -x "$with_curses"],
|
||||
- [NCURSES_CONFIG_EXE=$with_curses])])
|
||||
+ AS_IF([test ! -d "$with_ncurses"],
|
||||
+ [AS_IF([test -x "$with_ncurses"],
|
||||
+ [NCURSES_CONFIG_EXE=$with_ncurses])])
|
||||
|
||||
dnl test ncursesN-config
|
||||
AS_IF([test $NCURSES_CONFIG_EXE = "no"],
|
||||
- [AS_IF([test -n "$with_curses"],
|
||||
- [AC_PATH_PROGS([NCURSES_CONFIG_EXE], ["ncurses6-config" "ncurses5.4-config" "ncurses5-config"], ["no"], ["$with_curses/bin"])],
|
||||
- [AC_PATH_PROGS([NCURSES_CONFIG_EXE], ["ncurses6-config" "ncurses5.4-config" "ncurses5-config"], ["no"])])])
|
||||
+ [AS_IF([test -n "$with_ncurses"],
|
||||
+ [AC_PATH_PROGS([NCURSES_CONFIG_EXE],
|
||||
+ ["ncurses6-config" "ncursesw6-config" "ncurses5.4-config" "ncurses5-config"],
|
||||
+ ["no"], ["$with_ncurses/bin"])],
|
||||
+ [AC_PATH_PROGS([NCURSES_CONFIG_EXE],
|
||||
+ ["ncurses6-config" "ncursesw6-config" "ncurses5.4-config" "ncurses5-config"],
|
||||
+ ["no"])])])
|
||||
+
|
||||
+ AC_MSG_CHECKING([ncurses config binary exists])
|
||||
+ AC_MSG_RESULT([$NCURSES_CONFIG_EXE])
|
||||
|
||||
dnl don't continue if ncursesN-config can't be found rather than look for the
|
||||
dnl specific libraries
|
||||
@@ -44,10 +53,27 @@ AC_DEFUN([SST_CHECK_CURSES],
|
||||
CPPFLAGS="$CPPFLAGS $CURSES_CPPFLAGS"
|
||||
LDFLAGS="$LDFLAGS $CURSES_LIBS"
|
||||
|
||||
- dnl Check that the specific header exists and that the config-provided lib locations are correct.
|
||||
+ dnl Check that the specific header exists and that plausible lib
|
||||
+ dnl locations are correct.
|
||||
AC_LANG_PUSH([C++])
|
||||
AC_CHECK_HEADER([ncurses.h], [], [sst_check_curses_happy="no"])
|
||||
- AC_SEARCH_LIBS([initscr], [$CURSES_LIBS], [], [sst_check_curses_happy="no"])
|
||||
+ dnl We cannot check that the config-provided lib names are
|
||||
+ dnl correct, since those are not available at macro expansion
|
||||
+ dnl time. This is only necessary for platforms where libs are
|
||||
+ dnl reported but are broken or don't actually exist.
|
||||
+ dnl
|
||||
+ dnl If nothing is specified for `action-if-found`, the library
|
||||
+ dnl will be added to LIBS, which is not correct for our use case.
|
||||
+ curses_check_lib_tmp=""
|
||||
+ AS_IF([test "$sst_check_curses_happy" != "no"],
|
||||
+ [AC_CHECK_LIB([ncursesw], [initscr], [curses_check_lib_tmp="ncursesw is valid"],
|
||||
+ [AC_CHECK_LIB([ncurses], [initscr], [curses_check_lib_tmp="ncurses is valid"],
|
||||
+ [AC_CHECK_LIB([curses], [initscr], [curses_check_lib_tmp="curses is valid"],
|
||||
+ [sst_check_curses_happy="no"
|
||||
+ CURSES_CPPFLAGS=""
|
||||
+ CURSES_LIBS=""
|
||||
+ ])])])
|
||||
+ ])
|
||||
AC_LANG_POP([C++])
|
||||
|
||||
CPPFLAGS="$CPPFLAGS_saved"
|
||||
@@ -63,6 +89,6 @@ AC_DEFUN([SST_CHECK_CURSES],
|
||||
AC_MSG_CHECKING([for curses library])
|
||||
AC_MSG_RESULT([$sst_check_curses_happy])
|
||||
|
||||
- AS_IF([test "$sst_check_curses_happy" = "no" -a ! -z "$with_curses" -a "$with_curses" != "no"], [$3])
|
||||
+ AS_IF([test "$sst_check_curses_happy" = "no" -a ! -z "$with_ncurses" -a "$with_ncurses" != "no"], [$3])
|
||||
AS_IF([test "$sst_check_curses_happy" = "yes"], [$1], [$2])
|
||||
])
|
||||
diff --git src/sst/sst.conf src/sst/sst.conf
|
||||
index 13adb002..c30afb0b 100644
|
||||
--- src/sst/sst.conf
|
||||
+++ src/sst/sst.conf
|
||||
@@ -30,6 +30,8 @@ PYTHON_VERSION3=@PYTHON_VERSION3@
|
||||
LIBZ_CPPFLAGS=@LIBZ_CPPFLAGS@
|
||||
LIBZ_LDFLAGS=@LIBZ_LDFLAGS@
|
||||
LIBZ_LIBS=@LIBZ_LIBS@
|
||||
+CURSES_CPPFLAGS=@CURSES_CPPFLAGS@
|
||||
+CURSES_LIBS=@CURSES_LIBS@
|
||||
ELEMENT_CXXFLAGS=@SST_EXPORT_CXXFLAGS@ @SST_ELEMENT_FPIC_FLAGS@ -DHAVE_CONFIG_H -I@prefix@/include
|
||||
ELEMENT_LDFLAGS=-shared -fno-common -Wl,-undefined -Wl,dynamic_lookup
|
||||
pkgconfig=@prefix@/lib/pkgconfig/SST-@PACKAGE_VERSION@.pc
|
@ -61,10 +61,16 @@ class SstCore(AutotoolsPackage):
|
||||
variant(
|
||||
"curses",
|
||||
default=True,
|
||||
when="@develop,master",
|
||||
when="@develop,master,14.0.0:",
|
||||
description="Build support for interactive sst-info",
|
||||
)
|
||||
|
||||
variant("mempools", default=True, description="Use memory pools")
|
||||
variant(
|
||||
"debug",
|
||||
default=False,
|
||||
description="Enable additional debug output from core and components",
|
||||
)
|
||||
variant("trackevents", default=False, description="Enable event and activity tracking")
|
||||
variant(
|
||||
"trackperf",
|
||||
@ -77,37 +83,44 @@ class SstCore(AutotoolsPackage):
|
||||
depends_on("python@:3.11", type=("build", "run", "link"))
|
||||
depends_on("mpi", when="+pdes_mpi")
|
||||
depends_on("zoltan", when="+zoltan")
|
||||
depends_on("hdf5", when="+hdf5")
|
||||
depends_on("hdf5 +cxx", when="+hdf5")
|
||||
depends_on("zlib-api", when="+zlib")
|
||||
depends_on("gettext")
|
||||
depends_on("ncurses", when="+curses")
|
||||
depends_on("ncurses", when="+curses", type=("build", "link"))
|
||||
|
||||
for version_name in ("master", "develop"):
|
||||
depends_on("autoconf@1.68:", type="build", when="@{}".format(version_name))
|
||||
depends_on("automake@1.11.1:", type="build", when="@{}".format(version_name))
|
||||
depends_on("libtool@1.2.4:", type="build", when="@{}".format(version_name))
|
||||
depends_on("m4", type="build", when="@{}".format(version_name))
|
||||
with when("@develop,master,14.0.0"):
|
||||
depends_on("autoconf@1.68:", type="build")
|
||||
depends_on("automake@1.11.1:", type="build")
|
||||
depends_on("libtool@1.2.4:", type="build")
|
||||
depends_on("m4", type="build")
|
||||
|
||||
# Backport of https://github.com/sstsimulator/sst-core/pull/1110
|
||||
with when("@14.0.0"):
|
||||
patch("1110-ncurses_detection.patch", level=0)
|
||||
|
||||
# force out-of-source builds
|
||||
build_directory = "spack-build"
|
||||
|
||||
@when("@develop,master")
|
||||
# 14.0.0 could theoretically be avoided here, but introducing the patch
|
||||
# (even with autogen changes) causes file created/modified time problems
|
||||
# that cannot be easily circumvented with `touch`.
|
||||
@when("@develop,master,14.0.0")
|
||||
def autoreconf(self, spec, prefix):
|
||||
bash = which("bash")
|
||||
bash("autogen.sh")
|
||||
|
||||
def configure_args(self):
|
||||
args = []
|
||||
if "+zoltan" in self.spec:
|
||||
args.append("--with-zoltan=%s" % self.spec["zoltan"].prefix)
|
||||
if "+hdf5" in self.spec:
|
||||
args.append("--with-hdf5=%s" % self.spec["hdf5"].prefix)
|
||||
if "+zlib" in self.spec:
|
||||
args.append("--with-zlib=%s" % self.spec["zlib-api"].prefix)
|
||||
if "+curses" in self.spec:
|
||||
args.append("--with-curses={}".format(self.spec["ncurses"].prefix))
|
||||
args.extend(self.with_or_without("zoltan", activation_value="prefix"))
|
||||
args.extend(self.with_or_without("hdf5", activation_value="prefix"))
|
||||
args.extend(
|
||||
self.with_or_without(
|
||||
"libz", activation_value=lambda _: self.spec["zlib-api"].prefix, variant="zlib"
|
||||
)
|
||||
)
|
||||
args.extend(self.with_or_without("ncurses", activation_value="prefix", variant="curses"))
|
||||
|
||||
if "+pdes_mpi" in self.spec:
|
||||
if self.spec.satisfies("+pdes_mpi"):
|
||||
args.append("--enable-mpi")
|
||||
env["CC"] = self.spec["mpi"].mpicc
|
||||
env["CXX"] = self.spec["mpi"].mpicxx
|
||||
@ -116,16 +129,15 @@ def configure_args(self):
|
||||
else:
|
||||
args.append("--disable-mpi")
|
||||
|
||||
if "+trackevents" in self.spec:
|
||||
args.append("--enable-event-tracking")
|
||||
if "+trackperf" in self.spec:
|
||||
args.append("--enable-perf-tracking")
|
||||
if "+preview" in self.spec:
|
||||
args.append("--enable-preview-build")
|
||||
if "+profile" in self.spec:
|
||||
args.append("--enable-profile")
|
||||
args.extend(self.enable_or_disable("mem-pools", variant="mempools"))
|
||||
args.extend(self.enable_or_disable("debug"))
|
||||
args.extend(self.enable_or_disable("event-tracking", variant="trackevents"))
|
||||
args.extend(self.enable_or_disable("perf-tracking", variant="trackperf"))
|
||||
args.extend(self.enable_or_disable("preview-build", variant="preview"))
|
||||
args.extend(self.enable_or_disable("profile"))
|
||||
|
||||
args.append("--with-python=%s" % self.spec["python"].prefix)
|
||||
# Required, so no need for with_or_without
|
||||
args.append(f"--with-python={self.spec['python'].prefix}")
|
||||
return args
|
||||
|
||||
def patch(self):
|
||||
|
@ -0,0 +1,12 @@
|
||||
diff --git a/packages/teuchos/core/src/Teuchos_BigUIntDecl.hpp b/packages/teuchos/core/src/Teuchos_BigUIntDecl.hpp
|
||||
index e82e8be9e9a..b41b0d035af 100644
|
||||
--- a/packages/teuchos/core/src/Teuchos_BigUIntDecl.hpp
|
||||
+++ b/packages/teuchos/core/src/Teuchos_BigUIntDecl.hpp
|
||||
@@ -43,6 +43,7 @@
|
||||
#define TEUCHOS_BIG_UINT_DECL_HPP
|
||||
|
||||
#include <iosfwd>
|
||||
+#include <cstdint>
|
||||
|
||||
/*! \file Teuchos_BigUIntDecl.hpp
|
||||
\brief Arbitrary-precision unsigned integer declaration.
|
@ -0,0 +1,15 @@
|
||||
diff --git a/packages/kokkos-kernels/src/sparse/KokkosSparse_spadd_handle.hpp b/packages/kokkos-kernels/src/sparse/KokkosSparse_spadd_handle.hpp
|
||||
index 917b1038a61..d5e4d30653d 100644
|
||||
--- a/packages/kokkos-kernels/src/sparse/KokkosSparse_spadd_handle.hpp
|
||||
+++ b/packages/kokkos-kernels/src/sparse/KokkosSparse_spadd_handle.hpp
|
||||
@@ -104,10 +104,6 @@ class SPADDHandle {
|
||||
*/
|
||||
size_type get_c_nnz() { return this->result_nnz_size; }
|
||||
|
||||
- void set_sort_option(int option) { this->sort_option = option; }
|
||||
-
|
||||
- int get_sort_option() { return this->sort_option; }
|
||||
-
|
||||
/**
|
||||
* \brief Default constructor.
|
||||
*/
|
@ -0,0 +1,12 @@
|
||||
diff --git a/packages/kokkos/core/src/impl/Kokkos_MemoryPool.cpp b/packages/kokkos/core/src/impl/Kokkos_MemoryPool.cpp
|
||||
index 889d821bb1c..3ddc1d3515e 100644
|
||||
--- a/packages/kokkos/core/src/impl/Kokkos_MemoryPool.cpp
|
||||
+++ b/packages/kokkos/core/src/impl/Kokkos_MemoryPool.cpp
|
||||
@@ -46,6 +46,7 @@
|
||||
|
||||
#include <ostream>
|
||||
#include <sstream>
|
||||
+#include <cstdint>
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
//----------------------------------------------------------------------------
|
@ -0,0 +1,15 @@
|
||||
diff --git a/packages/kokkos-kernels/sparse/src/KokkosSparse_spadd_handle.hpp b/packages/kokkos-kernels/sparse/src/KokkosSparse_spadd_handle.hpp
|
||||
index 6d726e3da65..01d96f55115 100644
|
||||
--- a/packages/kokkos-kernels/sparse/src/KokkosSparse_spadd_handle.hpp
|
||||
+++ b/packages/kokkos-kernels/sparse/src/KokkosSparse_spadd_handle.hpp
|
||||
@@ -76,10 +76,6 @@ class SPADDHandle {
|
||||
*/
|
||||
size_type get_c_nnz() { return this->result_nnz_size; }
|
||||
|
||||
- void set_sort_option(int option) { this->sort_option = option; }
|
||||
-
|
||||
- int get_sort_option() { return this->sort_option; }
|
||||
-
|
||||
/**
|
||||
* \brief Default constructor.
|
||||
*/
|
@ -425,15 +425,15 @@ class Trilinos(CMakePackage, CudaPackage, ROCmPackage):
|
||||
depends_on("kokkos-kernels~shared", when="+cuda_rdc")
|
||||
depends_on("kokkos-kernels~shared", when="+rocm_rdc")
|
||||
depends_on("kokkos~complex_align")
|
||||
depends_on("kokkos@4.5.01", when="@master:")
|
||||
depends_on("kokkos@4.5.01", when="@16.1")
|
||||
depends_on("kokkos@4.3.01", when="@16")
|
||||
depends_on("kokkos@4.2.01", when="@15.1:15")
|
||||
depends_on("kokkos@4.1.00", when="@14.4:15.0")
|
||||
depends_on("kokkos-kernels@4.5.01", when="@master:")
|
||||
depends_on("kokkos-kernels@4.5.01", when="@16.1")
|
||||
depends_on("kokkos-kernels@4.3.01", when="@16")
|
||||
depends_on("kokkos-kernels@4.2.01", when="@15.1:15")
|
||||
depends_on("kokkos@=4.5.01", when="@master:")
|
||||
depends_on("kokkos@=4.5.01", when="@16.1")
|
||||
depends_on("kokkos@=4.3.01", when="@16.0")
|
||||
depends_on("kokkos@=4.2.01", when="@15.1:15")
|
||||
depends_on("kokkos@=4.1.00", when="@14.4:15.0")
|
||||
depends_on("kokkos-kernels@=4.5.01", when="@master:")
|
||||
depends_on("kokkos-kernels@=4.5.01", when="@16.1")
|
||||
depends_on("kokkos-kernels@=4.3.01", when="@16.0")
|
||||
depends_on("kokkos-kernels@=4.2.01", when="@15.1:15")
|
||||
depends_on("kokkos+openmp", when="+openmp")
|
||||
|
||||
for a in CudaPackage.cuda_arch_values:
|
||||
@ -542,6 +542,18 @@ class Trilinos(CMakePackage, CudaPackage, ROCmPackage):
|
||||
when="@13.0.0:13.0.1 +teko gotype=long",
|
||||
)
|
||||
|
||||
# https://github.com/kokkos/kokkos-kernels/pull/2296
|
||||
patch("13.4.1-kokkoskernel-patch2296.patch", when="@13.4.1 %oneapi@2025:")
|
||||
|
||||
# https://github.com/kokkos/kokkos-kernels/pull/2296
|
||||
patch("14-14.2-kokkoskernel-patch2296.patch", when="@14 %oneapi@2025:")
|
||||
|
||||
# https://github.com/trilinos/Trilinos/pull/11676
|
||||
patch("13.4.1-14-patch11676.patch", when="@13.4.1:14.0 %oneapi@2025:")
|
||||
|
||||
# https://github.com/trilinos/Trilinos/pull/11600
|
||||
patch("13.4.1-patch11600.patch", when="@13.4.1 %oneapi@2025:")
|
||||
|
||||
def flag_handler(self, name, flags):
|
||||
spec = self.spec
|
||||
is_cce = spec.satisfies("%cce")
|
||||
@ -557,6 +569,11 @@ def flag_handler(self, name, flags):
|
||||
flags.append("-no-ipo")
|
||||
if "+wrapper" in spec:
|
||||
flags.append("--expt-extended-lambda")
|
||||
if spec.satisfies("%oneapi@2025:"):
|
||||
flags.append(
|
||||
"-Wno-error=missing-template-arg-list-after-template-kw "
|
||||
"-Wno-missing-template-arg-list-after-template-kw"
|
||||
)
|
||||
elif name == "ldflags":
|
||||
if spec.satisfies("%cce@:14"):
|
||||
flags.append("-fuse-ld=gold")
|
||||
|
@ -9,15 +9,18 @@ class Yarn(Package):
|
||||
"""Fast, reliable, and secure dependency management."""
|
||||
|
||||
homepage = "https://yarnpkg.com"
|
||||
url = "https://github.com/yarnpkg/yarn/releases/download/v1.22.22/yarn-v1.22.22.tar.gz"
|
||||
url = "https://github.com/yarnpkg/berry/archive/refs/tags/@yarnpkg/cli/4.6.0.tar.gz"
|
||||
|
||||
maintainers("cosmicexplorer")
|
||||
|
||||
depends_on("node-js@18.12.0:", type="run", when="@4:")
|
||||
depends_on("node-js@4.8.0:4.9.1,6.2.2:6.17.1,8:", type="run", when="@1.22.22")
|
||||
depends_on("node-js@4.0:", type="run")
|
||||
|
||||
license("BSD-2-Clause")
|
||||
|
||||
version("4.7.0", sha256="3e840034175d50254578c692f795cd79512869ad257f5b2269117b82c14fa0b1")
|
||||
version("4.6.0", sha256="c3a318af0deb9d284d7c46bf97a28f9d70b156142dcab8ec985481d5818dc651")
|
||||
version("1.22.22", sha256="88268464199d1611fcf73ce9c0a6c4d44c7d5363682720d8506f6508addf36a0")
|
||||
version("1.22.4", sha256="bc5316aa110b2f564a71a3d6e235be55b98714660870c5b6b2d2d3f12587fb58")
|
||||
version("1.22.2", sha256="de4cff575ae7151f8189bf1d747f026695d768d0563e2860df407ab79c70693d")
|
||||
@ -25,5 +28,17 @@ class Yarn(Package):
|
||||
version("1.22.0", sha256="de8871c4e2822cba80d58c2e72366fb78567ec56e873493c9ca0cca76c60f9a5")
|
||||
version("1.21.1", sha256="d1d9f4a0f16f5ed484e814afeb98f39b82d4728c6c8beaafb5abc99c02db6674")
|
||||
|
||||
def url_for_version(self, version):
|
||||
if version < Version("2.0.0"):
|
||||
return f"https://github.com/yarnpkg/yarn/releases/download/v{version}/yarn-v{version}.tar.gz"
|
||||
else:
|
||||
return (
|
||||
f"https://github.com/yarnpkg/berry/archive/refs/tags/@yarnpkg/cli/{version}.tar.gz"
|
||||
)
|
||||
|
||||
def install(self, spec, prefix):
|
||||
install_tree(".", prefix)
|
||||
if spec.version < Version("2.0.0"):
|
||||
install_tree(".", prefix)
|
||||
else:
|
||||
mkdirp(prefix.bin)
|
||||
install("packages/yarnpkg-cli/bin/yarn.js", prefix.bin.yarn)
|
||||
|
@ -16,6 +16,7 @@ class Zig(CMakePackage):
|
||||
|
||||
license("MIT")
|
||||
|
||||
version("0.14.0", tag="0.14.0", commit="5ad91a646a753cc3eecd8751e61cf458dadd9ac4")
|
||||
version("0.13.0", tag="0.13.0", commit="cf90dfd3098bef5b3c22d5ab026173b3c357f2dd")
|
||||
version("0.12.0", tag="0.12.0", commit="a685ab1499d6560c523f0dbce2890dc140671e43")
|
||||
version("0.11.0", tag="0.11.0", commit="67709b638224ac03820226c6744d8b6ead59184c")
|
||||
|
Loading…
Reference in New Issue
Block a user