Compare commits

..

4 Commits

Author SHA1 Message Date
Harmen Stoppels
020c06c696 try something 2024-04-26 23:14:03 +02:00
Harmen Stoppels
30f811588d Revert "fix"
This reverts commit 896d7cf497.
2024-04-26 23:13:04 +02:00
Harmen Stoppels
896d7cf497 fix 2024-04-26 08:34:12 +02:00
Harmen Stoppels
75530be48a verbose output 2024-04-26 07:55:02 +02:00
32 changed files with 142 additions and 478 deletions

View File

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

View File

@@ -50,9 +50,7 @@ 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'],
[fedora39, 'linux/amd64,linux/arm64,linux/ppc64le', 'fedora:39'],
[fedora40, 'linux/amd64,linux/arm64,linux/ppc64le', 'fedora:40']]
[fedora38, 'linux/amd64,linux/arm64,linux/ppc64le', 'fedora:38']]
name: Build ${{ matrix.dockerfile[0] }}
if: github.repository == 'spack/spack'
steps:

View File

@@ -233,12 +233,6 @@ 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,12 +6435,9 @@ 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
@@ -6474,10 +6471,6 @@ 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
ccld)
ld|ccld)
extend spack_flags_list SPACK_LDFLAGS
;;
esac

View File

@@ -1111,76 +1111,4 @@ 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, redistribute, variant
from spack.directives import conflicts, license, 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, binary=False)
redistribute_source = False
for c in [
"target=ppc64:",

View File

@@ -472,6 +472,7 @@ def compiler_verbose_output(self) -> Optional[str]:
"""Verbose output from compiling a dummy C source file. Output is cached."""
if not hasattr(self, "_compile_c_source_output"):
self._compile_c_source_output = self._compile_dummy_c_source()
print(self._compile_c_source_output)
return self._compile_c_source_output
def _compile_dummy_c_source(self) -> Optional[str]:
@@ -494,9 +495,6 @@ def _compile_dummy_c_source(self) -> Optional[str]:
with self.compiler_environment():
return cc_exe(self.verbose_flag, fin, "-o", fout, output=str, error=str)
except spack.util.executable.ProcessError as pe:
tty.debug("ProcessError: Command exited with non-zero status: " + pe.long_message)
return None
finally:
shutil.rmtree(tmpdir, ignore_errors=True)

View File

@@ -12,31 +12,9 @@
},
"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.dockerfile",
"template": "container/fedora_38.dockerfile",
"image": "docker.io/fedora:38"
},
"os_package_manager": "dnf",
@@ -47,7 +25,7 @@
},
"fedora:37": {
"bootstrap": {
"template": "container/fedora.dockerfile",
"template": "container/fedora_37.dockerfile",
"image": "docker.io/fedora:37"
},
"os_package_manager": "dnf",

View File

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

View File

@@ -12,8 +12,6 @@
%=============================================================================
% 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 = ["-Wl,--gc-sections", "-L", "foo"]
spack_ldflags = ["-L", "foo"]
spack_ldlibs = ["-lfoo"]
lheaderpad = ["-Wl,-headerpad_max_install_names"]
@@ -279,6 +279,7 @@ 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
@@ -306,14 +307,13 @@ def test_cc_flags(wrapper_environment, wrapper_flags):
[real_cc]
+ target_args
+ test_include_paths
+ ["-Lfoo"]
+ [spack_ldflags[i] + spack_ldflags[i + 1] for i in range(0, len(spack_ldflags), 2)]
+ test_library_paths
+ ["-Wl,--disable-new-dtags"]
+ test_wl_rpaths
+ test_args_without_paths
+ spack_cppflags
+ spack_cflags
+ ["-Wl,--gc-sections"]
+ spack_ldlibs,
)
@@ -325,13 +325,12 @@ def test_cxx_flags(wrapper_environment, wrapper_flags):
[real_cc]
+ target_args
+ test_include_paths
+ ["-Lfoo"]
+ [spack_ldflags[i] + spack_ldflags[i + 1] for i in range(0, len(spack_ldflags), 2)]
+ test_library_paths
+ ["-Wl,--disable-new-dtags"]
+ test_wl_rpaths
+ test_args_without_paths
+ spack_cppflags
+ ["-Wl,--gc-sections"]
+ spack_ldlibs,
)
@@ -343,14 +342,13 @@ def test_fc_flags(wrapper_environment, wrapper_flags):
[real_cc]
+ target_args
+ test_include_paths
+ ["-Lfoo"]
+ [spack_ldflags[i] + spack_ldflags[i + 1] for i in range(0, len(spack_ldflags), 2)]
+ 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

