Compare commits

...

14 Commits

Author SHA1 Message Date
Jonathon Anderson
ae9f2d4d40 containers: Add Fedora 40, 39 (#43847) 2024-04-26 20:02:04 -05:00
Huston Rogers
5a3814ff15 Miniconda3: Added Versions: 24.3.0, 24.1.2, 23.11.0, 23.9.0, 23.5.2, 23.5.1, 23.5.0, 23.3.1, 23.1.0 (#43868)
* Added Versions of miniconda3: 24.3.0, 24.1.2, 23.11.0, 23.9.0, 23.5.2, 23.5.1, 23.5.0, 23.3.1, 23.1.0

* fixed style

---------

Co-authored-by: James H. Rogers <jhrogers@spear.hpc.msstate.edu>
2024-04-26 18:58:58 -06:00
Sakib Rahman
946c539dbd osg-ca-certs: new version osg 1.119 and igtf 1.128 (#43871)
* Update package.py to osg 1.119 and igtf 1.128

* Remove unnecessary white space

* Add missing comma

* change url to use git and use commit hash from repository instead of ssh256sum of tar.gz

* [@spackbot] updating style on behalf of rahmans1

---------

Co-authored-by: rahmans1 <rahmans1@users.noreply.github.com>
2024-04-26 18:39:12 -06:00
Robert Cohn
0037462f9e [SOS] update license (#43864)
Auto-generated license was wrong
2024-04-26 18:45:29 +02:00
Massimiliano Culpo
e5edac4d0c ASP-based solver: update os compatibility for macOS (#43862) 2024-04-26 18:34:46 +02:00
Jeff Hammond
3e1474dbbb ARMCI-MPI: add new package (#43813)
Signed-off-by: Jeff Hammond <jeff.science@gmail.com>
Co-authored-by: Massimiliano Culpo <massimiliano.culpo@gmail.com>
2024-04-26 16:35:33 +02:00
Abhishek Yenpure
0f502bb6c3 libcatalyst: add v2.0.0 (#43804) 2024-04-26 16:27:46 +02:00
Robert Cohn
1eecbd3208 [intel-oneap-*] no redistribution (#43826) 2024-04-26 12:03:39 +00:00
Jack Morrison
6e92b9180c Add tests-sos package + Variants to sos package (#43830)
* * Add initial tests-sos package
* Remove failing call of missing setup_compiler_environment from sos
  package
* Add several variants for sos package

* [@spackbot] updating style on behalf of jack-morrison
2024-04-26 07:26:21 -04:00
Massimiliano Culpo
ac9012da0c spack audit externals: allow selecting platforms and checking extra attributes (#43782) 2024-04-26 12:47:17 +02:00
Mosè Giordano
e3cb4f09f0 julia: add v1.10.2 (#41151)
* julia: add v1.10.2

* julia: add patch to remove suite-sparse cuda stub files

* julia: use permalinks for patches
2024-04-26 12:44:54 +02:00
Harmen Stoppels
2e8600bb71 gcc: simplify specs file, make binutils locatable (#43861) 2024-04-26 01:30:51 -06:00
Harmen Stoppels
d946c37cbb ldflags=* are compiler flags, not linker flags (#43820)
We run `extend spack_flags_list SPACK_LDFLAGS` for `$mode in ld|ccld`.

That's problematic, cause `ccld` needs `-Wl,--flag` whereas `ld` needs
`--flag` directly. Only `-L` and `-l` are common to compiler & linker.

In all build systems `LDFLAGS` is for the compiler not the linker, cause
any linker flag `-x` can be passed as a compiler flag `-Wl,-x`, and there
are many compiler flags that affect the linker invocation, like `-fopenmp`,
`-fuse-ld=`, `-fsanitize=` etc.

So don't pass `LDFLAGS` to the linker directly.

This way users can set `ldflags: -Wl,--allow-shlib-undefined` in compilers.yaml
to work around an issue where the linker tries to resolve the `libcuda.so.1`
stub lib which cannot be located by design in `cuda`.
2024-04-26 09:19:03 +02:00
Harmen Stoppels
47a9f0bdf7 llvm: use --gcc_install_dir in config files (#43795) 2024-04-26 09:01:02 +02:00
30 changed files with 470 additions and 136 deletions

View File

@@ -34,7 +34,7 @@ jobs:
run: |
. share/spack/setup-env.sh
coverage run $(which spack) audit packages
coverage run $(which spack) audit externals
coverage run $(which spack) -d audit externals
coverage combine
coverage xml
- name: Package audits (without coverage)

View File

@@ -50,7 +50,9 @@ jobs:
[rockylinux8, 'linux/amd64,linux/arm64', 'rockylinux:8'],
[rockylinux9, 'linux/amd64,linux/arm64', 'rockylinux:9'],
[fedora37, 'linux/amd64,linux/arm64,linux/ppc64le', 'fedora:37'],
[fedora38, 'linux/amd64,linux/arm64,linux/ppc64le', 'fedora:38']]
[fedora38, 'linux/amd64,linux/arm64,linux/ppc64le', 'fedora:38'],
[fedora39, 'linux/amd64,linux/arm64,linux/ppc64le', 'fedora:39'],
[fedora40, 'linux/amd64,linux/arm64,linux/ppc64le', 'fedora:40']]
name: Build ${{ matrix.dockerfile[0] }}
if: github.repository == 'spack/spack'
steps:

View File

@@ -233,6 +233,12 @@ The OS that are currently supported are summarized in the table below:
* - Fedora Linux 38
- ``fedora:38``
- ``spack/fedora38``
* - Fedora Linux 39
- ``fedora:39``
- ``spack/fedora39``
* - Fedora Linux 40
- ``fedora:40``
- ``spack/fedora40``

View File

@@ -6435,9 +6435,12 @@ the ``paths`` attribute:
echo "Target: x86_64-pc-linux-gnu"
echo "Thread model: posix"
echo "InstalledDir: /usr/bin"
platforms: ["linux", "darwin"]
results:
- spec: 'llvm@3.9.1 +clang~lld~lldb'
If the ``platforms`` attribute is present, tests are run only if the current host
matches one of the listed platforms.
Each test is performed by first creating a temporary directory structure as
specified in the corresponding ``layout`` and by then running
package detection and checking that the outcome matches the expected
@@ -6471,6 +6474,10 @@ package detection and checking that the outcome matches the expected
- A spec that is expected from detection
- Any valid spec
- Yes
* - ``results:[0]:extra_attributes``
- Extra attributes expected on the associated Spec
- Nested dictionary with string as keys, and regular expressions as leaf values
- No
"""""""""""""""""""""""""""""""
Reuse tests from other packages

2
lib/spack/env/cc vendored
View File

@@ -755,7 +755,7 @@ esac
# Linker flags
case "$mode" in
ld|ccld)
ccld)
extend spack_flags_list SPACK_LDFLAGS
;;
esac

View File

@@ -1111,4 +1111,76 @@ def _test_detection_by_executable(pkgs, error_cls):
details = [msg.format(s, idx) for s in sorted(not_expected)]
errors.append(error_cls(summary=summary, details=details))
matched_detection = []
for candidate in expected_specs:
try:
idx = specs.index(candidate)
except (AttributeError, ValueError):
pass
matched_detection.append((candidate, specs[idx]))
def _compare_extra_attribute(_expected, _detected, *, _spec):
result = []
# Check items are of the same type
if not isinstance(_detected, type(_expected)):
_summary = f'{pkg_name}: error when trying to detect "{_expected}"'
_details = [f"{_detected} was detected instead"]
return [error_cls(summary=_summary, details=_details)]
# If they are string expected is a regex
if isinstance(_expected, str):
try:
_regex = re.compile(_expected)
except re.error:
_summary = f'{pkg_name}: illegal regex in "{_spec}" extra attributes'
_details = [f"{_expected} is not a valid regex"]
return [error_cls(summary=_summary, details=_details)]
if not _regex.match(_detected):
_summary = (
f'{pkg_name}: error when trying to match "{_expected}" '
f"in extra attributes"
)
_details = [f"{_detected} does not match the regex"]
return [error_cls(summary=_summary, details=_details)]
if isinstance(_expected, dict):
_not_detected = set(_expected.keys()) - set(_detected.keys())
if _not_detected:
_summary = f"{pkg_name}: cannot detect some attributes for spec {_spec}"
_details = [
f'"{_expected}" was expected',
f'"{_detected}" was detected',
] + [f'attribute "{s}" was not detected' for s in sorted(_not_detected)]
result.append(error_cls(summary=_summary, details=_details))
_common = set(_expected.keys()) & set(_detected.keys())
for _key in _common:
result.extend(
_compare_extra_attribute(_expected[_key], _detected[_key], _spec=_spec)
)
return result
for expected, detected in matched_detection:
# We might not want to test all attributes, so avoid not_expected
not_detected = set(expected.extra_attributes) - set(detected.extra_attributes)
if not_detected:
summary = f"{pkg_name}: cannot detect some attributes for spec {expected}"
details = [
f'"{s}" was not detected [test_id={idx}]' for s in sorted(not_detected)
]
errors.append(error_cls(summary=summary, details=details))
common = set(expected.extra_attributes) & set(detected.extra_attributes)
for key in common:
errors.extend(
_compare_extra_attribute(
expected.extra_attributes[key],
detected.extra_attributes[key],
_spec=expected,
)
)
return errors

View File

@@ -14,7 +14,7 @@
from llnl.util.link_tree import LinkTree
from spack.build_environment import dso_suffix
from spack.directives import conflicts, license, variant
from spack.directives import conflicts, license, redistribute, variant
from spack.package_base import InstallError
from spack.util.environment import EnvironmentModifications
from spack.util.executable import Executable
@@ -30,7 +30,7 @@ class IntelOneApiPackage(Package):
# oneAPI license does not allow mirroring outside of the
# organization (e.g. University/Company).
redistribute_source = False
redistribute(source=False, binary=False)
for c in [
"target=ppc64:",

View File

@@ -12,9 +12,31 @@
},
"os_package_manager": "yum_amazon"
},
"fedora:40": {
"bootstrap": {
"template": "container/fedora.dockerfile",
"image": "docker.io/fedora:40"
},
"os_package_manager": "dnf",
"build": "spack/fedora40",
"final": {
"image": "docker.io/fedora:40"
}
},
"fedora:39": {
"bootstrap": {
"template": "container/fedora.dockerfile",
"image": "docker.io/fedora:39"
},
"os_package_manager": "dnf",
"build": "spack/fedora39",
"final": {
"image": "docker.io/fedora:39"
}
},
"fedora:38": {
"bootstrap": {
"template": "container/fedora_38.dockerfile",
"template": "container/fedora.dockerfile",
"image": "docker.io/fedora:38"
},
"os_package_manager": "dnf",
@@ -25,7 +47,7 @@
},
"fedora:37": {
"bootstrap": {
"template": "container/fedora_37.dockerfile",
"template": "container/fedora.dockerfile",
"image": "docker.io/fedora:37"
},
"os_package_manager": "dnf",

View File

@@ -11,6 +11,7 @@
from llnl.util import filesystem
import spack.platforms
import spack.repo
import spack.spec
from spack.util import spack_yaml
@@ -32,6 +33,8 @@ class ExpectedTestResult(NamedTuple):
#: Spec to be detected
spec: str
#: Attributes expected in the external spec
extra_attributes: Dict[str, str]
class DetectionTest(NamedTuple):
@@ -100,7 +103,10 @@ def _create_executable_scripts(self, mock_executables: MockExecutables) -> List[
@property
def expected_specs(self) -> List[spack.spec.Spec]:
return [spack.spec.Spec(r.spec) for r in self.test.results]
return [
spack.spec.Spec.from_detection(item.spec, extra_attributes=item.extra_attributes)
for item in self.test.results
]
def detection_tests(pkg_name: str, repository: spack.repo.RepoPath) -> List[Runner]:
@@ -117,9 +123,13 @@ def detection_tests(pkg_name: str, repository: spack.repo.RepoPath) -> List[Runn
"""
result = []
detection_tests_content = read_detection_tests(pkg_name, repository)
current_platform = str(spack.platforms.host())
tests_by_path = detection_tests_content.get("paths", [])
for single_test_data in tests_by_path:
if current_platform not in single_test_data.get("platforms", [current_platform]):
continue
mock_executables = []
for layout in single_test_data["layout"]:
mock_executables.append(
@@ -127,7 +137,11 @@ def detection_tests(pkg_name: str, repository: spack.repo.RepoPath) -> List[Runn
)
expected_results = []
for assertion in single_test_data["results"]:
expected_results.append(ExpectedTestResult(spec=assertion["spec"]))
expected_results.append(
ExpectedTestResult(
spec=assertion["spec"], extra_attributes=assertion.get("extra_attributes", {})
)
)
current_test = DetectionTest(
pkg_name=pkg_name, layout=mock_executables, results=expected_results

View File

@@ -12,6 +12,8 @@
%=============================================================================
% macOS
os_compatible("sonoma", "ventura").
os_compatible("ventura", "monterey").
os_compatible("monterey", "bigsur").
os_compatible("bigsur", "catalina").

View File

@@ -127,7 +127,7 @@
spack_cflags = ["-Wall"]
spack_cxxflags = ["-Werror"]
spack_fflags = ["-w"]
spack_ldflags = ["-L", "foo"]
spack_ldflags = ["-Wl,--gc-sections", "-L", "foo"]
spack_ldlibs = ["-lfoo"]
lheaderpad = ["-Wl,-headerpad_max_install_names"]
@@ -279,7 +279,6 @@ def test_ld_flags(wrapper_environment, wrapper_flags):
test_args,
["ld"]
+ test_include_paths
+ [spack_ldflags[i] + spack_ldflags[i + 1] for i in range(0, len(spack_ldflags), 2)]
+ test_library_paths
+ ["--disable-new-dtags"]
+ test_rpaths
@@ -307,13 +306,14 @@ def test_cc_flags(wrapper_environment, wrapper_flags):
[real_cc]
+ target_args
+ test_include_paths
+ [spack_ldflags[i] + spack_ldflags[i + 1] for i in range(0, len(spack_ldflags), 2)]
+ ["-Lfoo"]
+ test_library_paths
+ ["-Wl,--disable-new-dtags"]
+ test_wl_rpaths
+ test_args_without_paths
+ spack_cppflags
+ spack_cflags
+ ["-Wl,--gc-sections"]
+ spack_ldlibs,
)
@@ -325,12 +325,13 @@ def test_cxx_flags(wrapper_environment, wrapper_flags):
[real_cc]
+ target_args
+ test_include_paths
+ [spack_ldflags[i] + spack_ldflags[i + 1] for i in range(0, len(spack_ldflags), 2)]
+ ["-Lfoo"]
+ test_library_paths
+ ["-Wl,--disable-new-dtags"]
+ test_wl_rpaths
+ test_args_without_paths
+ spack_cppflags
+ ["-Wl,--gc-sections"]
+ spack_ldlibs,
)
@@ -342,13 +343,14 @@ def test_fc_flags(wrapper_environment, wrapper_flags):
[real_cc]
+ target_args
+ test_include_paths
+ [spack_ldflags[i] + spack_ldflags[i + 1] for i in range(0, len(spack_ldflags), 2)]
+ ["-Lfoo"]
+ test_library_paths
+ ["-Wl,--disable-new-dtags"]
+ test_wl_rpaths
+ test_args_without_paths
+ spack_fflags
+ spack_cppflags
+ ["-Wl,--gc-sections"]
+ spack_ldlibs,
)

View File

@@ -1,29 +0,0 @@
{% extends "container/bootstrap-base.dockerfile" %}
{% block install_os_packages %}
RUN dnf update -y \
&& dnf install -y \
bzip2 \
curl \
file \
findutils \
gcc-c++ \
gcc \
gcc-gfortran \
git \
gnupg2 \
hg \
hostname \
iproute \
make \
patch \
python3 \
python3-pip \
python3-setuptools \
svn \
unzip \
zstd \
xz \
&& pip3 install boto3 \
&& rm -rf /var/cache/dnf \
&& dnf clean all
{% endblock %}

View File

@@ -9,6 +9,7 @@ paths:
echo "Target: x86_64-apple-darwin19.5.0"
echo "Thread model: posix"
echo "InstalledDir: /Library/Developer/CommandLineTools/usr/bin"
platforms: ["darwin"]
results:
- spec: 'apple-clang@11.0.0'
# Apple Clang on Apple M1 (Ventura)
@@ -21,6 +22,7 @@ paths:
echo "Target: arm64-apple-darwin22.6.0"
echo "Thread model: posix"
echo "InstalledDir: /Library/Developer/CommandLineTools/usr/bin"
platforms: ["darwin"]
results:
- spec: 'apple-clang@15.0.0'
# Test that missing a compiler prevents the package from being detected
@@ -32,4 +34,5 @@ paths:
echo "Target: x86_64-apple-darwin19.5.0"
echo "Thread model: posix"
echo "InstalledDir: /Library/Developer/CommandLineTools/usr/bin"
platforms: ["darwin"]
results: [ ]

View File

@@ -0,0 +1,43 @@
# Copyright 2013-2024 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 ArmciMpi(AutotoolsPackage):
"""ARMCI-MPI is an implementation of the ARMCI library used by Global Arrays.
MPI-3 one-sided communication is used to implement ARMCI.
"""
homepage = "https://github.com/pmodels/armci-mpi"
url = "https://github.com/pmodels/armci-mpi/archive/refs/tags/v0.4.tar.gz"
maintainers("jeffhammond")
license("BSD-3-Clause", checked_by="jeffhammond")
version("0.4", sha256="bcc3bb189b23bf653dcc69bc469eb86eae5ebc5ad94ab5f83e52ddbdbbebf1b1")
version(
"0.3.1-beta", sha256="f3eaa8f365fb55123ecd9ced401086b0732e37e4df592b27916d71a67ab34fe9"
)
variant("shared", default=True, description="Builds a shared version of the library")
variant("progress", default=False, description="Enable asynchronous progress")
depends_on("autoconf", type="build")
depends_on("automake", type="build")
depends_on("libtool", type="build")
depends_on("m4", type="build")
depends_on("mpi")
def autoreconf(self, spec, prefix):
autoreconf("--install", "--verbose", "--force")
def configure_args(self):
args = ["--enable-g"]
args.extend(self.enable_or_disable("shared"))
args.extend(self.with_or_without("progress"))
return args

View File

@@ -20,8 +20,13 @@ paths:
echo "mock executable got an unexpected flag: $1"
exit 1
fi
platforms: ["darwin", "linux"]
results:
- spec: "gcc@9.4.0 languages=c,c++"
extra_attributes:
compilers:
c: ".*/bin/gcc"
cxx: ".*/bin/g++"
# Mock a version < 7 of GCC that requires -dumpversion and
# errors with -dumpfullversion
- layout:
@@ -37,8 +42,14 @@ paths:
echo "compilation terminated."
exit 1
fi
platforms: ["darwin", "linux"]
results:
- spec: "gcc@5.5.0 languages=c,c++,fortran"
extra_attributes:
compilers:
c: ".*/bin/gcc-5$"
cxx: ".*/bin/g[+][+]-5$"
fortran: ".*/bin/gfortran-5$"
# Multiple compilers present at the same time
- layout:
- executables:
@@ -50,7 +61,14 @@ paths:
script: "echo 10.1.0"
results:
- spec: "gcc@6.5.0 languages=c"
extra_attributes:
compilers:
c: ".*/bin/x86_64-linux-gnu-gcc-6$"
- spec: "gcc@10.1.0 languages=c,c++"
extra_attributes:
compilers:
c: ".*/bin/x86_64-linux-gnu-gcc-10$"
cxx: ".*/bin/x86_64-linux-gnu-g[+][+]-10$"
# Apple clang under disguise as gcc should not be detected
- layout:
- executables:
@@ -70,4 +88,5 @@ paths:
echo "mock executable got an unexpected flag: $1"
exit 1
fi
platforms: ["darwin"]
results: []

View File

@@ -16,7 +16,6 @@
import spack.platforms
import spack.util.executable
from spack.build_environment import dso_suffix
from spack.operating_systems.mac_os import macos_sdk_path, macos_version
from spack.package import *
@@ -957,76 +956,42 @@ def install_targets(self):
@property
def spec_dir(self):
# e.g. lib/gcc/x86_64-unknown-linux-gnu/4.9.2
spec_dir = glob.glob("{0}/gcc/*/*".format(self.prefix.lib))
spec_dir = glob.glob(f"{self.prefix.lib}/gcc/*/*")
return spec_dir[0] if spec_dir else None
@run_after("install")
def write_rpath_specs(self):
"""Generate a spec file so the linker adds a rpath to the libs
the compiler used to build the executable.
.. caution::
The custom spec file by default with *always* pass ``-Wl,-rpath
...`` to the linker, which will cause the linker to *ignore* the
value of ``LD_RUN_PATH``, which otherwise would be saved to the
binary as the default rpath. See the mitigation below for how to
temporarily disable this behavior.
Structure the specs file so that users can define a custom spec file
to suppress the spack-linked rpaths to facilitate rpath adjustment
for relocatable binaries. The custom spec file
:file:`{norpath}.spec` will have a single
line followed by two blanks lines::
*link_libgcc_rpath:
It can be passed to the GCC linker using the argument
``--specs=norpath.spec`` to disable the automatic rpath and restore
the behavior of ``LD_RUN_PATH``."""
def write_specs_file(self):
"""(1) inject an rpath to its runtime library dir, (2) add a default programs search path
to <binutils>/bin."""
if not self.spec_dir:
tty.warn(
"Could not install specs for {0}.".format(self.spec.format("{name}{@version}"))
)
tty.warn(f"Could not install specs for {self.spec.format('{name}{@version}')}.")
return
gcc = self.spec["gcc"].command
lines = gcc("-dumpspecs", output=str).splitlines(True)
specs_file = join_path(self.spec_dir, "specs")
# Save a backup
with open(specs_file + ".orig", "w") as out:
out.writelines(lines)
# Find which directories have shared libraries
rpath_libdirs = []
for dir in ["lib", "lib64"]:
for dir in ["lib64", "lib"]:
libdir = join_path(self.prefix, dir)
if glob.glob(join_path(libdir, "*." + dso_suffix)):
rpath_libdirs.append(libdir)
if not rpath_libdirs:
# No shared libraries
if glob.glob(join_path(libdir, "libgcc_s.*")):
rpath_dir = libdir
break
else:
tty.warn("No dynamic libraries found in lib/lib64")
return
rpath_dir = None
# Overwrite the specs file
with open(specs_file, "w") as out:
for line in lines:
out.write(line)
if line.startswith("*link_libgcc:"):
# Insert at start of line following link_libgcc, which gets
# inserted into every call to the linker
out.write("%(link_libgcc_rpath) ")
specs_file = join_path(self.spec_dir, "specs")
with open(specs_file, "w") as f:
# rpath
if rpath_dir:
print("*link_libgcc:", file=f)
print(f"+ -rpath={rpath_dir}", file=f)
print(file=f)
# Add easily-overridable rpath string at the end
out.write("*link_libgcc_rpath:\n")
out.write(" ".join("-rpath " + lib for lib in rpath_libdirs))
out.write("\n")
# programs search path
if self.spec.satisfies("+binutils"):
print("*self_spec:", file=f)
print(f"+ -B{self.spec['binutils'].prefix.bin}", file=f)
print(file=f)
set_install_permissions(specs_file)
tty.info("Wrote new spec file to {0}".format(specs_file))
tty.info(f"Wrote new spec file to {specs_file}")
def setup_run_environment(self, env):
# Search prefix directory for possibly modified compiler names

View File

@@ -10,8 +10,9 @@
from spack.pkg.builtin.gcc_runtime import get_elf_libraries
@IntelOneApiPackage.update_description
class IntelOneapiRuntime(Package):
"""Package for OneAPI compiler runtime libraries"""
"""Package for OneAPI compiler runtime libraries redistributables."""
homepage = "https://software.intel.com/content/www/us/en/develop/tools/oneapi.html"
has_code = False

View File

@@ -15,5 +15,6 @@ paths:
script: |
echo "ifort (IFORT) 18.0.5 20180823"
echo "Copyright (C) 1985-2018 Intel Corporation. All rights reserved."
platforms: ["darwin", "linux"]
results:
- spec: 'intel@18.0.5'

View File

@@ -0,0 +1,16 @@
diff --git a/base/Makefile b/base/Makefile
index ad2bb6a63c..493302af78 100644
--- a/base/Makefile
+++ b/base/Makefile
@@ -269,11 +269,9 @@ $(eval $(call symlink_system_library,LIBSUITESPARSE,libamd))
$(eval $(call symlink_system_library,LIBSUITESPARSE,libcamd))
$(eval $(call symlink_system_library,LIBSUITESPARSE,libccolamd))
$(eval $(call symlink_system_library,LIBSUITESPARSE,libcholmod))
-$(eval $(call symlink_system_library,LIBSUITESPARSE,libcholmod_cuda))
$(eval $(call symlink_system_library,LIBSUITESPARSE,libcolamd))
$(eval $(call symlink_system_library,LIBSUITESPARSE,libumfpack))
$(eval $(call symlink_system_library,LIBSUITESPARSE,libspqr))
-$(eval $(call symlink_system_library,LIBSUITESPARSE,libspqr_cuda))
$(eval $(call symlink_system_library,LIBSUITESPARSE,libsuitesparseconfig))
# EXCLUDED LIBRARIES (installed/used, but not vendored for use with dlopen):
# libunwind

View File

@@ -26,6 +26,7 @@ class Julia(MakefilePackage):
maintainers("vchuravy", "haampie", "giordano")
version("master", branch="master")
version("1.10.2", sha256="e3d20c02975da054aeb18d32ed84c5d760d54d2563e45e25017684a5a105d185")
version("1.9.3", sha256="8d7dbd8c90e71179e53838cdbe24ff40779a90d7360e29766609ed90d982081d")
version("1.9.2", sha256="015438875d591372b80b09d01ba899657a6517b7c72ed41222298fef9d4ad86b")
version("1.9.0", sha256="48f4c8a7d5f33d0bc6ce24226df20ab49e385c2d0c3767ec8dfdb449602095b2")
@@ -59,9 +60,24 @@ class Julia(MakefilePackage):
)
depends_on("libuv", when="@:1.7")
depends_on("libuv-julia@1.42.0", when="@1.8.0:1.8.1")
depends_on("libuv-julia@1.44.2", when="@1.8.2:")
depends_on("libuv-julia@1.44.2", when="@1.8.2:1.9")
depends_on("libuv-julia@1.44.3", when="@1.10.0:")
depends_on("suite-sparse@5.4:5.10", when="@1.6:1.9")
with when("@1.10.0:1.10"):
# libssh2.so.1, libpcre2-8.so.0, libmbedtls.so.14, libmbedcrypto.so.7, libmbedx509.so.1,
# libopenlibm.so.4, libblastrampoline.so.5, libgit2.so.1.6, libnghttp2.so.14,
# libcurl.so.4
depends_on("libblastrampoline@5.8.0:5")
depends_on("libgit2@1.6.4:1.6")
depends_on("libssh2@1.11.0:1.11")
depends_on("llvm@15.0.7 +lld shlib_symbol_version=JL_LLVM_15.0")
depends_on("mbedtls@2.28.2:2.28")
depends_on("openlibm@0.8.1:0.8", when="+openlibm")
depends_on("nghttp2@1.52.0:1.52")
depends_on("curl@8.4.0:")
depends_on("suite-sparse@7.2.1")
with when("@1.9.0:1.9"):
# libssh2.so.1, libpcre2-8.so.0, mbedtls.so.14, mbedcrypto.so.7, mbedx509.so.1
# openlibm.so.4, libblastrampoline.so.5, libgit2.so.1.5, libnghttp2.so.14,
@@ -125,7 +141,7 @@ class Julia(MakefilePackage):
"llvm",
when="^llvm@12.0.1",
patches=patch(
"https://raw.githubusercontent.com/spack/patches/master/julia/10cb42f80c2eaad3e9c87cb818b6676f1be26737bdf972c77392d71707386aa4.patch",
"https://raw.githubusercontent.com/spack/patches/24ff44c4c5439400747941473c0298a74c1fbcb1/julia/10cb42f80c2eaad3e9c87cb818b6676f1be26737bdf972c77392d71707386aa4.patch",
sha256="10cb42f80c2eaad3e9c87cb818b6676f1be26737bdf972c77392d71707386aa4",
),
)
@@ -133,7 +149,7 @@ class Julia(MakefilePackage):
"llvm",
when="^llvm@13.0.1",
patches=patch(
"https://raw.githubusercontent.com/spack/patches/master/julia/45f72c59ae5cf45461e9cd8b224ca49b739d885c79b3786026433c6c22f83b5f.patch",
"https://raw.githubusercontent.com/spack/patches/24ff44c4c5439400747941473c0298a74c1fbcb1/julia/45f72c59ae5cf45461e9cd8b224ca49b739d885c79b3786026433c6c22f83b5f.patch",
sha256="45f72c59ae5cf45461e9cd8b224ca49b739d885c79b3786026433c6c22f83b5f",
),
)
@@ -141,10 +157,18 @@ class Julia(MakefilePackage):
"llvm",
when="^llvm@14.0.6",
patches=patch(
"https://raw.githubusercontent.com/spack/patches/master/julia/f3def26930832532bbcd861d41b31ae03db993bc2b3510f89ef831a30bd3e099.patch",
"https://raw.githubusercontent.com/spack/patches/24ff44c4c5439400747941473c0298a74c1fbcb1/julia/f3def26930832532bbcd861d41b31ae03db993bc2b3510f89ef831a30bd3e099.patch",
sha256="f3def26930832532bbcd861d41b31ae03db993bc2b3510f89ef831a30bd3e099",
),
)
depends_on(
"llvm",
when="^llvm@15.0.7",
patches=patch(
"https://raw.githubusercontent.com/spack/patches/24ff44c4c5439400747941473c0298a74c1fbcb1/julia/25cdc0271e7722d4a7cc6f72abcb17bfe205fc741bbe3716a21759c3eee7d32c.patch",
sha256="25cdc0271e7722d4a7cc6f72abcb17bfe205fc741bbe3716a21759c3eee7d32c",
),
)
# Patches for libuv
depends_on(
@@ -234,6 +258,11 @@ class Julia(MakefilePackage):
# Make sure Julia sets -DNDEBUG when including LLVM header files.
patch("llvm-NDEBUG.patch", when="@1.7.0:1.7")
# suite-sparse@7.2.1 sometimes builds cuda stub libraries and Julia build
# system deals with them, but we don't compile them, so we remove the code
# which is creating symlinks to those libraries.
patch("julia-1.10-rm-suite-sparse-cuda-stubs.patch", when="@1.10.0:1.10")
def patch(self):
# The system-libwhich-libblastrampoline.patch causes a rebuild of docs as it
# touches the main Makefile, so we reset the a/m-time to doc/_build's.

View File

@@ -16,13 +16,13 @@ class Libcatalyst(CMakePackage):
homepage = "https://gitlab.kitware.com/paraview/catalyst"
git = "https://gitlab.kitware.com/paraview/catalyst.git"
url = "https://gitlab.kitware.com/api/v4/projects/paraview%2Fcatalyst/packages/generic/catalyst/v2.0.0/catalyst-v2.0.0.tar.gz"
url = "https://gitlab.kitware.com/api/v4/projects/5912/packages/generic/catalyst/v2.0.0/catalyst-v2.0.0.tar.gz"
license("BSD-3-Clause")
maintainers("mathstuf", "ayenpure")
version("master", branch="master")
version("2.0.0-rc4", sha256="cb491e4ccd344156cc2494f65b9f38885598c16d12e1016c36e2ee0bc3640863")
version("2.0.0", sha256="5842b690bd8afa635414da9b9c5e5d79fa37879b0d382428d0d8e26ba5374828")
variant("mpi", default=False, description="Enable MPI support")
variant("conduit", default=False, description="Use external Conduit for Catalyst")

View File

@@ -14,6 +14,7 @@ paths:
echo "Target: x86_64-pc-linux-gnu"
echo "Thread model: posix"
echo "InstalledDir: /usr/bin"
platforms: ["darwin", "linux"]
results:
- spec: 'llvm@3.9.1 +clang~lld~lldb'
# Multiple LLVM packages in the same prefix
@@ -40,6 +41,7 @@ paths:
echo "Target: x86_64-pc-linux-gnu"
echo "Thread model: posix"
echo "InstalledDir: /usr/bin"
platforms: ["darwin", "linux"]
results:
- spec: 'llvm@8.0.0+clang+lld+lldb'
- spec: 'llvm@3.9.1+clang~lld~lldb'
@@ -53,4 +55,5 @@ paths:
echo "Target: x86_64-apple-darwin19.5.0"
echo "Thread model: posix"
echo "InstalledDir: /Library/Developer/CommandLineTools/usr/bin"
platforms: ["darwin"]
results: []

View File

@@ -936,7 +936,9 @@ def cmake_args(self):
cmake_args.append(from_variant("LIBOMP_TSAN_SUPPORT", "libomp_tsan"))
if self.compiler.name == "gcc":
# From clang 16 onwards we use a more precise --gcc-install-dir flag in post-install
# generated config files.
if self.spec.satisfies("@:15 %gcc"):
cmake_args.append(define("GCC_INSTALL_PREFIX", self.compiler.prefix))
if self.spec.satisfies("~code_signing platform=darwin"):
@@ -976,12 +978,24 @@ def cmake_args(self):
runtimes_order.index(x) if x in runtimes_order else len(runtimes_order)
)
)
# CMake args passed just to runtimes
runtime_cmake_args = [define("CMAKE_INSTALL_RPATH_USE_LINK_PATH", True)]
# When building runtimes, just-built clang has to know where GCC is.
gcc_install_dir_flag = get_gcc_install_dir_flag(spec, self.compiler)
if gcc_install_dir_flag:
runtime_cmake_args.extend(
[
define("CMAKE_C_FLAGS", gcc_install_dir_flag),
define("CMAKE_CXX_FLAGS", gcc_install_dir_flag),
]
)
cmake_args.extend(
[
define("LLVM_ENABLE_RUNTIMES", runtimes),
define(
"RUNTIMES_CMAKE_ARGS", [define("CMAKE_INSTALL_RPATH_USE_LINK_PATH", True)]
),
define("RUNTIMES_CMAKE_ARGS", runtime_cmake_args),
]
)
@@ -1031,6 +1045,19 @@ def post_install(self):
with working_dir(self.build_directory):
install_tree("bin", join_path(self.prefix, "libexec", "llvm"))
cfg_files = []
if spec.satisfies("+clang"):
cfg_files.extend(("clang.cfg", "clang++.cfg"))
if spec.satisfies("@19: +flang"):
# The config file is `flang.cfg` even though the executable is `flang-new`.
# `--gcc-install-dir` / `--gcc-toolchain` support was only added in LLVM 19.
cfg_files.append("flang.cfg")
gcc_install_dir_flag = get_gcc_install_dir_flag(spec, self.compiler)
if gcc_install_dir_flag:
for cfg in cfg_files:
with open(os.path.join(self.prefix.bin, cfg), "w") as f:
print(gcc_install_dir_flag, file=f)
def llvm_config(self, *args, **kwargs):
lc = Executable(self.prefix.bin.join("llvm-config"))
if not kwargs.get("output"):
@@ -1042,6 +1069,18 @@ def llvm_config(self, *args, **kwargs):
return ret
def get_gcc_install_dir_flag(spec: Spec, compiler) -> Optional[str]:
"""Get the --gcc-install-dir=... flag, so that clang does not do a system scan for GCC."""
if not spec.satisfies("@16: %gcc"):
return None
gcc = Executable(compiler.cc)
libgcc_path = gcc("-print-file-name=libgcc.a", output=str, fail_on_error=False).strip()
if not os.path.isabs(libgcc_path):
return None
libgcc_dir = os.path.dirname(libgcc_path)
return f"--gcc-install-dir={libgcc_dir}" if os.path.exists(libgcc_dir) else None
def get_llvm_targets_to_build(spec):
targets = spec.variants["targets"].value

View File

@@ -10,6 +10,60 @@
from spack.util.environment import EnvironmentModifications
_versions = {
"24.3.0": {
"Linux-x86_64": (
"96a44849ff17e960eeb8877ecd9055246381c4d4f2d031263b63fa7e2e930af1",
"https://repo.anaconda.com/miniconda/Miniconda3-py312_24.3.0-0-Linux-x86_64.sh",
)
},
"24.1.2": {
"Linux-x86_64": (
"b978856ec3c826eb495b60e3fffe621f670c101150ebcbdeede4f961f22dc438",
"https://repo.anaconda.com/miniconda/Miniconda3-py312_24.1.2-0-Linux-x86_64.sh",
)
},
"23.11.0": {
"Linux-x86_64": (
"c9ae82568e9665b1105117b4b1e499607d2a920f0aea6f94410e417a0eff1b9c",
"https://repo.anaconda.com/miniconda/Miniconda3-py311_23.11.0-2-Linux-x86_64.sh",
)
},
"23.9.0": {
"Linux-x86_64": (
"43651393236cb8bb4219dcd429b3803a60f318e5507d8d84ca00dafa0c69f1bb",
"https://repo.anaconda.com/miniconda/Miniconda3-py311_23.9.0-0-Linux-x86_64.sh",
)
},
"23.5.2": {
"Linux-x86_64": (
"634d76df5e489c44ade4085552b97bebc786d49245ed1a830022b0b406de5817",
"https://repo.anaconda.com/miniconda/Miniconda3-py311_23.5.2-0-Linux-x86_64.sh",
)
},
"23.5.1": {
"Linux-x86_64": (
"333779c9cae3fe14735949a8dcb9657b9e55ada69e9c60f191c5d582b2deac20",
"https://repo.anaconda.com/miniconda/Miniconda3-py311_23.5.1-0-Linux-x86_64.sh",
)
},
"23.5.0": {
"Linux-x86_64": (
"61a5c087893f6210176045931b89ee6e8760c17abd9c862b2cab4c1b7d00f7c8",
"https://repo.anaconda.com/miniconda/Miniconda3-py311_23.5.0-3-Linux-x86_64.sh",
)
},
"23.3.1": {
"Linux-x86_64": (
"aef279d6baea7f67940f16aad17ebe5f6aac97487c7c03466ff01f4819e5a651",
"https://repo.anaconda.com/miniconda/Miniconda3-py310_23.3.1-0-Linux-x86_64.sh",
)
},
"23.1.0": {
"Linux-x86_64": (
"32d73e1bc33fda089d7cd9ef4c1be542616bd8e437d1f77afeeaf7afdb019787",
"https://repo.anaconda.com/miniconda/Miniconda3-py310_23.1.0-1-Linux-x86_64.sh",
)
},
"22.11.1": {
"Linux-x86_64": (
"00938c3534750a0e4069499baf8f4e6dc1c2e471c86a59caa0dd03f4a9269db6",

View File

@@ -11,9 +11,8 @@ class OsgCaCerts(Package):
in the OpenSSL 1.0.* format."""
homepage = "http://repo.opensciencegrid.org/cadist"
url = "https://github.com/opensciencegrid/osg-certificates/archive/v1.109.igtf.1.117/osg-certificates-1.109.igtf.1.117.tar.gz"
git = "https://github.com/opensciencegrid/osg-certificates.git"
_osg_base_url = "https://github.com/opensciencegrid/osg-certificates/archive/v{osg_version}.igtf.{igtf_version}/osg-certificates-{osg_version}.igtf.{igtf_version}.tar.gz"
_igtf_base_url = "https://dist.eugridpma.info/distribution/igtf/{igtf_version}/igtf-policy-installation-bundle-{igtf_version}.tar.gz"
_letsencrypt_base_url = "https://github.com/opensciencegrid/letsencrypt-certificates/archive/v{letsencrypt_version}/letsencrypt-certificates.tar.gz"
@@ -21,29 +20,17 @@ class OsgCaCerts(Package):
releases = [
{
"osg_version": "1.110",
"igtf_version": "1.119",
"osg_sha256": "025969d415bf27c1609699caf63d0d79540a01df500187195f2bd973fe69e00d",
"igtf_sha256": "cc4db07a86fc27f0e0dfd15c797d1a0da7b5620f4b611dbb686543712b2f335a",
},
{
"osg_version": "1.109",
"igtf_version": "1.117",
"osg_sha256": "41e12c05aedb4df729bf326318cc29b9b79eb097564fd68c6af2e1448ec74f75",
"igtf_sha256": "130d4d95cd65d01d2db250ee24c539341e3adc899b7eff1beafef1ba4674807d",
},
"osg_version": "1.119",
"igtf_version": "1.128",
"osg_commit": "1f7abbe392e339aae28625a4016bc98d58ad7cab",
"igtf_sha256": "1385e2206b4088cbad94264e2c252ad431f075f88a427cdee4ed523df95b9ab7",
}
]
for release in releases:
_version = "{0}.igtf.{1}".format(release["osg_version"], release["igtf_version"])
version(
_version,
url=_osg_base_url.format(
osg_version=release["osg_version"], igtf_version=release["igtf_version"]
),
sha256=release["osg_sha256"],
)
version(_version, commit=release["osg_commit"])
resource(
name="igtf-{igtf_version}".format(igtf_version=release["igtf_version"]),

View File

@@ -15,7 +15,7 @@ class Sos(AutotoolsPackage):
# notify when the package is updated.
maintainers("rscohn2")
license("GPL-2.0-or-later")
license("BSD-3-Clause")
version("1.5.2", sha256="c9df8c6ab43890e5d8970467c188ae2fad736845875ca4c370ff047dbb37d017")
version("1.5.1", sha256="0a6303dcbdd713ef2d83c617c1eb821227603c98cb9816c53585fd993da8a984")
@@ -24,12 +24,47 @@ class Sos(AutotoolsPackage):
variant("xpmem", default=False, description="Enable xpmem for transport")
variant("ofi", default=True, description="Enable ofi for transport")
variant(
"manual-progress",
default=False,
description="Enable intermittent progress calls in transport layer",
)
variant(
"ofi-manual-progress",
default=False,
when="+ofi",
description="Use FI_MANUAL_PROGRESS for data progress control mode",
)
variant("shr-atomics", default=False, description="Enable shared memory atomic operations")
variant(
"av-map",
default=False,
description="Enable av-map instead of av-table in the OFI transport",
)
variant(
"completion-polling",
default=False,
description="Enable polling in quiet, fence, and local completion operations",
)
variant(
"thread-completion",
default=False,
description="Support SHMEM_THREAD_MULTIPLE in OFI transport using FI_THREAD_COMPLETION",
)
variant("error-checking", default=False, description="Enable error checking for SHMEM calls")
variant(
"lengthy-tests",
default=False,
description="Execute long running tests as part of 'make check'",
)
variant("rpath", default=True, description="Use rpath in compiler wrappers ")
variant("hard-polling", default=False, description="Enable hard polling of wait calls")
depends_on("autoconf", type="build")
depends_on("automake", type="build")
depends_on("libtool", type="build")
depends_on("m4", type="build")
depends_on("hydra", type=("build", "run"), when="+ofi")
depends_on("libfabric", type="link", when="+ofi")
depends_on("xpmem", type="link", when="+xpmem")
@@ -39,8 +74,6 @@ class Sos(AutotoolsPackage):
filter_compiler_wrappers("oshcc", "oshc++", "oshcc", "oshfort", relative_root="bin")
def setup_dependent_build_environment(self, env, dependent_spec):
self.setup_compiler_environment(env)
# Enable the osh wrappers to use spack wrappers when inside spack
# with env variables
env.set("SHMEM_CC", spack_cc)
@@ -57,5 +90,14 @@ def configure_args(self):
args.extend(self.with_or_without("ofi"))
# This option is not compatiable with remote atomics
args.extend(self.enable_or_disable("shr-atomics"))
args.extend(self.enable_or_disable("av-map"))
args.extend(self.enable_or_disable("completion-polling"))
args.extend(self.enable_or_disable("thread-completion"))
args.extend(self.enable_or_disable("error-checking"))
args.extend(self.enable_or_disable("lengthy-tests"))
args.extend(self.enable_or_disable("rpath"))
args.extend(self.enable_or_disable("manual-progress"))
args.extend(self.enable_or_disable("ofi-manual-progress"))
args.extend(self.enable_or_disable("hard-polling"))
args.append("--enable-pmi-simple")
return args

View File

@@ -0,0 +1,32 @@
# Copyright 2013-2024 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 TestsSos(AutotoolsPackage):
"""Sandia OpenSHMEM unit tests and performance testing suite."""
homepage = "https://github.com/openshmem-org/tests-sos"
url = "https://github.com/openshmem-org/tests-sos/archive/refs/tags/v1.5.2.tar.gz"
maintainers("jack-morrison")
version("1.5.2", sha256="3a063963ef779419aadc6b21ff2f1e4dcdd3e95fa8ed23545434e56757f3187f")
depends_on("autoconf", type="build")
depends_on("automake", type="build")
depends_on("libtool", type="build")
depends_on("m4", type="build")
depends_on("sos", type=("build", "run"))
def autoreconf(self, spec, prefix):
bash = which("bash")
bash("./autogen.sh")
def setup_build_environment(self, env):
env.set("CC", "oshcc")
env.set("CXX", "oshc++")
env.set("FC", "oshfort")

View File

@@ -13,6 +13,7 @@ paths:
script: |
echo "IBM XL Fortran for Linux, V16.1.1 (5725-C73, 5765-J13)"
echo "Version: 16.01.0001.0006"
platforms: ["linux"]
results:
- spec: "xlc+r@16.1"
- spec: "xlc~r@16.1"

View File

@@ -6,6 +6,7 @@ paths:
script: |
echo "IBM XL Fortran for Linux, V16.1.1 (5725-C73, 5765-J13)"
echo "Version: 16.01.0001.0006"
platforms: ["linux"]
results:
- spec: "xlf+r@16.1"
- spec: "xlf~r@16.1"