Compare commits
65 Commits
features/o
...
f/env-loca
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
79e821a43e | ||
|
|
c16f166dcc | ||
|
|
4ae9730ffe | ||
|
|
9debeaf4e7 | ||
|
|
47cdefcbe8 | ||
|
|
2acc356ed4 | ||
|
|
36bf6c9009 | ||
|
|
29fbad20a2 | ||
|
|
5f78703af8 | ||
|
|
9b390bdc2c | ||
|
|
bc427e8435 | ||
|
|
3c6e6e22be | ||
|
|
4a8f755632 | ||
|
|
51de7ed7ee | ||
|
|
047110c086 | ||
|
|
7fa16089fc | ||
|
|
065eaa739f | ||
|
|
8d8e88c177 | ||
|
|
8cc69cecfc | ||
|
|
9c690a1ef5 | ||
|
|
3532d6ff16 | ||
|
|
7494893d3b | ||
|
|
54e4a72b8e | ||
|
|
b86980461f | ||
|
|
23b5932f73 | ||
|
|
93760847e8 | ||
|
|
a35d2f39af | ||
|
|
af17cc60a9 | ||
|
|
b0528cae3f | ||
|
|
372a18392a | ||
|
|
70db49dfed | ||
|
|
1d24c196da | ||
|
|
fa3d768947 | ||
|
|
9b6a109c7e | ||
|
|
663967d984 | ||
|
|
b47ff2a2de | ||
|
|
f7b4993810 | ||
|
|
3e07eb8cf0 | ||
|
|
e773396747 | ||
|
|
e19cc2385e | ||
|
|
e867662e1b | ||
|
|
6aad926838 | ||
|
|
41cf807804 | ||
|
|
cf8b919954 | ||
|
|
47957dccf4 | ||
|
|
38313cadf4 | ||
|
|
730d005a56 | ||
|
|
2f7c850a20 | ||
|
|
5aa7a564d3 | ||
|
|
d50c8f1727 | ||
|
|
0ac6dfa8f3 | ||
|
|
0b0ffe645d | ||
|
|
9984c838c8 | ||
|
|
b1bd61321d | ||
|
|
c144558245 | ||
|
|
ef43044672 | ||
|
|
da7294cd90 | ||
|
|
addb891f42 | ||
|
|
bce2d38bfc | ||
|
|
2cae95334c | ||
|
|
076d60ce35 | ||
|
|
9ecdafd8de | ||
|
|
76fde639e8 | ||
|
|
490b5eef7c | ||
|
|
3f2e77e5fa |
@@ -72,6 +72,7 @@ config:
|
||||
root: $TMP_DIR/install
|
||||
misc_cache: $$user_cache_path/cache
|
||||
source_cache: $$user_cache_path/source
|
||||
environments_root: $TMP_DIR/envs
|
||||
EOF
|
||||
cat >"$SPACK_USER_CONFIG_PATH/bootstrap.yaml" <<EOF
|
||||
bootstrap:
|
||||
|
||||
@@ -81,6 +81,10 @@ config:
|
||||
source_cache: $spack/var/spack/cache
|
||||
|
||||
|
||||
## Directory where spack managed environments are created and stored
|
||||
# environments_root: $spack/var/spack/environments
|
||||
|
||||
|
||||
# Cache directory for miscellaneous files, like the package index.
|
||||
# This can be purged with `spack clean --misc-cache`
|
||||
misc_cache: $user_cache_path/cache
|
||||
|
||||
@@ -58,9 +58,9 @@ Using Environments
|
||||
Here we follow a typical use case of creating, concretizing,
|
||||
installing and loading an environment.
|
||||
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
Creating a named Environment
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
Creating a managed Environment
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
An environment is created by:
|
||||
|
||||
@@ -72,7 +72,8 @@ Spack then creates the directory ``var/spack/environments/myenv``.
|
||||
|
||||
.. note::
|
||||
|
||||
All named environments are stored in the ``var/spack/environments`` folder.
|
||||
All managed environments by default are stored in the ``var/spack/environments`` folder.
|
||||
This location can be changed by setting the ``environments_root`` variable in ``config.yaml``.
|
||||
|
||||
In the ``var/spack/environments/myenv`` directory, Spack creates the
|
||||
file ``spack.yaml`` and the hidden directory ``.spack-env``.
|
||||
@@ -346,7 +347,7 @@ the Environment and then install the concretized specs.
|
||||
(see :ref:`build-jobs`). To speed up environment builds further, independent
|
||||
packages can be installed in parallel by launching more Spack instances. For
|
||||
example, the following will build at most four packages in parallel using
|
||||
three background jobs:
|
||||
three background jobs:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
@@ -394,7 +395,7 @@ version (and other constraints) passed as the spec argument to the
|
||||
|
||||
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
|
||||
This means that for a package ``foo``, ``spack develop foo@git.main`` will clone
|
||||
the ``main`` branch of the package, and ``spack install`` will install from
|
||||
that git clone if ``foo`` is in the environment.
|
||||
Further development on ``foo`` can be tested by reinstalling the environment,
|
||||
@@ -630,35 +631,6 @@ The following two Environment manifests are identical:
|
||||
Spec matrices can be used to install swaths of software across various
|
||||
toolchains.
|
||||
|
||||
Note that ordering of matrices is important. For example, the
|
||||
following environments are identical:
|
||||
|
||||
.. code-block:: yaml
|
||||
|
||||
spack:
|
||||
specs:
|
||||
- matrix:
|
||||
- [hdf5@1.10.2+mpi]
|
||||
- [^mpich, ^openmpi]
|
||||
- ['%gcc']
|
||||
- matrix:
|
||||
- [hdf5@1.12.1+mpi]
|
||||
- ['%gcc']
|
||||
- [^mpich, ^openmpi]
|
||||
|
||||
spack:
|
||||
specs:
|
||||
- hdf5@1.10.2+mpi ^mpich%gcc
|
||||
- hdf5@1.10.2+mpi ^openmpi%gcc
|
||||
- hdf5@1.12.1+mpi %gcc ^mpich
|
||||
- hdf5@1.12.1+mpi %gcc ^openmpi
|
||||
|
||||
Notice how the first matrix applies the compiler constraints to the
|
||||
mpi dependencies, whereas the second matrix applies the compiler
|
||||
constraints directly to the root hdf5 node. This gives users the full
|
||||
breadth of expressiveness of the spec syntax through the matrix
|
||||
interface.
|
||||
|
||||
^^^^^^^^^^^^^^^^^^^^
|
||||
Spec List References
|
||||
^^^^^^^^^^^^^^^^^^^^
|
||||
@@ -1149,19 +1121,19 @@ index once every package is pushed. Note how this target uses the generated
|
||||
|
||||
SPACK ?= spack
|
||||
BUILDCACHE_DIR = $(CURDIR)/tarballs
|
||||
|
||||
|
||||
.PHONY: all
|
||||
|
||||
|
||||
all: push
|
||||
|
||||
|
||||
include env.mk
|
||||
|
||||
|
||||
example/push/%: example/install/%
|
||||
@mkdir -p $(dir $@)
|
||||
$(info About to push $(SPEC) to a buildcache)
|
||||
$(SPACK) -e . buildcache create --allow-root --only=package --directory $(BUILDCACHE_DIR) /$(HASH)
|
||||
@touch $@
|
||||
|
||||
|
||||
push: $(addprefix example/push/,$(example/SPACK_PACKAGE_IDS))
|
||||
$(info Updating the buildcache index)
|
||||
$(SPACK) -e . buildcache update-index --directory $(BUILDCACHE_DIR)
|
||||
|
||||
@@ -166,7 +166,7 @@ def env_activate(args):
|
||||
short_name = os.path.basename(env_path)
|
||||
ev.Environment(env).write(regenerate=False)
|
||||
|
||||
# Named environment
|
||||
# Managed environment
|
||||
elif ev.exists(env_name_or_dir) and not args.dir:
|
||||
env_path = ev.root(env_name_or_dir)
|
||||
short_name = env_name_or_dir
|
||||
|
||||
@@ -95,7 +95,7 @@ def location(parser, args):
|
||||
spack.cmd.require_active_env("location -e")
|
||||
path = ev.active_environment().path
|
||||
else:
|
||||
# Get named environment path
|
||||
# Get path of requested environment
|
||||
if not ev.exists(args.location_env):
|
||||
tty.die("no such environment: '%s'" % args.location_env)
|
||||
path = ev.root(args.location_env)
|
||||
|
||||
@@ -89,11 +89,6 @@ def cxx14_flag(self):
|
||||
return "-std=c++14"
|
||||
return "-h std=c++14"
|
||||
|
||||
@property
|
||||
def cxx17_flag(self):
|
||||
if self.is_clang_based:
|
||||
return "-std=c++17"
|
||||
|
||||
@property
|
||||
def c99_flag(self):
|
||||
if self.is_clang_based:
|
||||
|
||||
@@ -64,8 +64,8 @@
|
||||
_active_environment = None
|
||||
|
||||
|
||||
#: path where environments are stored in the spack tree
|
||||
env_path = os.path.join(spack.paths.var_path, "environments")
|
||||
#: default path where environments are stored in the spack tree
|
||||
default_env_path = os.path.join(spack.paths.var_path, "environments")
|
||||
|
||||
|
||||
#: Name of the input yaml file for an environment
|
||||
@@ -80,6 +80,26 @@
|
||||
env_subdir_name = ".spack-env"
|
||||
|
||||
|
||||
def env_root_path():
|
||||
"""Override default root path if the user specified it"""
|
||||
return spack.util.path.canonicalize_path(
|
||||
spack.config.get("config:environments_root", default=default_env_path)
|
||||
)
|
||||
|
||||
|
||||
def check_disallowed_env_config_mods(scopes):
|
||||
for scope in scopes:
|
||||
with spack.config.use_configuration(scope):
|
||||
if spack.config.get("config:environments_root"):
|
||||
raise SpackEnvironmentError(
|
||||
"Spack environments are prohibited from modifying 'config:environments_root' "
|
||||
"because it can make the definition of the environment ill-posed. Please "
|
||||
"remove from your environment and place it in a permanent scope such as "
|
||||
"defaults, system, site, etc."
|
||||
)
|
||||
return scopes
|
||||
|
||||
|
||||
def default_manifest_yaml():
|
||||
"""default spack.yaml file to put in new environments"""
|
||||
return """\
|
||||
@@ -216,7 +236,7 @@ def active_environment():
|
||||
|
||||
def _root(name):
|
||||
"""Non-validating version of root(), to be used internally."""
|
||||
return os.path.join(env_path, name)
|
||||
return os.path.join(env_root_path(), name)
|
||||
|
||||
|
||||
def root(name):
|
||||
@@ -251,10 +271,12 @@ def read(name):
|
||||
|
||||
|
||||
def create(name, init_file=None, with_view=None, keep_relative=False):
|
||||
"""Create a named environment in Spack."""
|
||||
"""Create a managed environment in Spack."""
|
||||
if not os.path.isdir(env_root_path()):
|
||||
fs.mkdirp(env_root_path())
|
||||
validate_env_name(name)
|
||||
if exists(name):
|
||||
raise SpackEnvironmentError("'%s': environment already exists" % name)
|
||||
raise SpackEnvironmentError("'%s': environment already exists at %s" % (name, root(name)))
|
||||
return Environment(root(name), init_file, with_view, keep_relative)
|
||||
|
||||
|
||||
@@ -268,10 +290,10 @@ def all_environment_names():
|
||||
"""List the names of environments that currently exist."""
|
||||
# just return empty if the env path does not exist. A read-only
|
||||
# operation like list should not try to create a directory.
|
||||
if not os.path.exists(env_path):
|
||||
if not os.path.exists(env_root_path()):
|
||||
return []
|
||||
|
||||
candidates = sorted(os.listdir(env_path))
|
||||
candidates = sorted(os.listdir(env_root_path()))
|
||||
names = []
|
||||
for candidate in candidates:
|
||||
yaml_path = os.path.join(_root(candidate), manifest_name)
|
||||
@@ -281,7 +303,7 @@ def all_environment_names():
|
||||
|
||||
|
||||
def all_environments():
|
||||
"""Generator for all named Environments."""
|
||||
"""Generator for all managed Environments."""
|
||||
for name in all_environment_names():
|
||||
yield read(name)
|
||||
|
||||
@@ -849,14 +871,14 @@ def clear(self, re_read=False):
|
||||
@property
|
||||
def internal(self):
|
||||
"""Whether this environment is managed by Spack."""
|
||||
return self.path.startswith(env_path)
|
||||
return self.path.startswith(env_root_path())
|
||||
|
||||
@property
|
||||
def name(self):
|
||||
"""Human-readable representation of the environment.
|
||||
|
||||
This is the path for directory environments, and just the name
|
||||
for named environments.
|
||||
for managed environments.
|
||||
"""
|
||||
if self.internal:
|
||||
return os.path.basename(self.path)
|
||||
@@ -1036,7 +1058,9 @@ def env_file_config_scope(self):
|
||||
|
||||
def config_scopes(self):
|
||||
"""A list of all configuration scopes for this environment."""
|
||||
return self.included_config_scopes() + [self.env_file_config_scope()]
|
||||
return check_disallowed_env_config_mods(
|
||||
self.included_config_scopes() + [self.env_file_config_scope()]
|
||||
)
|
||||
|
||||
def destroy(self):
|
||||
"""Remove this environment from Spack entirely."""
|
||||
@@ -2265,12 +2289,15 @@ def _concretize_from_constraints(spec_constraints, tests=False):
|
||||
m += "concretization target. all specs must have a single name "
|
||||
m += "constraint for concretization."
|
||||
raise InvalidSpecConstraintError(m)
|
||||
spec_constraints.remove(root_spec[0])
|
||||
|
||||
invalid_constraints = []
|
||||
while True:
|
||||
# Combine constraints into a single spec
|
||||
s = Spec(" ".join([str(c) for c in spec_constraints if c not in invalid_constraints]))
|
||||
|
||||
# Attach all anonymous constraints to one named spec
|
||||
s = root_spec[0].copy()
|
||||
for c in spec_constraints:
|
||||
if c not in invalid_constraints:
|
||||
s.constrain(c)
|
||||
try:
|
||||
return s.concretized(tests=tests)
|
||||
except spack.spec.InvalidDependencyError as e:
|
||||
|
||||
@@ -459,7 +459,7 @@ def make_argument_parser(**kwargs):
|
||||
dest="env_dir",
|
||||
metavar="DIR",
|
||||
action="store",
|
||||
help="run with an environment directory (ignore named environments)",
|
||||
help="run with an environment directory (ignore managed environments)",
|
||||
)
|
||||
env_group.add_argument(
|
||||
"-E",
|
||||
|
||||
@@ -67,6 +67,7 @@
|
||||
"license_dir": {"type": "string"},
|
||||
"source_cache": {"type": "string"},
|
||||
"misc_cache": {"type": "string"},
|
||||
"environments_root": {"type": "string"},
|
||||
"connect_timeout": {"type": "integer", "minimum": 0},
|
||||
"verify_ssl": {"type": "boolean"},
|
||||
"suppress_gpg_warnings": {"type": "boolean"},
|
||||
|
||||
@@ -51,9 +51,7 @@ def specs_as_constraints(self):
|
||||
constraints = []
|
||||
for item in self.specs_as_yaml_list:
|
||||
if isinstance(item, dict): # matrix of specs
|
||||
expanded = _expand_matrix_constraints(item)
|
||||
for e in expanded:
|
||||
constraints.append([Spec(x) for x in e])
|
||||
constraints.extend(_expand_matrix_constraints(item))
|
||||
else: # individual spec
|
||||
constraints.append([Spec(item)])
|
||||
self._constraints = constraints
|
||||
@@ -64,11 +62,13 @@ def specs_as_constraints(self):
|
||||
def specs(self):
|
||||
if self._specs is None:
|
||||
specs = []
|
||||
for item in self.specs_as_yaml_list:
|
||||
if isinstance(item, dict): # matrix of specs
|
||||
specs.extend([Spec(" ".join(x)) for x in _expand_matrix_constraints(item)])
|
||||
else: # individual spec
|
||||
specs.append(Spec(item))
|
||||
# This could be slightly faster done directly from yaml_list,
|
||||
# but this way is easier to maintain.
|
||||
for constraint_list in self.specs_as_constraints:
|
||||
spec = constraint_list[0].copy()
|
||||
for const in constraint_list[1:]:
|
||||
spec.constrain(const)
|
||||
specs.append(spec)
|
||||
self._specs = specs
|
||||
|
||||
return self._specs
|
||||
@@ -193,7 +193,11 @@ def _expand_matrix_constraints(matrix_config):
|
||||
for combo in itertools.product(*expanded_rows):
|
||||
# Construct a combined spec to test against excludes
|
||||
flat_combo = [constraint for constraint_list in combo for constraint in constraint_list]
|
||||
test_spec = Spec(" ".join(flat_combo))
|
||||
flat_combo = [Spec(x) for x in flat_combo]
|
||||
|
||||
test_spec = flat_combo[0].copy()
|
||||
for constraint in flat_combo[1:]:
|
||||
test_spec.constrain(constraint)
|
||||
|
||||
# Abstract variants don't have normal satisfaction semantics
|
||||
# Convert all variants to concrete types.
|
||||
@@ -209,7 +213,7 @@ def _expand_matrix_constraints(matrix_config):
|
||||
continue
|
||||
|
||||
if sigil:
|
||||
flat_combo[0] = sigil + flat_combo[0]
|
||||
flat_combo[0] = Spec(sigil + str(flat_combo[0]))
|
||||
|
||||
# Add to list of constraints
|
||||
results.append(flat_combo)
|
||||
|
||||
@@ -9,8 +9,7 @@
|
||||
import spack.environment as ev
|
||||
from spack.main import SpackCommand
|
||||
|
||||
# everything here uses the mock_env_path
|
||||
pytestmark = pytest.mark.usefixtures("mutable_mock_env_path", "config", "mutable_mock_repo")
|
||||
pytestmark = pytest.mark.usefixtures("config", "mutable_mock_repo")
|
||||
|
||||
env = SpackCommand("env")
|
||||
add = SpackCommand("add")
|
||||
@@ -21,7 +20,7 @@
|
||||
|
||||
|
||||
@pytest.mark.parametrize("unify", unification_strategies)
|
||||
def test_concretize_all_test_dependencies(unify):
|
||||
def test_concretize_all_test_dependencies(unify, mutable_mock_env_path):
|
||||
"""Check all test dependencies are concretized."""
|
||||
env("create", "test")
|
||||
|
||||
@@ -33,7 +32,7 @@ def test_concretize_all_test_dependencies(unify):
|
||||
|
||||
|
||||
@pytest.mark.parametrize("unify", unification_strategies)
|
||||
def test_concretize_root_test_dependencies_not_recursive(unify):
|
||||
def test_concretize_root_test_dependencies_not_recursive(unify, mutable_mock_env_path):
|
||||
"""Check that test dependencies are not concretized recursively."""
|
||||
env("create", "test")
|
||||
|
||||
@@ -45,7 +44,7 @@ def test_concretize_root_test_dependencies_not_recursive(unify):
|
||||
|
||||
|
||||
@pytest.mark.parametrize("unify", unification_strategies)
|
||||
def test_concretize_root_test_dependencies_are_concretized(unify):
|
||||
def test_concretize_root_test_dependencies_are_concretized(unify, mutable_mock_env_path):
|
||||
"""Check that root test dependencies are concretized."""
|
||||
env("create", "test")
|
||||
|
||||
|
||||
@@ -3236,3 +3236,20 @@ def test_relative_view_path_on_command_line_is_made_absolute(tmpdir, config):
|
||||
env("create", "--with-view", "view", "--dir", "env")
|
||||
environment = ev.Environment(os.path.join(".", "env"))
|
||||
assert os.path.samefile("view", environment.default_view.root)
|
||||
|
||||
|
||||
def test_environment_created_in_users_location(mutable_config, tmpdir):
|
||||
"""Test that an environment is created in a location based on the config"""
|
||||
spack.config.set("config:environments_root", str(tmpdir.join("envs")))
|
||||
env_dir = spack.config.get("config:environments_root")
|
||||
|
||||
assert tmpdir.strpath in env_dir
|
||||
assert not os.path.isdir(env_dir)
|
||||
|
||||
dir_name = "user_env"
|
||||
env("create", dir_name)
|
||||
out = env("list")
|
||||
|
||||
assert dir_name in out
|
||||
assert env_dir in ev.root(dir_name)
|
||||
assert os.path.isdir(os.path.join(env_dir, dir_name))
|
||||
|
||||
@@ -223,7 +223,7 @@ class TestUninstallFromEnv(object):
|
||||
concretize = SpackCommand("concretize")
|
||||
find = SpackCommand("find")
|
||||
|
||||
@pytest.fixture
|
||||
@pytest.fixture(scope="function")
|
||||
def environment_setup(
|
||||
self, mutable_mock_env_path, config, mock_packages, mutable_database, install_mockery
|
||||
):
|
||||
@@ -242,6 +242,9 @@ def environment_setup(
|
||||
TestUninstallFromEnv.add("dt-diamond-bottom")
|
||||
TestUninstallFromEnv.concretize()
|
||||
install("--fake")
|
||||
yield "environment_setup"
|
||||
TestUninstallFromEnv.env("rm", "e1", "-y")
|
||||
TestUninstallFromEnv.env("rm", "e2", "-y")
|
||||
|
||||
def test_basic_env_sanity(self, environment_setup):
|
||||
for env_name in ["e1", "e2"]:
|
||||
|
||||
@@ -1551,14 +1551,14 @@ def get_rev():
|
||||
yield t
|
||||
|
||||
|
||||
@pytest.fixture()
|
||||
def mutable_mock_env_path(tmpdir_factory):
|
||||
@pytest.fixture(scope="function")
|
||||
def mutable_mock_env_path(tmpdir_factory, mutable_config):
|
||||
"""Fixture for mocking the internal spack environments directory."""
|
||||
saved_path = ev.environment.env_path
|
||||
saved_path = ev.environment.default_env_path
|
||||
mock_path = tmpdir_factory.mktemp("mock-env-path")
|
||||
ev.environment.env_path = str(mock_path)
|
||||
ev.environment.default_env_path = str(mock_path)
|
||||
yield mock_path
|
||||
ev.environment.env_path = saved_path
|
||||
ev.environment.default_env_path = saved_path
|
||||
|
||||
|
||||
@pytest.fixture()
|
||||
|
||||
@@ -75,8 +75,8 @@ def test_env_change_spec(tmpdir, mock_packages, config):
|
||||
- desired_specs: ["mpileaks@2.1"]
|
||||
specs:
|
||||
- matrix:
|
||||
- [$desired_specs]
|
||||
- [$compilers]
|
||||
- [$desired_specs]
|
||||
"""
|
||||
|
||||
|
||||
@@ -143,3 +143,21 @@ def test_user_view_path_is_not_canonicalized_in_yaml(tmpdir, config):
|
||||
snd = ev.Environment(env_path)
|
||||
assert snd.yaml["spack"]["view"] == view
|
||||
assert os.path.samefile(snd.default_view.root, absolute_view)
|
||||
|
||||
|
||||
def test_environment_cant_modify_environments_root(tmpdir):
|
||||
filename = str(tmpdir.join("spack.yaml"))
|
||||
with open(filename, "w") as f:
|
||||
f.write(
|
||||
"""\
|
||||
spack:
|
||||
config:
|
||||
environments_root: /a/black/hole
|
||||
view: false
|
||||
specs: []
|
||||
"""
|
||||
)
|
||||
with tmpdir.as_cwd():
|
||||
with pytest.raises(ev.SpackEnvironmentError):
|
||||
e = ev.Environment(tmpdir.strpath)
|
||||
ev.activate(e)
|
||||
|
||||
@@ -61,25 +61,25 @@ def test_spec_list_expansions(self):
|
||||
@pytest.mark.parametrize(
|
||||
"specs,expected",
|
||||
[
|
||||
# Constraints are ordered carefully to apply to appropriate node
|
||||
# Constraints are ordered randomly
|
||||
(
|
||||
[
|
||||
{
|
||||
"matrix": [
|
||||
["hypre", "libelf"],
|
||||
["~shared"],
|
||||
["^foo"],
|
||||
["^zmpi"],
|
||||
["%gcc@4.5.0"],
|
||||
["hypre", "libelf"],
|
||||
["~shared"],
|
||||
["cflags=-O3", 'cflags="-g -O0"'],
|
||||
["^foo"],
|
||||
]
|
||||
}
|
||||
],
|
||||
[
|
||||
"hypre ~shared ^foo ^zmpi cflags=-O3 %gcc@4.5.0",
|
||||
'hypre ~shared ^foo ^zmpi cflags="-g -O0" %gcc@4.5.0',
|
||||
"libelf ~shared ^foo ^zmpi cflags=-O3 %gcc@4.5.0",
|
||||
'libelf ~shared ^foo ^zmpi cflags="-g -O0" %gcc@4.5.0',
|
||||
"hypre cflags=-O3 ~shared %gcc@4.5.0 ^foo ^zmpi",
|
||||
'hypre cflags="-g -O0" ~shared %gcc@4.5.0 ^foo ^zmpi',
|
||||
"libelf cflags=-O3 ~shared %gcc@4.5.0 ^foo ^zmpi",
|
||||
'libelf cflags="-g -O0" ~shared %gcc@4.5.0 ^foo ^zmpi',
|
||||
],
|
||||
),
|
||||
# A constraint affects both the root and a dependency
|
||||
|
||||
@@ -59,6 +59,8 @@ spack:
|
||||
|
||||
specs:
|
||||
- kokkos +rocm amdgpu_target=gfx90a
|
||||
- kokkos +wrapper +cuda cuda_arch=80 ^cuda@11.7.1
|
||||
- raja +cuda cuda_arch=80 ^cuda@11.7.1
|
||||
- raja +cuda cuda_arch=80 ^cuda@12.0.0
|
||||
|
||||
# FAILURES
|
||||
@@ -107,6 +109,14 @@ spack:
|
||||
variables:
|
||||
CI_JOB_SIZE: large
|
||||
|
||||
- match:
|
||||
- kokkos +cuda cuda_arch=80 ^cuda@11.7.1
|
||||
- raja +cuda cuda_arch=80 ^cuda@11.7.1
|
||||
runner-attributes:
|
||||
tags: [ "nvidia-515.65.01", "cuda-11.7", "a100" ]
|
||||
variables:
|
||||
CI_JOB_SIZE: large
|
||||
|
||||
- match:
|
||||
- kokkos +cuda cuda_arch=80 ^cuda@12.0.0
|
||||
- raja +cuda cuda_arch=80 ^cuda@12.0.0
|
||||
|
||||
@@ -1,50 +0,0 @@
|
||||
# Copyright 2013-2023 Lawrence Livermore National Security, LLC and other
|
||||
# Spack Project Developers. See the top-level COPYRIGHT file for details.
|
||||
#
|
||||
# SPDX-License-Identifier: (Apache-2.0 OR MIT)
|
||||
|
||||
|
||||
from spack.package import *
|
||||
|
||||
|
||||
class GslLite(CMakePackage):
|
||||
"""A single-file header-only version of ISO C++ Guidelines Support Library
|
||||
(GSL) for C++98, C++11, and later"""
|
||||
|
||||
homepage = "https://github.com/gsl-lite/gsl-lite"
|
||||
git = "https://github.com/gsl-lite/gsl-lite.git"
|
||||
url = "https://github.com/gsl-lite/gsl-lite/archive/refs/tags/v0.38.1.tar.gz"
|
||||
|
||||
maintainers("AlexanderRichert-NOAA", "climbfuji", "edwardhartnett", "Hang-Lei-NOAA")
|
||||
|
||||
version("0.40.0", commit="d6c8af99a1d95b3db36f26b4f22dc3bad89952de")
|
||||
version("0.39.0", commit="d0903fa87ff579c30f608bc363582e6563570342")
|
||||
version("0.38.1", sha256="c2fa2315fff312f3897958903ed4d4e027f73fa44235459ecb467ad7b7d62b18")
|
||||
version("0.38.0", sha256="5d25fcd31ea66dac9e14da1cad501d95450ccfcb2768fffcd1a4170258fcbc81")
|
||||
version("0.37.0", sha256="a31d51b73742bb234acab8d2411223cf299e760ed713f0840ffed0dabe57ca38")
|
||||
version("0.36.0", sha256="c052cc4547b33cedee6f000393a7005915c45c6c06b35518d203db117f75c71c")
|
||||
version("0.34.0", sha256="a7d5b2672b78704ca03df9ef65bc274d8f8cacad3ca950365eef9e25b50324c5")
|
||||
|
||||
variant("tests", default=False)
|
||||
variant("cuda_tests", default=False)
|
||||
variant("examples", default=False)
|
||||
variant("static_analysis_demos", default=False)
|
||||
variant("cmake_export_package_registry", default=False)
|
||||
variant("compat_header", default=False)
|
||||
variant("legacy_headers", default=False)
|
||||
|
||||
def cmake_args(self):
|
||||
args = [
|
||||
self.define_from_variant("GSL_LITE_OPT_BUILD_TESTS", "tests"),
|
||||
self.define_from_variant("GSL_LITE_OPT_BUILD_CUDA_TESTS", "cuda_tests"),
|
||||
self.define_from_variant("GSL_LITE_OPT_BUILD_EXAMPLES", "examples"),
|
||||
self.define_from_variant(
|
||||
"GSL_LITE_LOPT_BUILD_STATIC_ANALYSIS_DEMOS", "static_analysis_demos"
|
||||
),
|
||||
self.define_from_variant(
|
||||
"CMAKE_EXPORT_PACKAGE_REGISTRY", "cmake_export_package_registry"
|
||||
),
|
||||
self.define_from_variant("GSL_LITE_OPT_INSTALL_COMPAT_HEADER", "compat_header"),
|
||||
self.define_from_variant("GSL_LITE_OPT_INSTALL_LEGACY_HEADERS", "legacy_headers"),
|
||||
]
|
||||
return args
|
||||
@@ -255,7 +255,7 @@ def build(self, pkg, spec, prefix):
|
||||
#
|
||||
self.coerce_to_spack("build")
|
||||
|
||||
if spec.satisfies("%clang") or spec.satisfies("%apple-clang") or spec.satisfies("%rocmcc"):
|
||||
if spec.satisfies("%clang") or spec.satisfies("%apple-clang"):
|
||||
tbb_compiler = "clang"
|
||||
elif spec.satisfies("%intel"):
|
||||
tbb_compiler = "icc"
|
||||
|
||||
@@ -16,7 +16,6 @@ class Libmonitor(AutotoolsPackage):
|
||||
maintainers("mwkrentel")
|
||||
|
||||
version("master", branch="master")
|
||||
version("2023.02.13", commit="6db182b25202552f75a087116ab57193652d150f")
|
||||
version("2022.09.02", commit="4ae16dab0ba5fbda0ffe28df523613ea22cb85ae")
|
||||
version("2021.11.08", commit="22aa52c621534f12d401fa37f6963bfca7441e20")
|
||||
version("2021.04.27", commit="a2d1b6be23410ef1ad2c9d0006672453803243c2")
|
||||
|
||||
@@ -0,0 +1,124 @@
|
||||
--- a/configure
|
||||
+++ b/configure
|
||||
@@ -9584,6 +9584,10 @@ for cc_temp in $compiler""; do
|
||||
esac
|
||||
done
|
||||
cc_basename=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"`
|
||||
+case $cc_basename in
|
||||
+ nagfor*) ;;
|
||||
+ *) $cc_temp -V 2>&1 | $GREP '^NAG Fortran Compiler Release' >/dev/null 2>&1 && cc_basename='nagfor-wrapper' ;;
|
||||
+esac
|
||||
|
||||
|
||||
# Only perform the check for file, if the check method requires it
|
||||
@@ -10657,6 +10661,10 @@ _LT_EOF
|
||||
lf95*) # Lahey Fortran 8.1
|
||||
whole_archive_flag_spec=
|
||||
tmp_sharedflag='--shared' ;;
|
||||
+ nagfor*)
|
||||
+ whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
|
||||
+ compiler_needs_object=yes
|
||||
+ tmp_sharedflag='-Wl,-shared' ;;
|
||||
xl[cC]* | bgxl[cC]* | mpixl[cC]*) # IBM XL C 8.0 on PPC (deal with xlf below)
|
||||
tmp_sharedflag='-qmkshrobj'
|
||||
tmp_addflag= ;;
|
||||
@@ -13415,6 +13423,10 @@ $RM -r conftest*
|
||||
esac
|
||||
done
|
||||
cc_basename=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"`
|
||||
+case $cc_basename in
|
||||
+ nagfor*) ;;
|
||||
+ *) $cc_temp -V 2>&1 | $GREP '^NAG Fortran Compiler Release' >/dev/null 2>&1 && cc_basename='nagfor-wrapper' ;;
|
||||
+esac
|
||||
|
||||
GCC=$G77
|
||||
if test -n "$compiler"; then
|
||||
@@ -14252,6 +14264,10 @@ _LT_EOF
|
||||
lf95*) # Lahey Fortran 8.1
|
||||
whole_archive_flag_spec_F77=
|
||||
tmp_sharedflag='--shared' ;;
|
||||
+ nagfor*)
|
||||
+ whole_archive_flag_spec_F77='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
|
||||
+ compiler_needs_object_F77=yes
|
||||
+ tmp_sharedflag='-Wl,-shared' ;;
|
||||
xl[cC]* | bgxl[cC]* | mpixl[cC]*) # IBM XL C 8.0 on PPC (deal with xlf below)
|
||||
tmp_sharedflag='-qmkshrobj'
|
||||
tmp_addflag= ;;
|
||||
@@ -16142,6 +16158,10 @@ $RM -r conftest*
|
||||
esac
|
||||
done
|
||||
cc_basename=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"`
|
||||
+case $cc_basename in
|
||||
+ nagfor*) ;;
|
||||
+ *) $cc_temp -V 2>&1 | $GREP '^NAG Fortran Compiler Release' >/dev/null 2>&1 && cc_basename='nagfor-wrapper' ;;
|
||||
+esac
|
||||
|
||||
|
||||
if test -n "$compiler"; then
|
||||
@@ -17142,6 +17162,10 @@ _LT_EOF
|
||||
lf95*) # Lahey Fortran 8.1
|
||||
whole_archive_flag_spec_FC=
|
||||
tmp_sharedflag='--shared' ;;
|
||||
+ nagfor*)
|
||||
+ whole_archive_flag_spec_FC='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
|
||||
+ compiler_needs_object_FC=yes
|
||||
+ tmp_sharedflag='-Wl,-shared' ;;
|
||||
xl[cC]* | bgxl[cC]* | mpixl[cC]*) # IBM XL C 8.0 on PPC (deal with xlf below)
|
||||
tmp_sharedflag='-qmkshrobj'
|
||||
tmp_addflag= ;;
|
||||
--- a/ltmain.sh
|
||||
+++ b/ltmain.sh
|
||||
@@ -180,6 +180,24 @@ func_basename ()
|
||||
func_basename_result=`$ECHO "${1}" | $SED "$basename"`
|
||||
} # func_basename may be replaced by extended shell implementation
|
||||
|
||||
+# Calculate cc_basename. Skip known compiler wrappers and cross-prefix.
|
||||
+func_cc_basename ()
|
||||
+{
|
||||
+ for cc_temp in $*""; do
|
||||
+ case $cc_temp in
|
||||
+ compile | *[\\/]compile | ccache | *[\\/]ccache ) ;;
|
||||
+ distcc | *[\\/]distcc | purify | *[\\/]purify ) ;;
|
||||
+ \-*) ;;
|
||||
+ *) break;;
|
||||
+ esac
|
||||
+ done
|
||||
+ func_cc_basename_result=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"`
|
||||
+ case $func_cc_basename_result in
|
||||
+ nagfor*) ;;
|
||||
+ *) $cc_temp -V 2>&1 | $GREP '^NAG Fortran Compiler Release' >/dev/null 2>&1 && func_cc_basename_result='nagfor-wrapper' ;;
|
||||
+ esac
|
||||
+}
|
||||
+
|
||||
|
||||
# func_dirname_and_basename file append nondir_replacement
|
||||
# perform func_basename and func_dirname in a single function
|
||||
@@ -6422,6 +6440,13 @@ func_mode_link ()
|
||||
# Convert "-framework foo" to "foo.ltframework"
|
||||
if test -n "$inherited_linker_flags"; then
|
||||
tmp_inherited_linker_flags=`$ECHO "$inherited_linker_flags" | $SED 's/-framework \([^ $]*\)/\1.ltframework/g'`
|
||||
+
|
||||
+ # Additionally convert " -pthread" to " -Wl,-pthread" for nagfor
|
||||
+ func_cc_basename $CC
|
||||
+ case $func_cc_basename_result in
|
||||
+ nagfor*) tmp_inherited_linker_flags=`$ECHO "$tmp_inherited_linker_flags" | $SED 's/ -pthread/ -Wl,-pthread/g'` ;;
|
||||
+ esac
|
||||
+
|
||||
for tmp_inherited_linker_flag in $tmp_inherited_linker_flags; do
|
||||
case " $new_inherited_linker_flags " in
|
||||
*" $tmp_inherited_linker_flag "*) ;;
|
||||
@@ -8007,6 +8032,14 @@ EOF
|
||||
;;
|
||||
esac
|
||||
|
||||
+ # Time to revert the changes made for nagfor.
|
||||
+
|
||||
+ func_cc_basename $CC
|
||||
+ case $func_cc_basename_result in
|
||||
+ nagfor*)
|
||||
+ new_inherited_linker_flags=`$ECHO " $new_inherited_linker_flags" | $SED 's% -Wl,-pthread% -pthread%g'` ;;
|
||||
+ esac
|
||||
+
|
||||
# move library search paths that coincide with paths to not yet
|
||||
# installed libraries to the beginning of the library search list
|
||||
new_libs=
|
||||
@@ -0,0 +1,96 @@
|
||||
--- a/configure
|
||||
+++ b/configure
|
||||
@@ -9034,6 +9034,12 @@ func_cc_basename ()
|
||||
esac
|
||||
done
|
||||
func_cc_basename_result=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"`
|
||||
+
|
||||
+ # Set result to 'nagfor-wrapper' when NAG compiler is called via a wrapper (e.g. mpif90).
|
||||
+ case $func_cc_basename_result in
|
||||
+ nagfor*) ;;
|
||||
+ *) $cc_temp -V 2>&1 | $GREP '^NAG Fortran Compiler Release' >/dev/null 2>&1 && func_cc_basename_result='nagfor-wrapper' ;;
|
||||
+ esac
|
||||
}
|
||||
|
||||
# Check whether --enable-libtool-lock was given.
|
||||
@@ -11811,6 +11817,8 @@ _LT_EOF
|
||||
whole_archive_flag_spec=
|
||||
tmp_sharedflag='--shared' ;;
|
||||
nagfor*) # NAGFOR 5.3
|
||||
+ whole_archive_flag_spec='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive'
|
||||
+ compiler_needs_object=yes
|
||||
tmp_sharedflag='-Wl,-shared' ;;
|
||||
xl[cC]* | bgxl[cC]* | mpixl[cC]*) # IBM XL C 8.0 on PPC (deal with xlf below)
|
||||
tmp_sharedflag='-qmkshrobj'
|
||||
@@ -15663,6 +15671,8 @@ _LT_EOF
|
||||
whole_archive_flag_spec_F77=
|
||||
tmp_sharedflag='--shared' ;;
|
||||
nagfor*) # NAGFOR 5.3
|
||||
+ whole_archive_flag_spec_F77='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive'
|
||||
+ compiler_needs_object_F77=yes
|
||||
tmp_sharedflag='-Wl,-shared' ;;
|
||||
xl[cC]* | bgxl[cC]* | mpixl[cC]*) # IBM XL C 8.0 on PPC (deal with xlf below)
|
||||
tmp_sharedflag='-qmkshrobj'
|
||||
@@ -18788,6 +18798,8 @@ _LT_EOF
|
||||
whole_archive_flag_spec_FC=
|
||||
tmp_sharedflag='--shared' ;;
|
||||
nagfor*) # NAGFOR 5.3
|
||||
+ whole_archive_flag_spec_FC='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive'
|
||||
+ compiler_needs_object_FC=yes
|
||||
tmp_sharedflag='-Wl,-shared' ;;
|
||||
xl[cC]* | bgxl[cC]* | mpixl[cC]*) # IBM XL C 8.0 on PPC (deal with xlf below)
|
||||
tmp_sharedflag='-qmkshrobj'
|
||||
@@ -26086,6 +26098,12 @@ func_cc_basename ()
|
||||
esac
|
||||
done
|
||||
func_cc_basename_result=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"`
|
||||
+
|
||||
+ # Set result to 'nagfor-wrapper' when NAG compiler is called via a wrapper (e.g. mpif90).
|
||||
+ case $func_cc_basename_result in
|
||||
+ nagfor*) ;;
|
||||
+ *) $cc_temp -V 2>&1 | $GREP '^NAG Fortran Compiler Release' >/dev/null 2>&1 && func_cc_basename_result='nagfor-wrapper' ;;
|
||||
+ esac
|
||||
}
|
||||
|
||||
|
||||
--- a/ltmain.sh
|
||||
+++ b/ltmain.sh
|
||||
@@ -7868,6 +7868,13 @@ func_mode_link ()
|
||||
# Convert "-framework foo" to "foo.ltframework"
|
||||
if test -n "$inherited_linker_flags"; then
|
||||
tmp_inherited_linker_flags=`$ECHO "$inherited_linker_flags" | $SED 's/-framework \([^ $]*\)/\1.ltframework/g'`
|
||||
+
|
||||
+ # Additionally convert " -pthread" to " -Wl,-pthread" for nagfor
|
||||
+ func_cc_basename $CC
|
||||
+ case $func_cc_basename_result in
|
||||
+ nagfor*) tmp_inherited_linker_flags=`$ECHO "$tmp_inherited_linker_flags" | $SED 's/ -pthread/ -Wl,-pthread/g'` ;;
|
||||
+ esac
|
||||
+
|
||||
for tmp_inherited_linker_flag in $tmp_inherited_linker_flags; do
|
||||
case " $new_inherited_linker_flags " in
|
||||
*" $tmp_inherited_linker_flag "*) ;;
|
||||
@@ -8890,7 +8897,8 @@ func_mode_link ()
|
||||
xlcverstring="$wl-compatibility_version $wl$minor_current $wl-current_version $wl$minor_current.$revision"
|
||||
verstring="-compatibility_version $minor_current -current_version $minor_current.$revision"
|
||||
# On Darwin other compilers
|
||||
- case $CC in
|
||||
+ func_cc_basename $CC
|
||||
+ case $func_cc_basename_result in
|
||||
nagfor*)
|
||||
verstring="$wl-compatibility_version $wl$minor_current $wl-current_version $wl$minor_current.$revision"
|
||||
;;
|
||||
@@ -9502,6 +9510,14 @@ EOF
|
||||
;;
|
||||
esac
|
||||
|
||||
+ # Time to revert the changes made for nagfor.
|
||||
+
|
||||
+ func_cc_basename $CC
|
||||
+ case $func_cc_basename_result in
|
||||
+ nagfor*)
|
||||
+ new_inherited_linker_flags=`$ECHO " $new_inherited_linker_flags" | $SED 's% -Wl,-pthread% -pthread%g'` ;;
|
||||
+ esac
|
||||
+
|
||||
# move library search paths that coincide with paths to not yet
|
||||
# installed libraries to the beginning of the library search list
|
||||
new_libs=
|
||||
@@ -37,6 +37,14 @@ class NetcdfFortran(AutotoolsPackage):
|
||||
depends_on("netcdf-c@4.7.4:", when="@4.5.3:") # nc_def_var_szip required
|
||||
depends_on("doxygen", when="+doc", type="build")
|
||||
|
||||
# The default libtool.m4 is too old to handle NAG compiler properly:
|
||||
# https://github.com/Unidata/netcdf-fortran/issues/94
|
||||
# Moreover, Libtool can't handle '-pthread' flag coming from libcurl,
|
||||
# doesn't inject convenience libraries into the shared ones, and is unable
|
||||
# to detect NAG when it is called with an MPI wrapper.
|
||||
patch("nag_libtool_2.4.2.patch", when="@:4.4.4%nag")
|
||||
patch("nag_libtool_2.4.6.patch", when="@4.4.5:%nag")
|
||||
|
||||
# Enable 'make check' for NAG, which is too strict.
|
||||
patch("nag_testing.patch", when="@4.4.5%nag")
|
||||
|
||||
@@ -128,6 +136,54 @@ def configure_args(self):
|
||||
|
||||
return config_args
|
||||
|
||||
@run_after("configure")
|
||||
def patch_libtool(self):
|
||||
"""AOCC support for NETCDF-F"""
|
||||
if "%aocc" in self.spec:
|
||||
# Libtool does not fully support the compiler toolchain, therefore
|
||||
# we have to patch the script. The C compiler normally gets
|
||||
# configured correctly, the variables of interest in the
|
||||
# 'BEGIN LIBTOOL CONFIG' section are set to non-empty values and,
|
||||
# therefore, are not affected by the replacements below. A more
|
||||
# robust solution would be to extend the filter_file function with
|
||||
# an additional argument start_at and perform the replacements
|
||||
# between the '# ### BEGIN LIBTOOL TAG CONFIG: FC' and
|
||||
# '# ### END LIBTOOL TAG CONFIG: FC' markers for the Fortran
|
||||
# compiler, and between the '# ### BEGIN LIBTOOL TAG CONFIG: F77'
|
||||
# and '# ### END LIBTOOL TAG CONFIG: F77' markers for the Fortran 77
|
||||
# compiler.
|
||||
|
||||
# How to pass a linker flag through the compiler:
|
||||
filter_file(r'^wl=""$', 'wl="{0}"'.format(self.compiler.linker_arg), "libtool")
|
||||
|
||||
# Additional compiler flags for building library objects (we need
|
||||
# this to enable shared libraries when building with ~pic). Note
|
||||
# that the following will set fc_pic_flag for both FC and F77, which
|
||||
# in the case of AOCC, should not be a problem. If it is, the
|
||||
# aforementioned modification of the filter_file function could be
|
||||
# a solution.
|
||||
filter_file(
|
||||
r'^pic_flag=""$', 'pic_flag=" {0}"'.format(self.compiler.fc_pic_flag), "libtool"
|
||||
)
|
||||
|
||||
# The following is supposed to tell the compiler to use the GNU
|
||||
# linker. However, the replacement does not happen (at least for
|
||||
# NetCDF-Fortran 4.5.3) because the replaced substring (i.e. the
|
||||
# first argument passed to the filter_file function) is not present
|
||||
# in the file. The flag should probably be added to 'ldflags' in the
|
||||
# flag_handler method above (another option is to add the flag to
|
||||
# 'ldflags' in compilers.yaml automatically as it was done for other
|
||||
# flags in https://github.com/spack/spack/pull/22219).
|
||||
filter_file(
|
||||
r"\${wl}-soname \$wl\$soname",
|
||||
r"-fuse-ld=ld -Wl,-soname,\$soname",
|
||||
"libtool",
|
||||
string=True,
|
||||
)
|
||||
|
||||
# TODO: resolve the NAG-related issues in a similar way: remove the
|
||||
# respective patch files and tune the generated libtool script instead.
|
||||
|
||||
@when("@:4.4.5")
|
||||
def check(self):
|
||||
with working_dir(self.build_directory):
|
||||
|
||||
@@ -89,7 +89,7 @@ class Octave(AutotoolsPackage, GNUMirrorPackage):
|
||||
# Optional dependencies
|
||||
depends_on("arpack-ng", when="+arpack")
|
||||
depends_on("curl", when="+curl")
|
||||
depends_on("fftw-api@3", when="+fftw")
|
||||
depends_on("fftw", when="+fftw")
|
||||
depends_on("fltk", when="+fltk")
|
||||
depends_on("fontconfig", when="+fontconfig")
|
||||
depends_on("freetype", when="+freetype")
|
||||
@@ -222,13 +222,12 @@ def configure_args(self):
|
||||
config_args.append("--without-curl")
|
||||
|
||||
if "+fftw" in spec:
|
||||
fftw_string = "fftw-api"
|
||||
config_args.extend(
|
||||
[
|
||||
"--with-fftw3-includedir=%s" % spec[fftw_string].prefix.include,
|
||||
"--with-fftw3-libdir=%s" % spec[fftw_string].prefix.lib,
|
||||
"--with-fftw3f-includedir=%s" % spec[fftw_string].prefix.include,
|
||||
"--with-fftw3f-libdir=%s" % spec[fftw_string].prefix.lib,
|
||||
"--with-fftw3-includedir=%s" % spec["fftw"].prefix.include,
|
||||
"--with-fftw3-libdir=%s" % spec["fftw"].prefix.lib,
|
||||
"--with-fftw3f-includedir=%s" % spec["fftw"].prefix.include,
|
||||
"--with-fftw3f-libdir=%s" % spec["fftw"].prefix.lib,
|
||||
]
|
||||
)
|
||||
else:
|
||||
|
||||
@@ -0,0 +1,49 @@
|
||||
--- a/config/ltmain.sh
|
||||
+++ b/config/ltmain.sh
|
||||
@@ -7860,14 +7860,15 @@ func_mode_link ()
|
||||
func_source "$lib"
|
||||
|
||||
# Convert "-framework foo" to "foo.ltframework"
|
||||
- # and "-pthread" to "-Wl,-pthread" if NAG compiler
|
||||
if test -n "$inherited_linker_flags"; then
|
||||
- case "$CC" in
|
||||
- nagfor*)
|
||||
- tmp_inherited_linker_flags=`$ECHO "$inherited_linker_flags" | $SED 's/-framework \([^ $]*\)/\1.ltframework/g' | $SED 's/-pthread/-Wl,-pthread'`;;
|
||||
- *)
|
||||
- tmp_inherited_linker_flags=`$ECHO "$inherited_linker_flags" | $SED 's/-framework \([^ $]*\)/\1.ltframework/g'`;;
|
||||
- esac
|
||||
+ tmp_inherited_linker_flags=`$ECHO "$inherited_linker_flags" | $SED 's/-framework \([^ $]*\)/\1.ltframework/g'`
|
||||
+
|
||||
+ # Additionally convert " -pthread" to " -Wl,-pthread" for nagfor
|
||||
+ func_cc_basename $CC
|
||||
+ case $func_cc_basename_result in
|
||||
+ nagfor*) tmp_inherited_linker_flags=`$ECHO "$tmp_inherited_linker_flags" | $SED 's/ -pthread/ -Wl,-pthread/g'` ;;
|
||||
+ esac
|
||||
+
|
||||
for tmp_inherited_linker_flag in $tmp_inherited_linker_flags; do
|
||||
case " $new_inherited_linker_flags " in
|
||||
*" $tmp_inherited_linker_flag "*) ;;
|
||||
@@ -8887,7 +8888,8 @@ func_mode_link ()
|
||||
xlcverstring="$wl-compatibility_version $wl$minor_current $wl-current_version $wl$minor_current.$revision"
|
||||
verstring="-compatibility_version $minor_current -current_version $minor_current.$revision"
|
||||
# On Darwin other compilers
|
||||
- case $CC in
|
||||
+ func_cc_basename $CC
|
||||
+ case $func_cc_basename_result in
|
||||
nagfor*)
|
||||
verstring="$wl-compatibility_version $wl$minor_current $wl-current_version $wl$minor_current.$revision"
|
||||
;;
|
||||
@@ -9499,6 +9501,13 @@ EOF
|
||||
;;
|
||||
esac
|
||||
|
||||
+ # Time to revert the changes made for nagfor.
|
||||
+ func_cc_basename $CC
|
||||
+ case $func_cc_basename_result in
|
||||
+ nagfor*)
|
||||
+ new_inherited_linker_flags=`$ECHO " $new_inherited_linker_flags" | $SED 's% -Wl,-pthread% -pthread%g'` ;;
|
||||
+ esac
|
||||
+
|
||||
# move library search paths that coincide with paths to not yet
|
||||
# installed libraries to the beginning of the library search list
|
||||
new_libs=
|
||||
@@ -0,0 +1,40 @@
|
||||
--- a/config/ltmain.sh
|
||||
+++ b/config/ltmain.sh
|
||||
@@ -7862,6 +7862,13 @@ func_mode_link ()
|
||||
# Convert "-framework foo" to "foo.ltframework"
|
||||
if test -n "$inherited_linker_flags"; then
|
||||
tmp_inherited_linker_flags=`$ECHO "$inherited_linker_flags" | $SED 's/-framework \([^ $]*\)/\1.ltframework/g'`
|
||||
+
|
||||
+ # Additionally convert " -pthread" to " -Wl,-pthread" for nagfor
|
||||
+ func_cc_basename $CC
|
||||
+ case $func_cc_basename_result in
|
||||
+ nagfor*) tmp_inherited_linker_flags=`$ECHO "$tmp_inherited_linker_flags" | $SED 's/ -pthread/ -Wl,-pthread/g'` ;;
|
||||
+ esac
|
||||
+
|
||||
for tmp_inherited_linker_flag in $tmp_inherited_linker_flags; do
|
||||
case " $new_inherited_linker_flags " in
|
||||
*" $tmp_inherited_linker_flag "*) ;;
|
||||
@@ -8881,7 +8888,8 @@ func_mode_link ()
|
||||
xlcverstring="$wl-compatibility_version $wl$minor_current $wl-current_version $wl$minor_current.$revision"
|
||||
verstring="-compatibility_version $minor_current -current_version $minor_current.$revision"
|
||||
# On Darwin other compilers
|
||||
- case $CC in
|
||||
+ func_cc_basename $CC
|
||||
+ case $func_cc_basename_result in
|
||||
nagfor*)
|
||||
verstring="$wl-compatibility_version $wl$minor_current $wl-current_version $wl$minor_current.$revision"
|
||||
;;
|
||||
@@ -9493,6 +9501,13 @@ EOF
|
||||
;;
|
||||
esac
|
||||
|
||||
+ # Time to revert the changes made for nagfor.
|
||||
+ func_cc_basename $CC
|
||||
+ case $func_cc_basename_result in
|
||||
+ nagfor*)
|
||||
+ new_inherited_linker_flags=`$ECHO " $new_inherited_linker_flags" | $SED 's% -Wl,-pthread% -pthread%g'` ;;
|
||||
+ esac
|
||||
+
|
||||
# move library search paths that coincide with paths to not yet
|
||||
# installed libraries to the beginning of the library search list
|
||||
new_libs=
|
||||
@@ -0,0 +1,49 @@
|
||||
--- a/config/ltmain.sh
|
||||
+++ b/config/ltmain.sh
|
||||
@@ -7860,14 +7860,15 @@ func_mode_link ()
|
||||
func_source "$lib"
|
||||
|
||||
# Convert "-framework foo" to "foo.ltframework"
|
||||
- # and "-pthread" to "-Wl,-pthread" if NAG compiler
|
||||
if test -n "$inherited_linker_flags"; then
|
||||
- case "$CC" in
|
||||
- nagfor*)
|
||||
- tmp_inherited_linker_flags=`$ECHO "$inherited_linker_flags" | $SED 's/-framework \([^ $]*\)/\1.ltframework/g' | $SED 's/-pthread/-Wl,-pthread/g'`;;
|
||||
- *)
|
||||
- tmp_inherited_linker_flags=`$ECHO "$inherited_linker_flags" | $SED 's/-framework \([^ $]*\)/\1.ltframework/g'`;;
|
||||
- esac
|
||||
+ tmp_inherited_linker_flags=`$ECHO "$inherited_linker_flags" | $SED 's/-framework \([^ $]*\)/\1.ltframework/g'`
|
||||
+
|
||||
+ # Additionally convert " -pthread" to " -Wl,-pthread" for nagfor
|
||||
+ func_cc_basename $CC
|
||||
+ case $func_cc_basename_result in
|
||||
+ nagfor*) tmp_inherited_linker_flags=`$ECHO "$tmp_inherited_linker_flags" | $SED 's/ -pthread/ -Wl,-pthread/g'` ;;
|
||||
+ esac
|
||||
+
|
||||
for tmp_inherited_linker_flag in $tmp_inherited_linker_flags; do
|
||||
case " $new_inherited_linker_flags " in
|
||||
*" $tmp_inherited_linker_flag "*) ;;
|
||||
@@ -8887,7 +8888,8 @@ func_mode_link ()
|
||||
xlcverstring="$wl-compatibility_version $wl$minor_current $wl-current_version $wl$minor_current.$revision"
|
||||
verstring="-compatibility_version $minor_current -current_version $minor_current.$revision"
|
||||
# On Darwin other compilers
|
||||
- case $CC in
|
||||
+ func_cc_basename $CC
|
||||
+ case $func_cc_basename_result in
|
||||
nagfor*)
|
||||
verstring="$wl-compatibility_version $wl$minor_current $wl-current_version $wl$minor_current.$revision"
|
||||
;;
|
||||
@@ -9499,6 +9501,13 @@ EOF
|
||||
;;
|
||||
esac
|
||||
|
||||
+ # Time to revert the changes made for nagfor.
|
||||
+ func_cc_basename $CC
|
||||
+ case $func_cc_basename_result in
|
||||
+ nagfor*)
|
||||
+ new_inherited_linker_flags=`$ECHO " $new_inherited_linker_flags" | $SED 's% -Wl,-pthread% -pthread%g'` ;;
|
||||
+ esac
|
||||
+
|
||||
# move library search paths that coincide with paths to not yet
|
||||
# installed libraries to the beginning of the library search list
|
||||
new_libs=
|
||||
@@ -0,0 +1,49 @@
|
||||
--- a/config/ltmain.sh
|
||||
+++ b/config/ltmain.sh
|
||||
@@ -7860,14 +7860,15 @@ func_mode_link ()
|
||||
func_source "$lib"
|
||||
|
||||
# Convert "-framework foo" to "foo.ltframework"
|
||||
- # and "-pthread" to "-Wl,-pthread" if NAG compiler
|
||||
if test -n "$inherited_linker_flags"; then
|
||||
- case "$CC" in
|
||||
- *nagfor*)
|
||||
- tmp_inherited_linker_flags=`$ECHO "$inherited_linker_flags" | $SED 's/-framework \([^ $]*\)/\1.ltframework/g' | $SED 's/-pthread/-Wl,-pthread/g'`;;
|
||||
- *)
|
||||
- tmp_inherited_linker_flags=`$ECHO "$inherited_linker_flags" | $SED 's/-framework \([^ $]*\)/\1.ltframework/g'`;;
|
||||
- esac
|
||||
+ tmp_inherited_linker_flags=`$ECHO "$inherited_linker_flags" | $SED 's/-framework \([^ $]*\)/\1.ltframework/g'`
|
||||
+
|
||||
+ # Additionally convert " -pthread" to " -Wl,-pthread" for nagfor
|
||||
+ func_cc_basename $CC
|
||||
+ case $func_cc_basename_result in
|
||||
+ nagfor*) tmp_inherited_linker_flags=`$ECHO "$tmp_inherited_linker_flags" | $SED 's/ -pthread/ -Wl,-pthread/g'` ;;
|
||||
+ esac
|
||||
+
|
||||
for tmp_inherited_linker_flag in $tmp_inherited_linker_flags; do
|
||||
case " $new_inherited_linker_flags " in
|
||||
*" $tmp_inherited_linker_flag "*) ;;
|
||||
@@ -8887,7 +8888,8 @@ func_mode_link ()
|
||||
xlcverstring="$wl-compatibility_version $wl$minor_current $wl-current_version $wl$minor_current.$revision"
|
||||
verstring="-compatibility_version $minor_current -current_version $minor_current.$revision"
|
||||
# On Darwin other compilers
|
||||
- case $CC in
|
||||
+ func_cc_basename $CC
|
||||
+ case $func_cc_basename_result in
|
||||
nagfor*)
|
||||
verstring="$wl-compatibility_version $wl$minor_current $wl-current_version $wl$minor_current.$revision"
|
||||
;;
|
||||
@@ -9499,6 +9501,13 @@ EOF
|
||||
;;
|
||||
esac
|
||||
|
||||
+ # Time to revert the changes made for nagfor.
|
||||
+ func_cc_basename $CC
|
||||
+ case $func_cc_basename_result in
|
||||
+ nagfor*)
|
||||
+ new_inherited_linker_flags=`$ECHO " $new_inherited_linker_flags" | $SED 's% -Wl,-pthread% -pthread%g'` ;;
|
||||
+ esac
|
||||
+
|
||||
# move library search paths that coincide with paths to not yet
|
||||
# installed libraries to the beginning of the library search list
|
||||
new_libs=
|
||||
@@ -382,6 +382,14 @@ class Openmpi(AutotoolsPackage, CudaPackage):
|
||||
patch("btl_vader.patch", when="@3.0.1:3.0.2")
|
||||
patch("btl_vader.patch", when="@3.1.0:3.1.2")
|
||||
|
||||
# Make NAG compiler pass the -pthread option to the linker:
|
||||
# https://github.com/open-mpi/ompi/pull/6378
|
||||
# We support only versions based on Libtool 2.4.6.
|
||||
patch("nag_pthread/2.1.4_2.1.999_3.0.1_4.patch", when="@2.1.4:2.1,3.0.1:4%nag")
|
||||
patch("nag_pthread/2.1.2_2.1.3_3.0.0.patch", when="@2.1.2:2.1.3,3.0.0%nag")
|
||||
patch("nag_pthread/2.0.0_2.1.1.patch", when="@2.0.0:2.1.1%nag")
|
||||
patch("nag_pthread/1.10.4_1.10.999.patch", when="@1.10.4:1.10%nag")
|
||||
|
||||
# Fix MPI_Sizeof() in the "mpi" Fortran module for compilers that do not
|
||||
# support "IGNORE TKR" functionality (e.g. NAG).
|
||||
# The issue has been resolved upstream in two steps:
|
||||
|
||||
@@ -0,0 +1,10 @@
|
||||
--- a/m4/libtool.m4
|
||||
+++ b/m4/libtool.m4
|
||||
@@ -5282,7 +5282,6 @@ _LT_EOF
|
||||
tmp_sharedflag='-shared'
|
||||
case $cc_basename,$host_cpu in
|
||||
pgcc*) # Portland Group C compiler
|
||||
- _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive'
|
||||
tmp_addflag=' $pic_flag'
|
||||
;;
|
||||
pgf77* | pgf90* | pgf95* | pgfortran*)
|
||||
@@ -0,0 +1,26 @@
|
||||
--- a/configure
|
||||
+++ b/configure
|
||||
@@ -11858,7 +11858,6 @@ _LT_EOF
|
||||
tmp_sharedflag='-shared'
|
||||
case $cc_basename,$host_cpu in
|
||||
pgcc*) # Portland Group C compiler
|
||||
- whole_archive_flag_spec='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive'
|
||||
tmp_addflag=' $pic_flag'
|
||||
;;
|
||||
pgf77* | pgf90* | pgf95* | pgfortran*)
|
||||
@@ -21326,7 +21325,6 @@ _LT_EOF
|
||||
tmp_sharedflag='-shared'
|
||||
case $cc_basename,$host_cpu in
|
||||
pgcc*) # Portland Group C compiler
|
||||
- whole_archive_flag_spec_F77='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive'
|
||||
tmp_addflag=' $pic_flag'
|
||||
;;
|
||||
pgf77* | pgf90* | pgf95* | pgfortran*)
|
||||
@@ -25066,7 +25064,6 @@ _LT_EOF
|
||||
tmp_sharedflag='-shared'
|
||||
case $cc_basename,$host_cpu in
|
||||
pgcc*) # Portland Group C compiler
|
||||
- whole_archive_flag_spec_FC='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive'
|
||||
tmp_addflag=' $pic_flag'
|
||||
;;
|
||||
pgf77* | pgf90* | pgf95* | pgfortran*)
|
||||
@@ -0,0 +1,69 @@
|
||||
--- a/configure
|
||||
+++ b/configure
|
||||
@@ -11745,6 +11745,8 @@ _LT_EOF
|
||||
whole_archive_flag_spec=
|
||||
tmp_sharedflag='--shared' ;;
|
||||
nagfor*) # NAGFOR 5.3
|
||||
+ whole_archive_flag_spec='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive'
|
||||
+ compiler_needs_object=yes
|
||||
tmp_sharedflag='-Wl,-shared' ;;
|
||||
xl[cC]* | bgxl[cC]* | mpixl[cC]*) # IBM XL C 8.0 on PPC (deal with xlf below)
|
||||
tmp_sharedflag='-qmkshrobj'
|
||||
@@ -21030,6 +21032,8 @@ _LT_EOF
|
||||
whole_archive_flag_spec_F77=
|
||||
tmp_sharedflag='--shared' ;;
|
||||
nagfor*) # NAGFOR 5.3
|
||||
+ whole_archive_flag_spec_F77='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive'
|
||||
+ compiler_needs_object_F77=yes
|
||||
tmp_sharedflag='-Wl,-shared' ;;
|
||||
xl[cC]* | bgxl[cC]* | mpixl[cC]*) # IBM XL C 8.0 on PPC (deal with xlf below)
|
||||
tmp_sharedflag='-qmkshrobj'
|
||||
@@ -24765,6 +24769,8 @@ _LT_EOF
|
||||
whole_archive_flag_spec_FC=
|
||||
tmp_sharedflag='--shared' ;;
|
||||
nagfor*) # NAGFOR 5.3
|
||||
+ whole_archive_flag_spec_FC='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive'
|
||||
+ compiler_needs_object_FC=yes
|
||||
tmp_sharedflag='-Wl,-shared' ;;
|
||||
xl[cC]* | bgxl[cC]* | mpixl[cC]*) # IBM XL C 8.0 on PPC (deal with xlf below)
|
||||
tmp_sharedflag='-qmkshrobj'
|
||||
--- a/scripts/ltmain.sh
|
||||
+++ b/scripts/ltmain.sh
|
||||
@@ -7862,6 +7862,13 @@ func_mode_link ()
|
||||
# Convert "-framework foo" to "foo.ltframework"
|
||||
if test -n "$inherited_linker_flags"; then
|
||||
tmp_inherited_linker_flags=`$ECHO "$inherited_linker_flags" | $SED 's/-framework \([^ $]*\)/\1.ltframework/g'`
|
||||
+
|
||||
+ # Additionally convert " -pthread" to " -Wl,-pthread" for nagfor
|
||||
+ func_cc_basename $CC
|
||||
+ case $func_cc_basename_result in
|
||||
+ nagfor*) tmp_inherited_linker_flags=`$ECHO "$tmp_inherited_linker_flags" | $SED 's/ -pthread/ -Wl,-pthread/g'` ;;
|
||||
+ esac
|
||||
+
|
||||
for tmp_inherited_linker_flag in $tmp_inherited_linker_flags; do
|
||||
case " $new_inherited_linker_flags " in
|
||||
*" $tmp_inherited_linker_flag "*) ;;
|
||||
@@ -8881,7 +8888,8 @@ func_mode_link ()
|
||||
xlcverstring="$wl-compatibility_version $wl$minor_current $wl-current_version $wl$minor_current.$revision"
|
||||
verstring="-compatibility_version $minor_current -current_version $minor_current.$revision"
|
||||
# On Darwin other compilers
|
||||
- case $CC in
|
||||
+ func_cc_basename $CC
|
||||
+ case $func_cc_basename_result in
|
||||
nagfor*)
|
||||
verstring="$wl-compatibility_version $wl$minor_current $wl-current_version $wl$minor_current.$revision"
|
||||
;;
|
||||
@@ -9493,6 +9501,13 @@ EOF
|
||||
;;
|
||||
esac
|
||||
|
||||
+ # Time to revert the changes made for nagfor.
|
||||
+ func_cc_basename $CC
|
||||
+ case $func_cc_basename_result in
|
||||
+ nagfor*)
|
||||
+ new_inherited_linker_flags=`$ECHO " $new_inherited_linker_flags" | $SED 's% -Wl,-pthread% -pthread%g'` ;;
|
||||
+ esac
|
||||
+
|
||||
# move library search paths that coincide with paths to not yet
|
||||
# installed libraries to the beginning of the library search list
|
||||
new_libs=
|
||||
@@ -79,6 +79,23 @@ def url_for_version(self, version):
|
||||
# (see below).
|
||||
conflicts("+shared", when="@:1.9%nag+fortran")
|
||||
|
||||
# https://github.com/Parallel-NetCDF/PnetCDF/pull/59
|
||||
patch("nag_libtool.patch", when="@1.9:1.12.1%nag")
|
||||
|
||||
# We could apply the patch unconditionally. However, it fixes a problem
|
||||
# that manifests itself only when we build shared libraries with Spack on
|
||||
# a Cray system with PGI compiler. Based on the name of the $CC executable,
|
||||
# Libtool "thinks" that it works with PGI compiler directly but on a Cray
|
||||
# system it actually works with the Cray's wrapper. PGI compiler (at least
|
||||
# since the version 15.7) "understands" two formats of the
|
||||
# '--whole-archive' argument. Unluckily, Cray's wrapper "understands" only
|
||||
# one of them but Libtool switches to another one. The following patch
|
||||
# discards the switching.
|
||||
patch("cray_pgi_libtool_release.patch", when="@1.8:999%pgi+shared platform=cray")
|
||||
# Given that the bug manifests itself in rather specific conditions, it is
|
||||
# not reported upstream.
|
||||
patch("cray_pgi_libtool_master.patch", when="@master%pgi+shared platform=cray")
|
||||
|
||||
@property
|
||||
def libs(self):
|
||||
libraries = ["libpnetcdf"]
|
||||
|
||||
@@ -1,26 +0,0 @@
|
||||
# Copyright 2013-2023 Lawrence Livermore National Security, LLC and other
|
||||
# Spack Project Developers. See the top-level COPYRIGHT file for details.
|
||||
#
|
||||
# SPDX-License-Identifier: (Apache-2.0 OR MIT)
|
||||
|
||||
from spack.package import *
|
||||
|
||||
|
||||
class PyFortls(PythonPackage):
|
||||
"""A Language Server for Fortran providing code completion, diagnostics, hovering and more."""
|
||||
|
||||
homepage = "https://fortls.fortran-lang.org"
|
||||
pypi = "fortls/fortls-2.13.0.tar.gz"
|
||||
|
||||
maintainers("RMeli")
|
||||
|
||||
version("2.13.0", sha256="23c5013e8dd8e1d65bf07be610d0827bc48aa7331a7a7ce13612d4c646d0db31")
|
||||
|
||||
depends_on("py-setuptools@45:", type="build")
|
||||
depends_on("py-packaging", type=("build", "run"))
|
||||
depends_on("py-setuptools-scm@6.2:+toml", type="build")
|
||||
depends_on("py-setuptools-scm-git-archive", type="build")
|
||||
|
||||
depends_on("py-json5", type=("build", "run"))
|
||||
depends_on("py-importlib-metadata", type=("build", "run"), when="^python@:3.7")
|
||||
depends_on("py-typing-extensions", type=("build", "run"), when="^python@:3.7")
|
||||
@@ -37,7 +37,6 @@ class PyMatplotlib(PythonPackage):
|
||||
"pylab",
|
||||
]
|
||||
|
||||
version("3.7.0", sha256="8f6efd313430d7ef70a38a3276281cb2e8646b3a22b3b21eb227da20e15e6813")
|
||||
version("3.6.3", sha256="1f4d69707b1677560cd952544ee4962f68ff07952fb9069ff8c12b56353cb8c9")
|
||||
version("3.6.2", sha256="b03fd10a1709d0101c054883b550f7c4c5e974f751e2680318759af005964990")
|
||||
version("3.6.1", sha256="e2d1b7225666f7e1bcc94c0bc9c587a82e3e8691da4757e357e5c2515222ee37")
|
||||
@@ -139,12 +138,16 @@ class PyMatplotlib(PythonPackage):
|
||||
# https://matplotlib.org/stable/devel/dependencies.html
|
||||
# Runtime dependencies
|
||||
# Mandatory dependencies
|
||||
extends("python", ignore=r"bin/nosetests.*$|bin/pbr$")
|
||||
depends_on("python@3.8:", when="@3.6:", type=("build", "link", "run"))
|
||||
depends_on("python@3.7:", when="@3.4:", type=("build", "link", "run"))
|
||||
depends_on("python@3.6:", when="@3.1:", type=("build", "link", "run"))
|
||||
depends_on("python@3.5:", when="@3:", type=("build", "link", "run"))
|
||||
depends_on("python@2.7:2.8,3.4:", when="@:2", type=("build", "link", "run"))
|
||||
depends_on("py-contourpy@1.0.1:", when="@3.6:", type=("build", "run"))
|
||||
depends_on("py-cycler@0.10:", type=("build", "run"))
|
||||
depends_on("py-fonttools@4.22:", when="@3.5:", type=("build", "run"))
|
||||
depends_on("py-kiwisolver@1.0.1:", type=("build", "run"), when="@2.2.0:")
|
||||
depends_on("py-numpy@1.20:", when="@3.7:", type=("build", "run"))
|
||||
depends_on("py-numpy@1.19:", when="@3.6:", type=("build", "run"))
|
||||
depends_on("py-numpy@1.17:", when="@3.5:", type=("build", "run"))
|
||||
depends_on("py-numpy@1.16:", when="@3.4:", type=("build", "run"))
|
||||
@@ -153,13 +156,11 @@ class PyMatplotlib(PythonPackage):
|
||||
depends_on("py-packaging@20:", when="@3.6:", type=("build", "run"))
|
||||
depends_on("py-packaging", when="@3.5:", type=("build", "run"))
|
||||
depends_on("pil@6.2:", when="@3.3:", type=("build", "run"))
|
||||
depends_on("py-pyparsing@2.3.1:", when="@3.7:", type=("build", "run"))
|
||||
depends_on("py-pyparsing@2.2.1:", when="@3.4:", type=("build", "run"))
|
||||
depends_on("py-pyparsing@2.0.3,2.0.5:2.1.1,2.1.3:2.1.5,2.1.7:", type=("build", "run"))
|
||||
depends_on("py-python-dateutil@2.7:", when="@3.4:", type=("build", "run"))
|
||||
depends_on("py-python-dateutil@2.1:", type=("build", "run"))
|
||||
depends_on("py-setuptools", type=("build", "run"))
|
||||
depends_on("py-importlib-resources@3.2:", when="@3.7: ^python@:3.9", type=("build", "run"))
|
||||
|
||||
# Historical dependencies
|
||||
depends_on("py-pytz", type=("build", "run"), when="@:2")
|
||||
@@ -224,7 +225,6 @@ class PyMatplotlib(PythonPackage):
|
||||
# Dependencies for building matplotlib
|
||||
# Setup dependencies
|
||||
depends_on("py-certifi@2020.6.20:", when="@3.3.1:", type="build")
|
||||
depends_on("py-pybind11@2.6:", when="@3.7:", type="build")
|
||||
depends_on("py-setuptools-scm@7:", when="@3.6:", type="build")
|
||||
depends_on("py-setuptools-scm@4:6", when="@3.5", type="build")
|
||||
depends_on("py-setuptools-scm-git-archive", when="@3.5", type="build")
|
||||
|
||||
@@ -14,8 +14,6 @@ class PyRadiantMlhub(PythonPackage):
|
||||
|
||||
maintainers("adamjstewart")
|
||||
|
||||
version("0.5.5", sha256="93cabc3c8e9ba343cdb3b0bfaec01bf7a36aae75704fabfe96c8bf5cab9fa899")
|
||||
version("0.5.3", sha256="f111983910e41f2ce40bf401ccf9e33b393e52cc1989f8f8b74c6b4e2bdd0127")
|
||||
version("0.5.2", sha256="d310afce962508a44c60f5738fef164c50e78f76c3e85813653824b39a189ca3")
|
||||
version("0.5.1", sha256="b7daff4a127e96e27c64eda66e393d9727e61a87c887f86738753486cc44fa46")
|
||||
version("0.5.0", sha256="fff788aaa5f8afcb0f6eabff4147eaaf7de375f0a43ecaf2238033fc3a62e2c2")
|
||||
@@ -25,9 +23,10 @@ class PyRadiantMlhub(PythonPackage):
|
||||
version("0.3.0", sha256="dd66479f12317e7bf366abe8d692841485e9497918c30ab14cd6db9e69ce3dbb")
|
||||
version("0.2.2", sha256="0d9f634b7e29c7f7294b81a10cf712ac63251949a9c5a07aa6c64c0d5b77e1ba")
|
||||
version("0.2.1", sha256="75a2f096b09a87191238fe557dc64dda8c44156351b4026c784c848c7d84b6fb")
|
||||
version("0.2.0", sha256="4a3e4c301c5e74f282bbf77b7d65db5a1d6c2a4dc6d18637eff6e1228ca2eb9d")
|
||||
|
||||
depends_on("python@3.8:", when="@0.5:", type=("build", "run"))
|
||||
depends_on("python@3.7:", when="@0.3:", type=("build", "run"))
|
||||
depends_on("python@3.6:", type=("build", "run"))
|
||||
depends_on("py-setuptools", type="build")
|
||||
depends_on("py-click@7.1.2:8", when="@0.3:", type=("build", "run"))
|
||||
depends_on("py-click@7.1.2:7.1", when="@:0.2", type=("build", "run"))
|
||||
@@ -49,7 +48,4 @@ class PyRadiantMlhub(PythonPackage):
|
||||
depends_on("py-tqdm@4.64:4", when="@0.5.0:0.5.1", type=("build", "run"))
|
||||
depends_on("py-tqdm@4.56:4", when="@0.3:0.4", type=("build", "run"))
|
||||
depends_on("py-tqdm@4.56", when="@:0.2", type=("build", "run"))
|
||||
depends_on("py-urllib3@1.26.11:1.26", when="@0.5.5:", type=("build", "run"))
|
||||
|
||||
# Historical dependencies
|
||||
depends_on("py-typing-extensions@3.7:", when="@0.4.1:0.4 ^python@:3.7", type=("build", "run"))
|
||||
|
||||
@@ -20,7 +20,6 @@ class PyRasterio(PythonPackage):
|
||||
maintainers("adamjstewart")
|
||||
|
||||
version("master", branch="master")
|
||||
version("1.3.6", sha256="c8b90eb10e16102d1ab0334a7436185f295de1c07f0d197e206d1c005fc33905")
|
||||
version("1.3.5", sha256="92358c3d4d5d6f3c7cd2812c8832d5175abce02b11bc101ac9548ff07163e8e2")
|
||||
version("1.3.4", sha256="5a8771405276ecf00b8ee927bd0a81ec21778dcfc97e4a37d0b388f10c9a41a8")
|
||||
version("1.3.3", sha256="b6fb1f12489f3a678c05ddcb78a74f0b6f63836219f51c0541e505f5e5208e7d")
|
||||
@@ -34,32 +33,32 @@ class PyRasterio(PythonPackage):
|
||||
version("1.0.24", sha256="4839479621045211f66868ec49625979693450bc2e476f23e7e8ac4804eaf452")
|
||||
version("1.0a12", sha256="47d460326e04c64590ff56952271a184a6307f814efc34fb319c12e690585f3c")
|
||||
|
||||
# From pyproject.toml
|
||||
depends_on("py-cython@0.29.29:", when="@1.3.3:", type="build")
|
||||
depends_on("py-cython@0.29.24:0.29", when="@1.3.0:1.3.2", type="build")
|
||||
|
||||
# From setup.py
|
||||
# From README.rst
|
||||
depends_on("python@3.8:", when="@1.3:", type=("build", "link", "run"))
|
||||
depends_on("python@3.6:3.9", when="@1.2", type=("build", "link", "run"))
|
||||
depends_on("python@2.7:2.8,3.5:3.8", when="@1.1", type=("build", "link", "run"))
|
||||
depends_on("python@2.7:2.8,3.5:3.7", when="@:1.0", type=("build", "link", "run"))
|
||||
depends_on("py-affine", type=("build", "run"))
|
||||
depends_on("py-attrs", type=("build", "run"))
|
||||
depends_on("py-certifi", when="@1.2:", type=("build", "run"))
|
||||
depends_on("py-click@4:", when="@1.2.4:", type=("build", "run"))
|
||||
depends_on("py-click@4:7", when="@:1.2.3", type=("build", "run"))
|
||||
depends_on("py-cligj@0.5:", type=("build", "run"))
|
||||
depends_on("py-numpy@1.18:", when="@1.3:", type=("build", "link", "run"))
|
||||
depends_on("py-numpy@1.15:", when="@1.2:", type=("build", "link", "run"))
|
||||
depends_on("py-numpy", type=("build", "link", "run"))
|
||||
depends_on("py-snuggs@1.4.1:", type=("build", "run"))
|
||||
depends_on("py-click-plugins", type=("build", "run"))
|
||||
depends_on("py-setuptools", type=("build", "run"))
|
||||
|
||||
# From README.rst and setup.py
|
||||
depends_on("gdal@3.1:", when="@1.3:")
|
||||
depends_on("gdal@2.4:3.3", when="@1.2.7:1.2")
|
||||
depends_on("gdal@2.3:3.2", when="@1.2.0:1.2.6")
|
||||
depends_on("gdal@1.11:3.2", when="@1.1.0:1.1")
|
||||
depends_on("gdal@1.11:3.0", when="@1.0.25:1.0")
|
||||
depends_on("gdal@1.11:2", when="@:1.0.24")
|
||||
|
||||
# From pyproject.toml
|
||||
depends_on("py-cython@0.29.29:", when="@1.3.3:", type="build")
|
||||
depends_on("py-cython@0.29.24:0.29", when="@1.3.0:1.3.2", type="build")
|
||||
|
||||
# From setup.py
|
||||
depends_on("py-affine", type=("build", "run"))
|
||||
depends_on("py-attrs", type=("build", "run"))
|
||||
depends_on("py-certifi", when="@1.2:", type=("build", "run"))
|
||||
depends_on("py-click@4:", when="@1.2.4:", type=("build", "run"))
|
||||
depends_on("py-click@4:7", when="@:1.2.3", type=("build", "run"))
|
||||
depends_on("py-cligj@0.5:", type=("build", "run"))
|
||||
depends_on("py-snuggs@1.4.1:", type=("build", "run"))
|
||||
depends_on("py-click-plugins", type=("build", "run"))
|
||||
depends_on("py-setuptools", type=("build", "run"))
|
||||
|
||||
@@ -14,7 +14,6 @@ class Shtools(MakefilePackage):
|
||||
|
||||
maintainers("eschnett")
|
||||
|
||||
version("4.10.1", sha256="f4fb5c86841fe80136b520d2040149eafd4bc2d49da6b914d8a843b812f20b61")
|
||||
version("4.9.1", sha256="5c22064f9daf6e9aa08cace182146993aa6b25a6ea593d92572c59f4013d53c2")
|
||||
version("4.8", sha256="c36fc86810017e544abbfb12f8ddf6f101a1ac8b89856a76d7d9801ffc8dac44")
|
||||
version("4.5", sha256="1975a2a2bcef8c527d321be08c13c2bc479e0d6b81c468a3203f95df59be4f89")
|
||||
@@ -25,12 +24,12 @@ class Shtools(MakefilePackage):
|
||||
|
||||
# The Makefile expects the "other" libtool, not the GNU libtool we have in
|
||||
# Spack
|
||||
patch("nolibtool.patch", when="@:4.9")
|
||||
patch("nolibtool.patch")
|
||||
|
||||
variant("openmp", default=True, description="Enable OpenMP support")
|
||||
|
||||
depends_on("blas")
|
||||
depends_on("fftw precision=double")
|
||||
depends_on("fftw")
|
||||
depends_on("lapack")
|
||||
depends_on("py-flake8", type="test")
|
||||
|
||||
|
||||
Reference in New Issue
Block a user