@@ -126,7 +126,7 @@ spack:
prefix: /opt/rocm-5.7.1
extra_attributes:
compilers:
c: /opt/rocm-5.7.1/llvm/bin/clang++
c: /opt/rocm-5.7.1/llvm/bin/clang
c++: /opt/rocm-5.7.1/llvm/bin/clang++
hip: /opt/rocm-5.7.1/hip/bin/hipcc
hipify-clang:
@@ -141,7 +141,7 @@ spack:
prefix: /opt/rocm-5.7.1/llvm
extra_attributes:
compilers:
c: /opt/rocm-5.7.1/llvm/bin/clang++
c: /opt/rocm-5.7.1/llvm/bin/clang
cxx: /opt/rocm-5.7.1/llvm/bin/clang++
hsakmt-roct:
buildable: false

View File

@@ -0,0 +1,29 @@
{% 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,7 +9,6 @@ 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)
@@ -22,7 +21,6 @@ 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
@@ -34,5 +32,4 @@ 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

@@ -1,43 +0,0 @@
# 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,13 +20,8 @@ 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:
@@ -42,14 +37,8 @@ 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:
@@ -61,14 +50,7 @@ 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:
@@ -88,5 +70,4 @@ paths:
echo "mock executable got an unexpected flag: $1"
exit 1
fi
platforms: ["darwin"]
results: []

View File

