Compare commits
17 Commits
bugfix/con
...
hs/crypto/
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
b266d16b8b | ||
|
|
3194be2e92 | ||
|
|
41be2f5899 | ||
|
|
02af41ebb3 | ||
|
|
9d33c89030 | ||
|
|
51ab7bad3b | ||
|
|
0b094f2473 | ||
|
|
cd306d0bc6 | ||
|
|
fdb9cf2412 | ||
|
|
a546441d2e | ||
|
|
141cdb6810 | ||
|
|
f2ab74efe5 | ||
|
|
38b838e405 | ||
|
|
c037188b59 | ||
|
|
0835a3c5f2 | ||
|
|
38a2f9c2f2 | ||
|
|
eecd4afe58 |
@@ -1326,6 +1326,7 @@ Required:
|
||||
* Microsoft Visual Studio
|
||||
* Python
|
||||
* Git
|
||||
* 7z
|
||||
|
||||
Optional:
|
||||
* Intel Fortran (needed for some packages)
|
||||
@@ -1391,6 +1392,13 @@ as the project providing Git support on Windows. This is additionally the recomm
|
||||
for installing Git on Windows, a link to which can be found above. Spack requires the
|
||||
utilities vendored by this project.
|
||||
|
||||
"""
|
||||
7zip
|
||||
"""
|
||||
|
||||
A tool for extracting ``.xz`` files is required for extracting source tarballs. The latest 7zip
|
||||
can be located at https://sourceforge.net/projects/sevenzip/.
|
||||
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
Step 2: Install and setup Spack
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
@@ -124,8 +124,8 @@ def setup_custom_environment(self, pkg, env):
|
||||
# Edge cases for Intel's oneAPI compilers when using the legacy classic compilers:
|
||||
# Always pass flags to disable deprecation warnings, since these warnings can
|
||||
# confuse tools that parse the output of compiler commands (e.g. version checks).
|
||||
if self.real_version >= Version("2021") and self.real_version <= Version("2023"):
|
||||
if self.real_version >= Version("2021") and self.real_version < Version("2024"):
|
||||
env.append_flags("SPACK_ALWAYS_CFLAGS", "-diag-disable=10441")
|
||||
env.append_flags("SPACK_ALWAYS_CXXFLAGS", "-diag-disable=10441")
|
||||
if self.real_version >= Version("2021") and self.real_version <= Version("2024"):
|
||||
if self.real_version >= Version("2021") and self.real_version < Version("2025"):
|
||||
env.append_flags("SPACK_ALWAYS_FFLAGS", "-diag-disable=10448")
|
||||
|
||||
@@ -155,10 +155,10 @@ def setup_custom_environment(self, pkg, env):
|
||||
# icx+icpx+ifx or icx+icpx+ifort. But to be on the safe side (some users may
|
||||
# want to try to swap icpx against icpc, for example), and since the Intel LLVM
|
||||
# compilers accept these diag-disable flags, we apply them for all compilers.
|
||||
if self.real_version >= Version("2021") and self.real_version <= Version("2023"):
|
||||
if self.real_version >= Version("2021") and self.real_version < Version("2024"):
|
||||
env.append_flags("SPACK_ALWAYS_CFLAGS", "-diag-disable=10441")
|
||||
env.append_flags("SPACK_ALWAYS_CXXFLAGS", "-diag-disable=10441")
|
||||
if self.real_version >= Version("2021") and self.real_version <= Version("2024"):
|
||||
if self.real_version >= Version("2021") and self.real_version < Version("2025"):
|
||||
env.append_flags("SPACK_ALWAYS_FFLAGS", "-diag-disable=10448")
|
||||
|
||||
# 2024 release bumped the libsycl version because of an ABI
|
||||
|
||||
@@ -672,12 +672,11 @@ def set(self, path: str, value: Any, scope: Optional[str] = None) -> None:
|
||||
return
|
||||
|
||||
parts = process_config_path(path)
|
||||
section = parts[0]
|
||||
section = parts.pop(0)
|
||||
|
||||
section_data = self.get_config(section, scope=scope)
|
||||
|
||||
full_data = {section: section_data}
|
||||
data = full_data
|
||||
data = section_data
|
||||
while len(parts) > 1:
|
||||
key = parts.pop(0)
|
||||
|
||||
@@ -700,7 +699,7 @@ def set(self, path: str, value: Any, scope: Optional[str] = None) -> None:
|
||||
# update new value
|
||||
data[parts[0]] = value
|
||||
|
||||
self.update_config(section, full_data[section], scope=scope)
|
||||
self.update_config(section, section_data, scope=scope)
|
||||
|
||||
def __iter__(self):
|
||||
"""Iterate over scopes in this configuration."""
|
||||
|
||||
@@ -176,14 +176,13 @@ def _resolve_paths(candidates):
|
||||
|
||||
# Cached stage path root
|
||||
_stage_root = None
|
||||
_default_stage_config = ["$tmpdir/$user/spack-stage", "$user_cache_path/stage"]
|
||||
|
||||
|
||||
def get_stage_root():
|
||||
global _stage_root
|
||||
|
||||
if _stage_root is None:
|
||||
candidates = spack.config.get("config:build_stage", _default_stage_config)
|
||||
candidates = spack.config.get("config:build_stage")
|
||||
if isinstance(candidates, str):
|
||||
candidates = [candidates]
|
||||
|
||||
|
||||
@@ -1208,16 +1208,8 @@ def test_internal_config_list_override(mock_low_high_config, write_config_file):
|
||||
def test_set_section_override(mock_low_high_config, write_config_file):
|
||||
write_config_file("config", config_merge_list, "low")
|
||||
wanted_list = config_override_list["config"]["build_stage:"]
|
||||
|
||||
# Ensure test validity:
|
||||
assert wanted_list != mock_low_high_config.get("config:build_stage")
|
||||
|
||||
# Test both bare section with full value and section override in path
|
||||
with spack.config.override("config::build_stage", wanted_list):
|
||||
assert mock_low_high_config.get("config:build_stage") == wanted_list
|
||||
with spack.config.override("config::", {"build_stage": wanted_list}):
|
||||
assert mock_low_high_config.get("config:build_stage") == wanted_list
|
||||
|
||||
assert config_merge_list["config"]["build_stage"] == mock_low_high_config.get(
|
||||
"config:build_stage"
|
||||
)
|
||||
|
||||
@@ -754,18 +754,6 @@ def test_get_stage_root_bad_path(self, clear_stage_root):
|
||||
# Make sure the cached stage path values are unchanged.
|
||||
assert spack.stage._stage_root is None
|
||||
|
||||
def test_get_stage_root_empty(self, clear_stage_root, monkeypatch, tmpdir):
|
||||
expected = str(tmpdir)
|
||||
monkeypatch.setattr(spack.stage, "_default_stage_config", [expected])
|
||||
# build stage set to empty by user is respected and errors
|
||||
with spack.config.override("config:build_stage::", []):
|
||||
with pytest.raises(spack.stage.StageError):
|
||||
spack.stage.get_stage_root()
|
||||
|
||||
# No build stage set (config section set to empty) uses default
|
||||
with spack.config.override("config::", {}):
|
||||
assert spack.stage.get_stage_root() == expected
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
"path,purged",
|
||||
[
|
||||
|
||||
@@ -4,7 +4,8 @@
|
||||
# SPDX-License-Identifier: (Apache-2.0 OR MIT)
|
||||
|
||||
import hashlib
|
||||
from typing import BinaryIO, Callable, Dict, Optional
|
||||
import os
|
||||
from typing import Callable, Dict, Optional
|
||||
|
||||
import llnl.util.tty as tty
|
||||
|
||||
@@ -80,20 +81,24 @@ def hash_fun_for_digest(hexdigest: str) -> HashFactory:
|
||||
return hash_fun_for_algo(hash_algo_for_digest(hexdigest))
|
||||
|
||||
|
||||
def checksum_stream(hashlib_algo: HashFactory, fp: BinaryIO, *, block_size: int = 2**20) -> str:
|
||||
def checksum_stream(hashlib_algo: HashFactory, fp, *, block_size: int = 2**20) -> str:
|
||||
"""Returns a hex digest of the stream generated using given algorithm from hashlib."""
|
||||
hasher = hashlib_algo()
|
||||
while True:
|
||||
data = fp.read(block_size)
|
||||
if not data:
|
||||
break
|
||||
hasher.update(data)
|
||||
with memoryview(bytearray(block_size)) as view:
|
||||
while True:
|
||||
n = fp.readinto(view)
|
||||
if n == block_size:
|
||||
hasher.update(view)
|
||||
else:
|
||||
hasher.update(view[:n])
|
||||
break
|
||||
return hasher.hexdigest()
|
||||
|
||||
|
||||
def checksum(hashlib_algo: HashFactory, filename: str, *, block_size: int = 2**20) -> str:
|
||||
"""Returns a hex digest of the filename generated using an algorithm from hashlib."""
|
||||
with open(filename, "rb") as f:
|
||||
block_size = min(block_size, os.fstat(f.fileno()).st_size)
|
||||
return checksum_stream(hashlib_algo, f, block_size=block_size)
|
||||
|
||||
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
import re
|
||||
import struct
|
||||
from struct import calcsize, unpack, unpack_from
|
||||
from typing import BinaryIO, Dict, List, NamedTuple, Optional, Pattern, Tuple
|
||||
from typing import BinaryIO, Callable, Dict, List, NamedTuple, Optional, Pattern, Tuple
|
||||
|
||||
|
||||
class ElfHeader(NamedTuple):
|
||||
@@ -476,6 +476,31 @@ def get_interpreter(path: str) -> Optional[str]:
|
||||
return None
|
||||
|
||||
|
||||
def _delete_dynamic_array_entry(
|
||||
f: BinaryIO, elf: ElfFile, should_delete: Callable[[int, int], bool]
|
||||
) -> None:
|
||||
f.seek(elf.pt_dynamic_p_offset)
|
||||
dynamic_array_fmt = elf.byte_order + ("qQ" if elf.is_64_bit else "lL")
|
||||
dynamic_array_size = calcsize(dynamic_array_fmt)
|
||||
new_offset = elf.pt_dynamic_p_offset # points to the new dynamic array
|
||||
old_offset = elf.pt_dynamic_p_offset # points to the current dynamic array
|
||||
for _ in range(elf.pt_dynamic_p_filesz // dynamic_array_size):
|
||||
data = read_exactly(f, dynamic_array_size, "Malformed dynamic array entry")
|
||||
tag, val = unpack(dynamic_array_fmt, data)
|
||||
|
||||
if tag == ELF_CONSTANTS.DT_NULL or not should_delete(tag, val):
|
||||
if new_offset != old_offset:
|
||||
f.seek(new_offset)
|
||||
f.write(data)
|
||||
f.seek(old_offset + dynamic_array_size)
|
||||
new_offset += dynamic_array_size
|
||||
|
||||
if tag == ELF_CONSTANTS.DT_NULL:
|
||||
break
|
||||
|
||||
old_offset += dynamic_array_size
|
||||
|
||||
|
||||
def delete_rpath(path: str) -> None:
|
||||
"""Modifies a binary to remove the rpath. It zeros out the rpath string and also drops the
|
||||
DT_R(UN)PATH entry from the dynamic section, so it doesn't show up in 'readelf -d file', nor
|
||||
@@ -492,29 +517,22 @@ def delete_rpath(path: str) -> None:
|
||||
f.seek(rpath_offset)
|
||||
f.write(new_rpath_string)
|
||||
|
||||
# Next update the dynamic array
|
||||
f.seek(elf.pt_dynamic_p_offset)
|
||||
dynamic_array_fmt = elf.byte_order + ("qQ" if elf.is_64_bit else "lL")
|
||||
dynamic_array_size = calcsize(dynamic_array_fmt)
|
||||
new_offset = elf.pt_dynamic_p_offset # points to the new dynamic array
|
||||
old_offset = elf.pt_dynamic_p_offset # points to the current dynamic array
|
||||
for _ in range(elf.pt_dynamic_p_filesz // dynamic_array_size):
|
||||
data = read_exactly(f, dynamic_array_size, "Malformed dynamic array entry")
|
||||
tag, _ = unpack(dynamic_array_fmt, data)
|
||||
# Delete DT_RPATH / DT_RUNPATH entries from the dynamic section
|
||||
_delete_dynamic_array_entry(
|
||||
f, elf, lambda tag, _: tag == ELF_CONSTANTS.DT_RPATH or tag == ELF_CONSTANTS.DT_RUNPATH
|
||||
)
|
||||
|
||||
# Overwrite any entry that is not DT_RPATH or DT_RUNPATH, including DT_NULL
|
||||
if tag != ELF_CONSTANTS.DT_RPATH and tag != ELF_CONSTANTS.DT_RUNPATH:
|
||||
if new_offset != old_offset:
|
||||
f.seek(new_offset)
|
||||
f.write(data)
|
||||
f.seek(old_offset + dynamic_array_size)
|
||||
new_offset += dynamic_array_size
|
||||
|
||||
# End of the dynamic array
|
||||
if tag == ELF_CONSTANTS.DT_NULL:
|
||||
break
|
||||
def delete_needed_from_elf(f: BinaryIO, elf: ElfFile, needed: bytes) -> None:
|
||||
"""Delete a needed library from the dynamic section of an ELF file"""
|
||||
if not elf.has_needed or needed not in elf.dt_needed_strs:
|
||||
return
|
||||
|
||||
old_offset += dynamic_array_size
|
||||
offset = elf.dt_needed_strtab_offsets[elf.dt_needed_strs.index(needed)]
|
||||
|
||||
_delete_dynamic_array_entry(
|
||||
f, elf, lambda tag, val: tag == ELF_CONSTANTS.DT_NEEDED and val == offset
|
||||
)
|
||||
|
||||
|
||||
class CStringType:
|
||||
|
||||
@@ -8,8 +8,8 @@ packages:
|
||||
gromacs:
|
||||
require:
|
||||
- one_of:
|
||||
- "gromacs@2021.3 %arm ^fftw ^openmpi"
|
||||
- "gromacs@2021.3 %gcc ^armpl-gcc ^openmpi"
|
||||
- "gromacs@2024.3 %arm ^fftw ^openmpi"
|
||||
- "gromacs@2024.3 %gcc ^armpl-gcc ^openmpi"
|
||||
libfabric:
|
||||
buildable: true
|
||||
externals:
|
||||
|
||||
@@ -153,3 +153,8 @@ def install_additional_files(self):
|
||||
join_path(source_directory, "ADOL-C", "examples", "additional_examples")
|
||||
):
|
||||
Executable("./checkpointing/checkpointing")()
|
||||
|
||||
@property
|
||||
def libs(self):
|
||||
"""The name of the library differs from the package name => own libs handling."""
|
||||
return find_libraries(["libadolc"], root=self.prefix, shared=True, recursive=True)
|
||||
|
||||
@@ -15,21 +15,30 @@ class AllLibrary(CMakePackage):
|
||||
|
||||
homepage = "http://slms.pages.jsc.fz-juelich.de/websites/all-website/"
|
||||
url = "https://gitlab.jsc.fz-juelich.de/SLMS/loadbalancing/-/archive/v0.9.2/loadbalancing-v0.9.2.tar.gz"
|
||||
git = "https://gitlab.jsc.fz-juelich.de/SLMS/loadbalancing.git"
|
||||
|
||||
maintainers("junghans")
|
||||
|
||||
license("BSD-3-Clause", checked_by="junghans")
|
||||
|
||||
version("master", branch="master")
|
||||
version("0.9.2", sha256="2b4ef52c604c3c0c467712d0912a33c82177610b67edc14df1e034779c6ddb71")
|
||||
|
||||
variant("fortran", default=False, description="Build with fortran support")
|
||||
variant("shared", default=True, description="Build shared libraries")
|
||||
variant("vtk", default=False, description="Build with vtk support")
|
||||
variant(
|
||||
"voronoi",
|
||||
default=False,
|
||||
description="Enable voronoi-based loadbalancing scheme",
|
||||
when="@0.9.3:",
|
||||
)
|
||||
|
||||
depends_on("c", type="build")
|
||||
depends_on("cxx", type="build")
|
||||
depends_on("fortran", type="build", when="+fortran")
|
||||
depends_on("vtk", when="+vtk")
|
||||
depends_on("voropp", when="+voronoi")
|
||||
|
||||
depends_on("mpi")
|
||||
|
||||
@@ -39,6 +48,7 @@ def cmake_args(self):
|
||||
self.define_from_variant("CM_ALL_FORTRAN", "fortran"),
|
||||
self.define_from_variant("CM_ALL_USE_F08", "fortran"),
|
||||
self.define_from_variant("CM_ALL_VTK_OUTPUT", "vtk"),
|
||||
self.define_from_variant("CM_ALL_VORONOI", "voronoi"),
|
||||
]
|
||||
|
||||
if self.run_tests:
|
||||
|
||||
@@ -13,6 +13,8 @@ class CrayLibsci(Package):
|
||||
homepage = "https://docs.nersc.gov/development/libraries/libsci/"
|
||||
has_code = False # Skip attempts to fetch source that is not available
|
||||
|
||||
version("23.02.1.1")
|
||||
version("22.11.1.2")
|
||||
version("21.08.1.2")
|
||||
version("20.06.1")
|
||||
version("20.03.1")
|
||||
|
||||
@@ -18,6 +18,10 @@ class CrayMpich(Package):
|
||||
|
||||
maintainers("haampie")
|
||||
|
||||
version("8.1.25")
|
||||
version("8.1.24")
|
||||
version("8.1.21")
|
||||
version("8.1.14")
|
||||
version("8.1.7")
|
||||
version("8.1.0")
|
||||
version("8.0.16")
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
#
|
||||
# SPDX-License-Identifier: (Apache-2.0 OR MIT)
|
||||
|
||||
import glob
|
||||
import os
|
||||
import re
|
||||
|
||||
@@ -11,7 +12,7 @@
|
||||
from llnl.util import tty
|
||||
|
||||
from spack.package import *
|
||||
from spack.util.elf import parse_elf
|
||||
from spack.util.elf import delete_needed_from_elf, parse_elf
|
||||
|
||||
|
||||
class GccRuntime(Package):
|
||||
@@ -72,6 +73,9 @@ def install(self, spec, prefix):
|
||||
for path, name in libraries:
|
||||
install(path, os.path.join(prefix.lib, name))
|
||||
|
||||
if spec.platform in ("linux", "freebsd"):
|
||||
_drop_libgfortran_zlib(prefix.lib)
|
||||
|
||||
def _get_libraries_macho(self):
|
||||
"""Same as _get_libraries_elf but for Mach-O binaries"""
|
||||
cc = Executable(self.compiler.cc)
|
||||
@@ -124,6 +128,22 @@ def headers(self):
|
||||
return HeaderList([])
|
||||
|
||||
|
||||
def _drop_libgfortran_zlib(lib_dir: str) -> None:
|
||||
"""Due to a bug in GCC's autotools setup (https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87182),
|
||||
libz sometimes appears as a redundant system dependency of libgfortran. Delete it."""
|
||||
libraries = glob.glob(os.path.join(lib_dir, "libgfortran*.so*"))
|
||||
if len(libraries) == 0:
|
||||
return
|
||||
with open(libraries[0], "rb+") as f:
|
||||
elf = parse_elf(f, dynamic_section=True)
|
||||
if not elf.has_needed:
|
||||
return
|
||||
libz = next((x for x in elf.dt_needed_strs if x.startswith(b"libz.so")), None)
|
||||
if libz is None:
|
||||
return
|
||||
delete_needed_from_elf(f, elf, libz)
|
||||
|
||||
|
||||
def get_elf_libraries(compiler, libraries):
|
||||
"""Get the GCC runtime libraries for ELF binaries"""
|
||||
cc = Executable(compiler.cc)
|
||||
|
||||
@@ -12,33 +12,36 @@ class GdkPixbuf(MesonPackage):
|
||||
GTK+ 2 but it was split off into a separate package in preparation for the change to GTK+ 3."""
|
||||
|
||||
homepage = "https://gitlab.gnome.org/GNOME/gdk-pixbuf"
|
||||
url = "https://ftp.acc.umu.se/pub/gnome/sources/gdk-pixbuf/2.40/gdk-pixbuf-2.40.0.tar.xz"
|
||||
git = "https://gitlab.gnome.org/GNOME/gdk-pixbuf"
|
||||
list_url = "https://ftp.acc.umu.se/pub/gnome/sources/gdk-pixbuf/"
|
||||
url = "https://gitlab.gnome.org/GNOME/gdk-pixbuf/-/archive/2.40.0/gdk-pixbuf-2.40.0.tar.gz"
|
||||
|
||||
# Falling back to the gitlab source since the mirror here seems to be broken
|
||||
# url = "https://ftp.acc.umu.se/pub/gnome/sources/gdk-pixbuf/2.40/gdk-pixbuf-2.40.0.tar.xz"
|
||||
# list_url = "https://ftp.acc.umu.se/pub/gnome/sources/gdk-pixbuf/"
|
||||
list_depth = 1
|
||||
|
||||
license("LGPL-2.1-or-later", checked_by="wdconinc")
|
||||
|
||||
version("2.42.12", sha256="b9505b3445b9a7e48ced34760c3bcb73e966df3ac94c95a148cb669ab748e3c7")
|
||||
version("2.42.12", sha256="d41966831b3d291fcdfe31f683bea4b3f03241d591ddbe550b5db873af3da364")
|
||||
# https://nvd.nist.gov/vuln/detail/CVE-2022-48622
|
||||
version(
|
||||
"2.42.10",
|
||||
sha256="ee9b6c75d13ba096907a2e3c6b27b61bcd17f5c7ebeab5a5b439d2f2e39fe44b",
|
||||
sha256="87a086c51d9705698b22bd598a795efaccf61e4db3a96f439dcb3cd90506dab8",
|
||||
deprecated=True,
|
||||
)
|
||||
version(
|
||||
"2.42.9",
|
||||
sha256="28f7958e7bf29a32d4e963556d241d0a41a6786582ff6a5ad11665e0347fc962",
|
||||
sha256="226d950375907857b23c5946ae6d30128f08cd75f65f14b14334c7a9fb686e36",
|
||||
deprecated=True,
|
||||
)
|
||||
version(
|
||||
"2.42.6",
|
||||
sha256="c4a6b75b7ed8f58ca48da830b9fa00ed96d668d3ab4b1f723dcf902f78bde77f",
|
||||
sha256="c4f3a84a04bc7c5f4fbd97dce7976ab648c60628f72ad4c7b79edce2bbdb494d",
|
||||
deprecated=True,
|
||||
)
|
||||
version(
|
||||
"2.42.2",
|
||||
sha256="83c66a1cfd591d7680c144d2922c5955d38b4db336d7cd3ee109f7bcf9afef15",
|
||||
sha256="249b977279f761979104d7befbb5ee23f1661e29d19a36da5875f3a97952d13f",
|
||||
deprecated=True,
|
||||
)
|
||||
|
||||
|
||||
@@ -27,11 +27,29 @@ class Gromacs(CMakePackage, CudaPackage):
|
||||
url = "https://ftp.gromacs.org/gromacs/gromacs-2022.2.tar.gz"
|
||||
list_url = "https://ftp.gromacs.org/gromacs"
|
||||
git = "https://gitlab.com/gromacs/gromacs.git"
|
||||
|
||||
maintainers("mabraham", "eirrgang", "junghans")
|
||||
|
||||
license("GPL-2.0-or-later", when="@:4.5")
|
||||
license("LGPL-2.1-or-later", when="@4.6:")
|
||||
|
||||
# Deprecation policy:
|
||||
#
|
||||
# GROMACS makes an annual major release and supports it with fixes
|
||||
# in minor updates for about two years. Each such annual release
|
||||
# series is supported in spack for those two years, then marked as
|
||||
# deprecated in Spack. Deprecated versions can be removed after
|
||||
# the next major release of GROMACS is supported in Spack. Users
|
||||
# needing such an old version can either do a manual installation
|
||||
# or get an older version of Spack.
|
||||
#
|
||||
# Exception: Version 2019.6 is the last version capable of tabulated
|
||||
# interactions used in the so-called "group scheme." It will be marked
|
||||
# as deprecated only after equivalent functionality is available in
|
||||
# a major release of GROMACS, then removed as above.
|
||||
#
|
||||
# Exception: Otherwise, versions before 2022 will be removed when
|
||||
# 2025 is supported.
|
||||
version("main", branch="main")
|
||||
version("master", branch="main", deprecated=True)
|
||||
version("2024.3", sha256="bbda056ee59390be7d58d84c13a9ec0d4e3635617adf2eb747034922cba1f029")
|
||||
@@ -51,45 +69,197 @@ class Gromacs(CMakePackage, CudaPackage):
|
||||
version("2022.2", sha256="656404f884d2fa2244c97d2a5b92af148d0dbea94ad13004724b3fcbf45e01bf")
|
||||
version("2022.1", sha256="85ddab5197d79524a702c4959c2c43be875e0fc471df3a35224939dce8512450")
|
||||
version("2022", sha256="fad60d606c02e6164018692c6c9f2c159a9130c2bf32e8c5f4f1b6ba2dda2b68")
|
||||
version("2021.7", sha256="4db7bbbfe5424de48373686ec0e8c5bfa7175d5cd74290ef1c1e840e6df67f06")
|
||||
version("2021.6", sha256="52df2c1d7586fd028d9397985c68bd6dd26e6e905ead382b7e6c473d087902c3")
|
||||
version("2021.5", sha256="eba63fe6106812f72711ef7f76447b12dd1ee6c81b3d8d4d0e3098cd9ea009b6")
|
||||
version("2021.4", sha256="cb708a3e3e83abef5ba475fdb62ef8d42ce8868d68f52dafdb6702dc9742ba1d")
|
||||
version("2021.3", sha256="e109856ec444768dfbde41f3059e3123abdb8fe56ca33b1a83f31ed4575a1cc6")
|
||||
version("2021.2", sha256="d940d865ea91e78318043e71f229ce80d32b0dc578d64ee5aa2b1a4be801aadb")
|
||||
version("2021.1", sha256="bc1d0a75c134e1fb003202262fe10d3d32c59bbb40d714bc3e5015c71effe1e5")
|
||||
version("2021", sha256="efa78ab8409b0f5bf0fbca174fb8fbcf012815326b5c71a9d7c385cde9a8f87b")
|
||||
version("2020.7", sha256="744158d8f61b0d36ffe89ec934519b7e0981a7af438897740160da648d36c2f0")
|
||||
version("2020.6", sha256="d8bbe57ed3c9925a8cb99ecfe39e217f930bed47d5268a9e42b33da544bdb2ee")
|
||||
version("2020.5", sha256="7b6aff647f7c8ee1bf12204d02cef7c55f44402a73195bd5f42cf11850616478")
|
||||
version("2020.4", sha256="5519690321b5500c7951aaf53ff624042c3edd1a5f5d6dd1f2d802a3ecdbf4e6")
|
||||
version("2020.3", sha256="903183691132db14e55b011305db4b6f4901cc4912d2c56c131edfef18cc92a9")
|
||||
version("2020.2", sha256="7465e4cd616359d84489d919ec9e4b1aaf51f0a4296e693c249e83411b7bd2f3")
|
||||
version("2020.1", sha256="e1666558831a3951c02b81000842223698016922806a8ce152e8f616e29899cf")
|
||||
version("2020", sha256="477e56142b3dcd9cb61b8f67b24a55760b04d1655e8684f979a75a5eec40ba01")
|
||||
version(
|
||||
"2021.7",
|
||||
sha256="4db7bbbfe5424de48373686ec0e8c5bfa7175d5cd74290ef1c1e840e6df67f06",
|
||||
deprecated=True,
|
||||
)
|
||||
version(
|
||||
"2021.6",
|
||||
sha256="52df2c1d7586fd028d9397985c68bd6dd26e6e905ead382b7e6c473d087902c3",
|
||||
deprecated=True,
|
||||
)
|
||||
version(
|
||||
"2021.5",
|
||||
sha256="eba63fe6106812f72711ef7f76447b12dd1ee6c81b3d8d4d0e3098cd9ea009b6",
|
||||
deprecated=True,
|
||||
)
|
||||
version(
|
||||
"2021.4",
|
||||
sha256="cb708a3e3e83abef5ba475fdb62ef8d42ce8868d68f52dafdb6702dc9742ba1d",
|
||||
deprecated=True,
|
||||
)
|
||||
version(
|
||||
"2021.3",
|
||||
sha256="e109856ec444768dfbde41f3059e3123abdb8fe56ca33b1a83f31ed4575a1cc6",
|
||||
deprecated=True,
|
||||
)
|
||||
version(
|
||||
"2021.2",
|
||||
sha256="d940d865ea91e78318043e71f229ce80d32b0dc578d64ee5aa2b1a4be801aadb",
|
||||
deprecated=True,
|
||||
)
|
||||
version(
|
||||
"2021.1",
|
||||
sha256="bc1d0a75c134e1fb003202262fe10d3d32c59bbb40d714bc3e5015c71effe1e5",
|
||||
deprecated=True,
|
||||
)
|
||||
version(
|
||||
"2021",
|
||||
sha256="efa78ab8409b0f5bf0fbca174fb8fbcf012815326b5c71a9d7c385cde9a8f87b",
|
||||
deprecated=True,
|
||||
)
|
||||
version(
|
||||
"2020.7",
|
||||
sha256="744158d8f61b0d36ffe89ec934519b7e0981a7af438897740160da648d36c2f0",
|
||||
deprecated=True,
|
||||
)
|
||||
version(
|
||||
"2020.6",
|
||||
sha256="d8bbe57ed3c9925a8cb99ecfe39e217f930bed47d5268a9e42b33da544bdb2ee",
|
||||
deprecated=True,
|
||||
)
|
||||
version(
|
||||
"2020.5",
|
||||
sha256="7b6aff647f7c8ee1bf12204d02cef7c55f44402a73195bd5f42cf11850616478",
|
||||
deprecated=True,
|
||||
)
|
||||
version(
|
||||
"2020.4",
|
||||
sha256="5519690321b5500c7951aaf53ff624042c3edd1a5f5d6dd1f2d802a3ecdbf4e6",
|
||||
deprecated=True,
|
||||
)
|
||||
version(
|
||||
"2020.3",
|
||||
sha256="903183691132db14e55b011305db4b6f4901cc4912d2c56c131edfef18cc92a9",
|
||||
deprecated=True,
|
||||
)
|
||||
version(
|
||||
"2020.2",
|
||||
sha256="7465e4cd616359d84489d919ec9e4b1aaf51f0a4296e693c249e83411b7bd2f3",
|
||||
deprecated=True,
|
||||
)
|
||||
version(
|
||||
"2020.1",
|
||||
sha256="e1666558831a3951c02b81000842223698016922806a8ce152e8f616e29899cf",
|
||||
deprecated=True,
|
||||
)
|
||||
version(
|
||||
"2020",
|
||||
sha256="477e56142b3dcd9cb61b8f67b24a55760b04d1655e8684f979a75a5eec40ba01",
|
||||
deprecated=True,
|
||||
)
|
||||
version("2019.6", sha256="bebe396dc0db11a9d4cc205abc13b50d88225617642508168a2195324f06a358")
|
||||
version("2019.5", sha256="438061a4a2d45bbb5cf5c3aadd6c6df32d2d77ce8c715f1c8ffe56156994083a")
|
||||
version("2019.4", sha256="ba4366eedfc8a1dbf6bddcef190be8cd75de53691133f305a7f9c296e5ca1867")
|
||||
version("2019.3", sha256="4211a598bf3b7aca2b14ad991448947da9032566f13239b1a05a2d4824357573")
|
||||
version("2019.2", sha256="bcbf5cc071926bc67baa5be6fb04f0986a2b107e1573e15fadcb7d7fc4fb9f7e")
|
||||
version("2019.1", sha256="b2c37ed2fcd0e64c4efcabdc8ee581143986527192e6e647a197c76d9c4583ec")
|
||||
version("2019", sha256="c5b281a5f0b5b4eeb1f4c7d4dc72f96985b566561ca28acc9c7c16f6ee110d0b")
|
||||
version("2018.8", sha256="776923415df4bc78869d7f387c834141fdcda930b2e75be979dc59ecfa6ebecf")
|
||||
version("2018.5", sha256="32261df6f7ec4149fc0508f9af416953d056e281590359838c1ed6644ba097b8")
|
||||
version("2018.4", sha256="6f2ee458c730994a8549d6b4f601ecfc9432731462f8bd4ffa35d330d9aaa891")
|
||||
version("2018.3", sha256="4423a49224972969c52af7b1f151579cea6ab52148d8d7cbae28c183520aa291")
|
||||
version("2018.2", sha256="4bdde8120c510b6543afb4b18f82551fddb11851f7edbd814aa24022c5d37857")
|
||||
version("2018.1", sha256="4d3533340499323fece83b4a2d4251fa856376f2426c541e00b8e6b4c0d705cd")
|
||||
version("2018", sha256="deb5d0b749a52a0c6083367b5f50a99e08003208d81954fb49e7009e1b1fd0e9")
|
||||
version("2016.6", sha256="bac0117d2cad21f9b94fe5b854fb9ae7435b098a6da4e732ee745f18e52473d7")
|
||||
version("2016.5", sha256="57db26c6d9af84710a1e0c47a1f5bf63a22641456448dcd2eeb556ebd14e0b7c")
|
||||
version("2016.4", sha256="4be9d3bfda0bdf3b5c53041e0b8344f7d22b75128759d9bfa9442fe65c289264")
|
||||
version("2016.3", sha256="7bf00e74a9d38b7cef9356141d20e4ba9387289cbbfd4d11be479ef932d77d27")
|
||||
version("5.1.5", sha256="c25266abf07690ecad16ed3996899b1d489cbb1ef733a1befb3b5c75c91a703e")
|
||||
version("5.1.4", sha256="0f3793d8f1f0be747cf9ebb0b588fb2b2b5dc5acc32c3046a7bee2d2c03437bc")
|
||||
version("5.1.2", sha256="39d6f1d7ae8ba38cea6089da40676bfa4049a49903d21551abc030992a58f304")
|
||||
version("4.6.7", sha256="6afb1837e363192043de34b188ca3cf83db6bd189601f2001a1fc5b0b2a214d9")
|
||||
version("4.5.5", sha256="e0605e4810b0d552a8761fef5540c545beeaf85893f4a6e21df9905a33f871ba")
|
||||
version(
|
||||
"2019.5",
|
||||
sha256="438061a4a2d45bbb5cf5c3aadd6c6df32d2d77ce8c715f1c8ffe56156994083a",
|
||||
deprecated=True,
|
||||
)
|
||||
version(
|
||||
"2019.4",
|
||||
sha256="ba4366eedfc8a1dbf6bddcef190be8cd75de53691133f305a7f9c296e5ca1867",
|
||||
deprecated=True,
|
||||
)
|
||||
version(
|
||||
"2019.3",
|
||||
sha256="4211a598bf3b7aca2b14ad991448947da9032566f13239b1a05a2d4824357573",
|
||||
deprecated=True,
|
||||
)
|
||||
version(
|
||||
"2019.2",
|
||||
sha256="bcbf5cc071926bc67baa5be6fb04f0986a2b107e1573e15fadcb7d7fc4fb9f7e",
|
||||
deprecated=True,
|
||||
)
|
||||
version(
|
||||
"2019.1",
|
||||
sha256="b2c37ed2fcd0e64c4efcabdc8ee581143986527192e6e647a197c76d9c4583ec",
|
||||
deprecated=True,
|
||||
)
|
||||
version(
|
||||
"2019",
|
||||
sha256="c5b281a5f0b5b4eeb1f4c7d4dc72f96985b566561ca28acc9c7c16f6ee110d0b",
|
||||
deprecated=True,
|
||||
)
|
||||
version(
|
||||
"2018.8",
|
||||
sha256="776923415df4bc78869d7f387c834141fdcda930b2e75be979dc59ecfa6ebecf",
|
||||
deprecated=True,
|
||||
)
|
||||
version(
|
||||
"2018.5",
|
||||
sha256="32261df6f7ec4149fc0508f9af416953d056e281590359838c1ed6644ba097b8",
|
||||
deprecated=True,
|
||||
)
|
||||
version(
|
||||
"2018.4",
|
||||
sha256="6f2ee458c730994a8549d6b4f601ecfc9432731462f8bd4ffa35d330d9aaa891",
|
||||
deprecated=True,
|
||||
)
|
||||
version(
|
||||
"2018.3",
|
||||
sha256="4423a49224972969c52af7b1f151579cea6ab52148d8d7cbae28c183520aa291",
|
||||
deprecated=True,
|
||||
)
|
||||
version(
|
||||
"2018.2",
|
||||
sha256="4bdde8120c510b6543afb4b18f82551fddb11851f7edbd814aa24022c5d37857",
|
||||
deprecated=True,
|
||||
)
|
||||
version(
|
||||
"2018.1",
|
||||
sha256="4d3533340499323fece83b4a2d4251fa856376f2426c541e00b8e6b4c0d705cd",
|
||||
deprecated=True,
|
||||
)
|
||||
version(
|
||||
"2018",
|
||||
sha256="deb5d0b749a52a0c6083367b5f50a99e08003208d81954fb49e7009e1b1fd0e9",
|
||||
deprecated=True,
|
||||
)
|
||||
version(
|
||||
"2016.6",
|
||||
sha256="bac0117d2cad21f9b94fe5b854fb9ae7435b098a6da4e732ee745f18e52473d7",
|
||||
deprecated=True,
|
||||
)
|
||||
version(
|
||||
"2016.5",
|
||||
sha256="57db26c6d9af84710a1e0c47a1f5bf63a22641456448dcd2eeb556ebd14e0b7c",
|
||||
deprecated=True,
|
||||
)
|
||||
version(
|
||||
"2016.4",
|
||||
sha256="4be9d3bfda0bdf3b5c53041e0b8344f7d22b75128759d9bfa9442fe65c289264",
|
||||
deprecated=True,
|
||||
)
|
||||
version(
|
||||
"2016.3",
|
||||
sha256="7bf00e74a9d38b7cef9356141d20e4ba9387289cbbfd4d11be479ef932d77d27",
|
||||
deprecated=True,
|
||||
)
|
||||
version(
|
||||
"5.1.5",
|
||||
sha256="c25266abf07690ecad16ed3996899b1d489cbb1ef733a1befb3b5c75c91a703e",
|
||||
deprecated=True,
|
||||
)
|
||||
version(
|
||||
"5.1.4",
|
||||
sha256="0f3793d8f1f0be747cf9ebb0b588fb2b2b5dc5acc32c3046a7bee2d2c03437bc",
|
||||
deprecated=True,
|
||||
)
|
||||
version(
|
||||
"5.1.2",
|
||||
sha256="39d6f1d7ae8ba38cea6089da40676bfa4049a49903d21551abc030992a58f304",
|
||||
deprecated=True,
|
||||
)
|
||||
version(
|
||||
"4.6.7",
|
||||
sha256="6afb1837e363192043de34b188ca3cf83db6bd189601f2001a1fc5b0b2a214d9",
|
||||
deprecated=True,
|
||||
)
|
||||
version(
|
||||
"4.5.5",
|
||||
sha256="e0605e4810b0d552a8761fef5540c545beeaf85893f4a6e21df9905a33f871ba",
|
||||
deprecated=True,
|
||||
)
|
||||
|
||||
depends_on("c", type="build") # generated
|
||||
depends_on("cxx", type="build") # generated
|
||||
@@ -113,11 +283,22 @@ class Gromacs(CMakePackage, CudaPackage):
|
||||
variant(
|
||||
"heffte",
|
||||
default=False,
|
||||
when="@2021: +sycl+mpi",
|
||||
when="@2021: +mpi",
|
||||
description="Enable multi-GPU FFT support with HeFFTe",
|
||||
)
|
||||
depends_on("heffte +cuda", when="+heffte +cuda")
|
||||
depends_on("heffte +sycl", when="+heffte +sycl")
|
||||
variant("opencl", default=False, description="Enable OpenCL support")
|
||||
variant("sycl", default=False, when="@2021: %clang", description="Enable SYCL support")
|
||||
variant("sycl", default=False, when="@2021:", description="Enable SYCL support")
|
||||
requires(
|
||||
"^intel-oneapi-runtime",
|
||||
"^hipsycl %clang",
|
||||
policy="one_of",
|
||||
when="+sycl",
|
||||
msg="GROMACS SYCL support comes either from intel-oneapi-runtime or a "
|
||||
+ "package that provides the virtual package `sycl`, such as AdaptiveCpp "
|
||||
+ "plus a clang compiler.",
|
||||
)
|
||||
variant(
|
||||
"intel-data-center-gpu-max",
|
||||
default=False,
|
||||
@@ -627,7 +808,7 @@ def cmake_args(self):
|
||||
options.append("-DGMX_USE_ITT=on")
|
||||
options.append(
|
||||
"-DITTNOTIFY_INCLUDE_DIR=%s"
|
||||
% join_path(self.spec["intel-oneapi-vtune"].package.headers)
|
||||
% self.spec["intel-oneapi-vtune"].package.headers.directories[0]
|
||||
)
|
||||
|
||||
if self.spec.satisfies("~nblib"):
|
||||
|
||||
@@ -250,6 +250,9 @@ class Julia(MakefilePackage):
|
||||
depends_on("zlib-api")
|
||||
depends_on("zlib +shared +pic +optimize", when="^[virtuals=zlib-api] zlib")
|
||||
|
||||
# https://github.com/JuliaLang/julia/pull/45649#issuecomment-1192377430
|
||||
conflicts("%gcc@12:", when="@:1.7")
|
||||
|
||||
# Patches for julia
|
||||
patch("julia-1.6-system-libwhich-and-p7zip-symlink.patch", when="@1.6.0:1.6")
|
||||
patch("use-add-rpath.patch", when="@:1.8.0")
|
||||
|
||||
@@ -3,8 +3,6 @@
|
||||
#
|
||||
# SPDX-License-Identifier: (Apache-2.0 OR MIT)
|
||||
|
||||
from os import symlink
|
||||
|
||||
from spack.package import *
|
||||
|
||||
|
||||
@@ -42,9 +40,7 @@ def install(self, spec, prefix):
|
||||
"^TEsorter=.*$", "TEsorter={}".format(spec["py-tesorter"].prefix.bin), "paths"
|
||||
)
|
||||
|
||||
mkdirp(prefix.opt)
|
||||
mkdirp(prefix.bin)
|
||||
install_tree(".", prefix)
|
||||
|
||||
install_tree(".", prefix.opt.ltr_retriever)
|
||||
|
||||
symlink(prefix.opt.ltr_retriever.LTR_retriever, prefix.bin.LTR_retriever)
|
||||
def setup_run_environment(self, env):
|
||||
env.prepend_path("PATH", self.prefix)
|
||||
|
||||
@@ -58,8 +58,8 @@ class Openscenegraph(CMakePackage):
|
||||
) # Qt windowing system was moved into separate osgQt project
|
||||
depends_on("qt@4:", when="@3.2:3.5.4")
|
||||
depends_on("qt@:4", when="@:3.1")
|
||||
depends_on("libxinerama")
|
||||
depends_on("libxrandr")
|
||||
depends_on("libxinerama", when="platform=linux")
|
||||
depends_on("libxrandr", when="platform=linux")
|
||||
depends_on("libpng")
|
||||
depends_on("jasper")
|
||||
depends_on("libtiff")
|
||||
|
||||
@@ -58,3 +58,8 @@ class RRsamtools(RPackage):
|
||||
|
||||
# this is not a listed dependency but is needed
|
||||
depends_on("curl")
|
||||
depends_on("zlib-api")
|
||||
|
||||
def patch(self):
|
||||
with working_dir("src"):
|
||||
filter_file(r"(^PKG_LIBS=)(\$\(RHTSLIB_LIBS\))", "\\1\\2 -lz", "Makevars")
|
||||
|
||||
@@ -190,9 +190,6 @@ def edit(self, spec, prefix):
|
||||
spec["netcdf-fortran"].prefix
|
||||
)
|
||||
)
|
||||
libs_arg.append(
|
||||
"-L{0}/lib -lhdf5_fortran -lhdf5".format(spec["hdf5"].prefix)
|
||||
)
|
||||
|
||||
if "+metis" in spec:
|
||||
libs_arg.append("-L{0} -lmetis".format(self.spec["metis"].prefix.lib))
|
||||
|
||||
Reference in New Issue
Block a user