@@ -16,6 +16,7 @@
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 *
@@ -956,42 +957,76 @@ 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(f"{self.prefix.lib}/gcc/*/*")
spec_dir = glob.glob("{0}/gcc/*/*".format(self.prefix.lib))
return spec_dir[0] if spec_dir else None
@run_after("install")
def write_specs_file(self):
"""(1) inject an rpath to its runtime library dir, (2) add a default programs search path
to <binutils>/bin."""
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``."""
if not self.spec_dir:
tty.warn(f"Could not install specs for {self.spec.format('{name}{@version}')}.")
tty.warn(
"Could not install specs for {0}.".format(self.spec.format("{name}{@version}"))
)
return
# Find which directories have shared libraries
for dir in ["lib64", "lib"]:
libdir = join_path(self.prefix, dir)
if glob.glob(join_path(libdir, "libgcc_s.*")):
rpath_dir = libdir
break
else:
tty.warn("No dynamic libraries found in lib/lib64")
rpath_dir = None
gcc = self.spec["gcc"].command
lines = gcc("-dumpspecs", output=str).splitlines(True)
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)
# 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)
# 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"]:
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
tty.warn("No dynamic libraries found in lib/lib64")
return
# 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) ")
# 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")
set_install_permissions(specs_file)
tty.info(f"Wrote new spec file to {specs_file}")
tty.info("Wrote new spec file to {0}".format(specs_file))
def setup_run_environment(self, env):
# Search prefix directory for possibly modified compiler names

View File

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

View File

@@ -15,6 +15,5 @@ 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

@@ -1,16 +0,0 @@
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,7 +26,6 @@ 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")
@@ -60,24 +59,9 @@ 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:1.9")
depends_on("libuv-julia@1.44.3", when="@1.10.0:")
depends_on("libuv-julia@1.44.2", when="@1.8.2:")
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,
@@ -141,7 +125,7 @@ class Julia(MakefilePackage):
"llvm",
when="^llvm@12.0.1",
patches=patch(
"https://raw.githubusercontent.com/spack/patches/24ff44c4c5439400747941473c0298a74c1fbcb1/julia/10cb42f80c2eaad3e9c87cb818b6676f1be26737bdf972c77392d71707386aa4.patch",
"https://raw.githubusercontent.com/spack/patches/master/julia/10cb42f80c2eaad3e9c87cb818b6676f1be26737bdf972c77392d71707386aa4.patch",
sha256="10cb42f80c2eaad3e9c87cb818b6676f1be26737bdf972c77392d71707386aa4",
),
)
@@ -149,7 +133,7 @@ class Julia(MakefilePackage):
"llvm",
when="^llvm@13.0.1",
patches=patch(
"https://raw.githubusercontent.com/spack/patches/24ff44c4c5439400747941473c0298a74c1fbcb1/julia/45f72c59ae5cf45461e9cd8b224ca49b739d885c79b3786026433c6c22f83b5f.patch",
"https://raw.githubusercontent.com/spack/patches/master/julia/45f72c59ae5cf45461e9cd8b224ca49b739d885c79b3786026433c6c22f83b5f.patch",
sha256="45f72c59ae5cf45461e9cd8b224ca49b739d885c79b3786026433c6c22f83b5f",
),
)
@@ -157,18 +141,10 @@ class Julia(MakefilePackage):
"llvm",
when="^llvm@14.0.6",
patches=patch(
"https://raw.githubusercontent.com/spack/patches/24ff44c4c5439400747941473c0298a74c1fbcb1/julia/f3def26930832532bbcd861d41b31ae03db993bc2b3510f89ef831a30bd3e099.patch",
"https://raw.githubusercontent.com/spack/patches/master/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(
@@ -258,11 +234,6 @@ 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/5912/packages/generic/catalyst/v2.0.0/catalyst-v2.0.0.tar.gz"
url = "https://gitlab.kitware.com/api/v4/projects/paraview%2Fcatalyst/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", sha256="5842b690bd8afa635414da9b9c5e5d79fa37879b0d382428d0d8e26ba5374828")
version("2.0.0-rc4", sha256="cb491e4ccd344156cc2494f65b9f38885598c16d12e1016c36e2ee0bc3640863")
variant("mpi", default=False, description="Enable MPI support")
variant("conduit", default=False, description="Use external Conduit for Catalyst")

View File

@@ -14,7 +14,6 @@ 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
@@ -41,7 +40,6 @@ 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'
@@ -55,5 +53,4 @@ 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,9 +936,7 @@ def cmake_args(self):
cmake_args.append(from_variant("LIBOMP_TSAN_SUPPORT", "libomp_tsan"))
# 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"):
if self.compiler.name == "gcc":
cmake_args.append(define("GCC_INSTALL_PREFIX", self.compiler.prefix))
if self.spec.satisfies("~code_signing platform=darwin"):
@@ -978,24 +976,12 @@ 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", runtime_cmake_args),
define(
"RUNTIMES_CMAKE_ARGS", [define("CMAKE_INSTALL_RPATH_USE_LINK_PATH", True)]
),
]
)
@@ -1045,19 +1031,6 @@ 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"):
@@ -1069,18 +1042,6 @@ 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,60 +10,6 @@
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,8 +11,9 @@ class OsgCaCerts(Package):
in the OpenSSL 1.0.* format."""
homepage = "http://repo.opensciencegrid.org/cadist"
git = "https://github.com/opensciencegrid/osg-certificates.git"
url = "https://github.com/opensciencegrid/osg-certificates/archive/v1.109.igtf.1.117/osg-certificates-1.109.igtf.1.117.tar.gz"
_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"
@@ -20,17 +21,29 @@ class OsgCaCerts(Package):
releases = [
{
"osg_version": "1.119",
"igtf_version": "1.128",
"osg_commit": "1f7abbe392e339aae28625a4016bc98d58ad7cab",
"igtf_sha256": "1385e2206b4088cbad94264e2c252ad431f075f88a427cdee4ed523df95b9ab7",
}
"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",
},
]
for release in releases:
_version = "{0}.igtf.{1}".format(release["osg_version"], release["igtf_version"])
version(_version, commit=release["osg_commit"])
version(
_version,
url=_osg_base_url.format(
osg_version=release["osg_version"], igtf_version=release["igtf_version"]
),
sha256=release["osg_sha256"],
)
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("BSD-3-Clause")
license("GPL-2.0-or-later")
version("1.5.2", sha256="c9df8c6ab43890e5d8970467c188ae2fad736845875ca4c370ff047dbb37d017")
version("1.5.1", sha256="0a6303dcbdd713ef2d83c617c1eb821227603c98cb9816c53585fd993da8a984")
@@ -24,47 +24,12 @@ 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")
@@ -74,6 +39,8 @@ 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)
@@ -90,14 +57,5 @@ 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

@@ -1,32 +0,0 @@
# 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,7 +13,6 @@ 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,7 +6,6 @@ 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"